C
csvmm
Unregistered / Unconfirmed
GUEST, unregistred user!
delphi多层开发中,一个登记窗体调用另一个查询窗体返回后,对登记窗体中的方法产生了影响。有进一步的说明!给你我所有的分数!高手请进!急!急!急! (100分)<br /> delphi多层开发,使用了corba和ado,有一个记录窗体和一个查询窗体。在记录窗体中有增、删、改、查、存等按钮,其中有2个combobox,使用了combobox1的失去焦点事件,通过调用服务器端的一个方法(下述)来获取combobox2的iterm项。记录窗体中的查询按钮用来调用查询窗体查找要修改的记录,并把结果返回记录窗体。
服务器端的方法:
procedure getinfo(aa)...;
....
sqlstr:='select xx xx from table1 where xxx=aa ';
if adoquery1.active then
adoquery1.active:=false;
adoquery1.sql.clear;
adoquery1.sql.add(sqlstr);
adoquery1.open;
...
客户端的方法:
procedure Tlogform.combobox1exit(sender:Tobject);
...
clientdataset1.close;
server.getinfo(combobox1.text);
clientdataset1.open;
if clientdataset1.recordercount>0 then
...//对comblist2的iterm项进行赋值
查询按钮调用查询窗体:
。。。
try
if not assigned(queryfrm ) then
application.createform(...);
queryfrm.showmodal;
...
finally
...
queryfrm.free;
queryfrm.:=nill;
end;
不调用查询窗体时客户端方法正常,调用查询窗体后使用客户端方法,即使不做任何查询就关闭查询窗体返回,跟踪发现,改变combobox1的text后,服务端的结果集发生变化,但是客户端clientdataset1的结果集不变化。是何原因,请高手指教!
服务器端的方法:
procedure getinfo(aa)...;
....
sqlstr:='select xx xx from table1 where xxx=aa ';
if adoquery1.active then
adoquery1.active:=false;
adoquery1.sql.clear;
adoquery1.sql.add(sqlstr);
adoquery1.open;
...
客户端的方法:
procedure Tlogform.combobox1exit(sender:Tobject);
...
clientdataset1.close;
server.getinfo(combobox1.text);
clientdataset1.open;
if clientdataset1.recordercount>0 then
...//对comblist2的iterm项进行赋值
查询按钮调用查询窗体:
。。。
try
if not assigned(queryfrm ) then
application.createform(...);
queryfrm.showmodal;
...
finally
...
queryfrm.free;
queryfrm.:=nill;
end;
不调用查询窗体时客户端方法正常,调用查询窗体后使用客户端方法,即使不做任何查询就关闭查询窗体返回,跟踪发现,改变combobox1的text后,服务端的结果集发生变化,但是客户端clientdataset1的结果集不变化。是何原因,请高手指教!