同志们,帮我看看一个简单的三层更新的问题!(50分)

  • 主题发起人 主题发起人 nightboy
  • 开始时间 开始时间
N

nightboy

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr:string;
lanuage:string;

begin
datamodul.SCK.Connected :=TRUE;//dataModuel:TdataModule,sck:TsocketConnect
datamodul.Cdataset.Active :=TRUE;//Cdataset:TClientdataset
lanuage:=edit1.Text;
sqlstr:='update qrytable set wei=' +lanuage ;
WITH datamodul.Cdataset DO
begin
close;

commandtext:=sqlstr;

execute;


end;

end;

我的后台数据库是SQL,第一次更新时能成功,但我第二次更新是出错:
提示:"adoquery1:commandtext does not return a rusult set"
兄弟们,这个问题应该怎么解决?我有点急!!!!!!!!!!!!!!!!
 
你看了第二次执行的时候commandtext是什么值了吗??
 
[red] datamodul.Cdataset.open;[/red]

try it .
 
To:yangxiao_jiang
我想第二次添加时的值来自我修改后的EDIT1吧!!!

TO:dragonlee007
同志,你那个是什么意思啊???

 
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr:string;
lanuage:string;

begin
datamodul.SCK.Connected :=TRUE;//dataModuel:TdataModule,sck:TsocketConnect
datamodul.Cdataset.Active :=TRUE;//Cdataset:TClientdataset
lanuage:=edit1.Text;
sqlstr:='update qrytable set wei=' +lanuage ;
WITH datamodul.Cdataset DO
begin
close;

commandtext:=sqlstr;

[red] //execute;
open;[/red]


end;

end;
 
用SQL的事件探查器查看一下,第二次更新时sql是什么内容。
 
TO::dragonlee007
open;是不成,的一次添加都不能实现就出现了相同的提示!!!!
 
TO:jopi
谢谢参与!但是SQL语句是肯定没问题的!
 
edit1.text 要變化的
 
試一試這樣:
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr:string;
lanuage:string;
begin
datamodul.SCK.Connected :=FALSE;//dataModuel:TdataModule,sck:TsocketConnect
datamodul.SCK.Connected :=TRUE;//dataModuel:TdataModule,sck:TsocketConnect
datamodul.Cdataset.Active :=FALSE;//Cdataset:TClientdataset
lanuage:=edit1.Text;
sqlstr:='update qrytable set wei=''' +lanuage+'''' ;
WITH datamodul.Cdataset DO
begin
commandtext:=sqlstr;
execute;
end;
end;
 
樓上的答案就是你的答案!!!
first disconnect then update...
 
我说过了,也试过了,不是SQL语句的问题!
 
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr:string;
lanuage:string;

begin
[red]datamodul.SCK.Connected :=FALSE;//dataModuel:TdataModule,sck:TsocketConnect[/red]
datamodul.SCK.Connected :=TRUE;//dataModuel:TdataModule,sck:TsocketConnect
datamodul.Cdataset.Active :=[red]false[/red];//Cdataset:TClientdataset
lanuage:=edit1.Text;
sqlstr:='update qrytable set wei=' +lanuage ;
WITH datamodul.Cdataset DO
begin
close;

commandtext:=sqlstr;

execute;


end;

end;
 
TO:dragonlee007
我试过了,不是这个原因,谢谢你的参与!!
 
[:p][:p][:p][:p][:p][:p][:p]
 
呵呵,我上火了。。。。。。
 
我不太清楚用SOCKET连接时有没有DCOM连接时的那个BUG,你可以按以下方法试试。procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr:string;
lanuage:string;
begin
datamodul.SCK.Connected :=TRUE;//dataModuel:TdataModule,sck:TsocketConnect
lanuage:=edit1.Text;
sqlstr:='update qrytable set wei=' +lanuage ;
WITH datamodul.Cdataset DO
begin
close;
commandtext:=sqlstr;
execute;
close;
代码:
end;
datamodul.SCK.Connected :=FALSE;
end;
 
问题解决了,CLIENTDATASET。ACTIVE不能设为TRUE,大家都有分!!!!!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部