三层结构中,我这样用为什么老是死机?(问题已解决,要分的快来) (100分)

  • 主题发起人 主题发起人 micro73
  • 开始时间 开始时间
M

micro73

Unregistered / Unconfirmed
GUEST, unregistred user!
运行环境:Win98+delphi update packet2+ado 后台数据库为sql 2000 sever
客户端用TSocketConnection连接中间层.
有时可以正常执行而且速度也不慢,但大多数情况下一执行就死机.如果去掉第二
个with DataModule1.ClientDataSet3 do所包含的内容就可以正常运行.

代码如下:

procedure TForm1.EdWork_noExit(Sender: TObject);
begin
if EdWork_no.Text='' then
begin
showmessage('工号不能为空');
EdWork_no.SetFocus;
exit;
end;
with DataModule1.ClientDataSet3 do
begin
Close;
CommandText:='select * from worker where work_no=:vWork_no';
Params.ParamByName('vwork_no').Value:=EdWork_no.Text;
try
open;
if isEmpty then
begin
showmessage('员工资料库中找不到工号为:"'+EdWork_no.Text+'"的员工');
EdWork_no.SetFocus;
end
else
begin
EdName.Text:=FieldValues['name'];
EdDept_no.Text:=FieldValues['dept_no'];
end;
{endif}
finally
close
end;
end;

{如果去掉以下部分就不会死机}

if not (EdDept_no.Text='') then
begin
with DataModule1.ClientDataSet3 do
begin
close;
CommandText:='select * from department where dept_no=:vdept_no';
Params.ParamByName('vdept_no').Value:=EdDept_no.Text;
try
open;
if isEmpty then
EdDepartment.Text:=''
else
EdDepartment.Text:=FieldValues['dept_no'];
{endif}
finally
close;
end;
end;
end;
end;

 
直接死机吗?有没有错误提示贴出来看看先......
 
没问题阿
up
 
to ppcs:
只要一运行该段代码就没任何反应,没有任何提示,并且只有用"RESET"才能重新启动,
但跳过这段代码就没问题.

to 老人家;
我有时候也可以正常运行,但大多数情况下都有死机,是不是在一个函数(或过程)中,
不能使用2次以上的with DataModule1.ClientDataSet3 do ? 因为我通常将ClientDataSet3
作为查询时用,所以还有其它地方用到with DataModuel1.ClientDataSet3 do ,但只要
没有同时使用2次就没问题
to all:
请继承关注这个问题,up者也有分.
 
调试的时候单步执行,看执行哪条语句时间比较长。
代码没什么问题,估计就是执行时间长.
 
我试过,一运行到第二个with DataModule1.ClientDataSet3 do 就没反应。
 
这没直接联系!!
 
问题我自己解决,升级到MDAC2.6后就行了。
反正分也收不回,等到人多点的时候就发分。
 
分﹐分﹐分
 
当查到使用ado查询到数据集(query)为空时。就不能进行任何操作。如再查询等就会出错,
这个问题我以前解决过,好难解决.ado也有其中一个bug.当conection了数据库之后,如果将
本机网线拔掉,然后即使立刻再接上网线。conection已经断掉了。。
 
我觉得我这个问题跟你说的不一样,因为我虽然使用的是同一个TClientDataSet,
但我前后连接的是两个Table 。更不可思议的是,我升级ADO后就正常了。
我认为这是windows本身或是ADO的问题。
 
好,要分来了。
 
有时候调试状态下出错,但是直接运行EXE文件就没有问题
微软做程序和我真相似,老是打补丁。
不知道ADO2.7安装了你的程序会不会又死掉
 
》》有时候调试状态下出错,但是直接运行EXE文件就没有问题
我试过,无论在哪运行都是一个鬼样。
》》微软做程序和我真相似,老是打补丁。
为了我这个鬼问题,我把系统重装了N遍,差点把电脑给扔了。
》》不知道ADO2.7安装了你的程序会不会又死掉
这个倒没试过。
 
我做了一个操作文件的asp组件,也出现一些解释不通的问题!delphi7环境
 
我打算用三层做一个项目,听你们说的,我真有点怕搞不掂.
 
我也刚用三层做了一个小项目,结果出现以下问题:如果客户端在开发环境下使用,
应用服务器可以在别的机子上,正常使用;如果客户端编译后放到别的机子上运行,
它死活不认别的机子上运行的应用服务器,而只认开发系统时所使用的机子,哪怕将
别的机子设为第一个应用服务器,也不行。这问题,至今未想到什么原因。(应用程序
服器都运行在win2000下。
 
对了,很多情况是BDE的BUG///
 
后退
顶部