sql问题(80分)

  • 主题发起人 主题发起人 jbas
  • 开始时间 开始时间
J

jbas

Unregistered / Unconfirmed
GUEST, unregistred user!
请高手看看这哪里错了!
procedure Talter.qd1Click(Sender: TObject);
begin
diarydata.tx.Close;
diarydata.tx.SQL.Clear;
diarydata.tx.SQL.Add('select * from tx where cs=1');
try
diarydata.tx.open;
except
diarydata.tx.ExecSQL;
diarydata.tx.Active:=true;
end;
if diarydata.tx.FindLast then
begin
if (messagedlg('是否重新设定提醒事件?',mtwarning,[mbyes,mbno],0)=mryes) then
begin
diarydata.tx.Close;
diarydata.tx.SQL.clear;
diarydata.tx.sql.Add('insert into tx(cs,nr,sj) values (1,:nnr,:nsj)');
diarydata.tx.parambyname('nnr').asstring:=trim(alert1.text);
diarydata.tx.parambyname('nsj').asstring:=trim(tabsheet1.caption);
try
diarydata.tx.open;
except
diarydata.tx.ExecSQL;
diarydata.tx.active:=true;
end;
end;
end
else
showmessage('no found');
end;
数据教验!!!总出现"...key violation" 错误!!!
 
你的表TX是否设置CS为 PRIMARY KEY?如果是,那么问题就在这里了。
 
不是,出现"error creating cursor handle" 错误!!
 
是主健的原因,用sqlmonitor监控向服务器传递的sql语句,看看到底插入了什么数据,
就很容易找到问题的
 
能否具体告诉,sqlmonitor无反应
 
我靠,下面程序有问题,insert语句不返回cursor
应该用execsql,不用open,如下该就行了

diarydata.tx.SQL.clear;
diarydata.tx.sql.Add('insert into tx(cs,nr,sj) values (1,:nnr,:nsj)');
diarydata.tx.parambyname('nnr').asstring:=trim(alert1.text);
diarydata.tx.parambyname('nsj').asstring:=trim(tabsheet1.caption);
try
[blue]diarydata.tx.ExecSQL;[/blue]
except
[red]diarydata.tx.open;[/red]
diarydata.tx.active:=true;
end;
 
这种写法确实有问题,我将你的代码修改如下,请参考:
procedure Talter.qd1Click(Sender: TObject);
begin
diarydata.tx.Close;
diarydata.tx.SQL.Clear;
diarydata.tx.SQL.Add('select * from tx where cs=1');
try
diarydata.tx.open;
except
showmessage('sql有错误,请检查。');
//如果有事务,请rollback;
exit;
end;
if diarydata.tx.findlast then
begin
if (messagedlg('是否重新设定提醒事件?',mtwarning,[mbyes,mbno],0)=mryes) then
begin
diarydata.tx.Close;
diarydata.tx.SQL.clear;
diarydata.tx.sql.Add('insert into tx(cs,nr,sj) values (1,:nnr,:nsj)');
diarydata.tx.parambyname('nnr').asstring:=trim(alert1.text);
diarydata.tx.parambyname('nsj').asstring:=trim(tabsheet1.caption);
try
diarydata.tx.ExecSQL;
except
Showmessage('insert 语句有错误,请检查。');
//rollback;
exit;
end;
end;
end
else
showmessage('no found');
end;
 
to brave:
你的也有问题,当安两次按钮时,就报错!!!
lizhongyu的无问题,thanks!
thanks all!!!
 

Similar threads

后退
顶部