Y
Yuka
Unregistered / Unconfirmed
GUEST, unregistred user!
我在搞一个数据库,用的是delphi 5.0,远程服务器用的是MS SQL 7.0,我把所有的数据模块都放入DataModule里了。开始时还没什么问题,不过编了一段时间后就有怪问题出现,我怎么也想出不答案。
1)关于存储过程模块的问题。我想用StoredProc模块来调用SQL服务器上的存储过程,
其中有一句:Params.CreateParam (ftString,'@BookName',ptInput);
当StoredProc模块放在DataModule里的时候,一但按Delphi的run按钮就报错,说ftString没有定义,当我把StoredProc模块放在程序窗体上(而不是放在DataModule里)的时候,这个错误就没有了!只是放的位置不同啊,怎么会有这么大的差别呢?我想把StoredProc模块放在DataModulej里,希望大家能帮我找到答案。
2)关于存储过程参数(Param)的问题,我看过好一些书,上面写着SQL 7.0支持向程序传送参数资料。这的确可以,但只能在程序设计期间,当修改StoredProcName属性时候,就能在Params里看到该存储过程的参数。不过当我想在程序里动态改变StoredProcName的时候,服务器上的参数就不会传过来了!我只好自己创建这些参数,虽然问题解决了,不过当有一些要使用相当数量的参数或参数名比较长的存储过程,手动创建参数就比较麻烦了,我还是想找个办法从服务器上取得参数的资料。我试过用prepare,不过不行,在帮助文档里也找不到从服务器上提取参数资料的函数或过程。有没有什么办法从SQL服务器上提取参数资料呢?
3)我有一个有返回值的存储过程,返回值的定义为 @Result int =0 output,我用StoredProc模块调用这个存储过程后,用ParamByName('@Result').AsInteger发现@Result的值并没有改变,也就是说服务那边并没有返回@Result的值给程序,这是为什么呢?另外我在创建@Result这个参数时已经明确地声明这个参数是一个返回值了,语句为:Params.CreateParam (ftInteger,'@Result',ptOutput);
4)Delphi中有没有Delay(延时)一类的函数?叫什么?没有这一类函数的话,一定要用到定时器(Timer)吗?
5)我的程序是基于两层的C/S模型,它可以在Internet上使用吗?我查过一些书,好像一定要搞成三层的才可以,这是真的吗?
6)我使用DataBase模块来连接SQL服务器,而不是用BDE Administrator定义的BataBase连接,因为我想使到我的程序可以动态改变所登录的服务器。因为有时可能会出现有一台服务出错。在服务器出错而当机或者根本没有开的时候,但用户却不知道,于是会出现那个用户登录的时候就出现程序卡死的情况(程序认为服务器是在运行当中,不断地连接),虽然过一段很长的时间后程序会恢复运行状态,不过用户要等太多时间了,有没有办法可以在登录过程中退出登录呢?或者设置连接超时的时值呢(好像根本没这个参数啊)?我看过一篇文章,说SQL 7.0在用户读取数据时是不许中断的,这是真的吗?上面那种程序卡死的状态是在服务器没有开或者当机的时候才出现啊,如何用程序做到避免这种情况发生呢?用Ping主机的方法吗?我可没有学过internet编程,不知道难不难呢?
哈哈,我真是个问题少年啊,希望大家能耐心的帮我解答,如果答案涉及到比较详细的编程过程,可以寄EMAIL给我,也可以在论坛上简要说明一下。我的EMAIL是uhika@163.net。我真是很想弄明白这些问题,它们已经困扰我相当的时间了!!在这里我先向大家说声多谢!!!呵…………… ^_^
1)关于存储过程模块的问题。我想用StoredProc模块来调用SQL服务器上的存储过程,
其中有一句:Params.CreateParam (ftString,'@BookName',ptInput);
当StoredProc模块放在DataModule里的时候,一但按Delphi的run按钮就报错,说ftString没有定义,当我把StoredProc模块放在程序窗体上(而不是放在DataModule里)的时候,这个错误就没有了!只是放的位置不同啊,怎么会有这么大的差别呢?我想把StoredProc模块放在DataModulej里,希望大家能帮我找到答案。
2)关于存储过程参数(Param)的问题,我看过好一些书,上面写着SQL 7.0支持向程序传送参数资料。这的确可以,但只能在程序设计期间,当修改StoredProcName属性时候,就能在Params里看到该存储过程的参数。不过当我想在程序里动态改变StoredProcName的时候,服务器上的参数就不会传过来了!我只好自己创建这些参数,虽然问题解决了,不过当有一些要使用相当数量的参数或参数名比较长的存储过程,手动创建参数就比较麻烦了,我还是想找个办法从服务器上取得参数的资料。我试过用prepare,不过不行,在帮助文档里也找不到从服务器上提取参数资料的函数或过程。有没有什么办法从SQL服务器上提取参数资料呢?
3)我有一个有返回值的存储过程,返回值的定义为 @Result int =0 output,我用StoredProc模块调用这个存储过程后,用ParamByName('@Result').AsInteger发现@Result的值并没有改变,也就是说服务那边并没有返回@Result的值给程序,这是为什么呢?另外我在创建@Result这个参数时已经明确地声明这个参数是一个返回值了,语句为:Params.CreateParam (ftInteger,'@Result',ptOutput);
4)Delphi中有没有Delay(延时)一类的函数?叫什么?没有这一类函数的话,一定要用到定时器(Timer)吗?
5)我的程序是基于两层的C/S模型,它可以在Internet上使用吗?我查过一些书,好像一定要搞成三层的才可以,这是真的吗?
6)我使用DataBase模块来连接SQL服务器,而不是用BDE Administrator定义的BataBase连接,因为我想使到我的程序可以动态改变所登录的服务器。因为有时可能会出现有一台服务出错。在服务器出错而当机或者根本没有开的时候,但用户却不知道,于是会出现那个用户登录的时候就出现程序卡死的情况(程序认为服务器是在运行当中,不断地连接),虽然过一段很长的时间后程序会恢复运行状态,不过用户要等太多时间了,有没有办法可以在登录过程中退出登录呢?或者设置连接超时的时值呢(好像根本没这个参数啊)?我看过一篇文章,说SQL 7.0在用户读取数据时是不许中断的,这是真的吗?上面那种程序卡死的状态是在服务器没有开或者当机的时候才出现啊,如何用程序做到避免这种情况发生呢?用Ping主机的方法吗?我可没有学过internet编程,不知道难不难呢?
哈哈,我真是个问题少年啊,希望大家能耐心的帮我解答,如果答案涉及到比较详细的编程过程,可以寄EMAIL给我,也可以在论坛上简要说明一下。我的EMAIL是uhika@163.net。我真是很想弄明白这些问题,它们已经困扰我相当的时间了!!在这里我先向大家说声多谢!!!呵…………… ^_^