UpdateSQL中删除记录的问题?(150分)

  • 主题发起人 主题发起人 allen72
  • 开始时间 开始时间
A

allen72

Unregistered / Unconfirmed
GUEST, unregistred user!
我有Query 和UpdateSQL对查询出的数据进行操作,UpdateSQL中用它自动的Delete语句
1)
**********************
delete from XXX
where
NUM = :OLD_NUM and
NAME = :OLD_NAME and
;
;
在form 中的删除记录Buttonclick事件中,如果只写 query1.delete一句;可以删除(未写入)
但如果加上一句 query1.ApplyUpdates;就出现 "updates failed"

************************************
2)还有在增加记录的Buttonclick事件中,写 query1.append;
 DBedit1.setfocus;
如果焦点从Dbedit1移开,如nouse点grid表,append出来的空记录怎样马上消失?

3)*******************
增加记录中,我想判断表中可有重复,如编号,用
if query1.Locate('num',dbedit1.text,[]) then
却老是自己比自己
怎样解决?





 
1、你的query1属性cachedupdates没有设为true;
2、不必管它,对写程序没有太大的影响;
3、可以换种方法吧:
query2.close;
query2.sql.clear;
query2.sql.add('select * from mytable where num="'dbedit1.text'"');
query2.open;
if query2.recordcount>1 then
begin
application.messagebox('重复!','提示信息',48);
exit;
end;
 
这个方法就更小意思了,

function TDataUpServer.ExportData(const path: WideString): Integer;
begin
ExportData:=0;

try
adoCommand.CommandText:=' Delete From up_salelist in '''+path+''' ';
adoCommand.Execute;

adoCommand.CommandText:=' INSERT INTO up_salelist(tcode, tno, optype, unitcode, unitname, shelfno, tdate, comcode, comname, itemdcode, itemname, speci, qty, qtyunit, price, serialno, lotno, expy, whflag, intent, entrustcode, '
+' optor, opdate, configer, configdate, orgcode, orgno, dwflag) in '''+path+''' '
+' select tcode, tno, optype, unitcode, unitname, shelfno, tdate, comcode, comname, itemdcode, itemname, speci, qty, qtyunit, price, serialno, lotno, expy, whflag, intent, entrustcode, '
+' optor, opdate, configer, configdate, orgcode, orgno, dwflag '
+' FROM t_salelist '
+' where optype in(''入库'',''出库'',''盘存'',''差额'') and whflag>=''2'' and dwflag=''0'' ';
adoCommand.Execute;

adoCommand.CommandText:=' UpDate t_salelist set dwflag=''1'' where optype in(''入库'',''出库'',''盘存'',''差额'') and whflag>=''2'' and dwflag=''0'' ';
adoCommand.Execute;

except
ExportData:=1;
end;

end;
 
1):query1属性cachedupdates已经设为true;如果是false 提示是tabel is readonly..
2):不是写程序时,再运行时,多次按增加事件会有很多的空记录?
3):OK!
 
3)的问题hkw2000的方法如果用
 query1.sql.add('select * from mytable where num="'dbedit1.text'"');
好象不行,不过我试了固定值如
query1.sql.add('select * from jao where num1 = ''0000002''');
就好用的!!!
不过这样也不能用??!!!!!!!
aa:=DBedit1.text; 
query1.close;
query1.sql.clear; 
query1.sql.add('select * from jao where num1 = ''aa''');
query1.open;
会不会是因为Query 和 DBedit1 相联的原因,aa 在中间变化了???




 
1。把RequstLive :=False;看看。。。
2。同 1。写入时别忘了调用ApplyUpdates;
3。除了用 hwk2000 兄的方法,还可以用
if Query1.FindField(‘Num’)。AsString=Edit1.Text then
Query1.Cancel;
 
Update failed 我的问题还是一个也没解决!!!!
ArJianzeng:我用DBedit和Query相联的, 不是EDIT
第三个问题;新建一个query2,不过不能直接比较DBedit1.text。可以成功!!
谢谢 hwk2000!!
*********************************** 
aa:=Dbedit1.text;
query2.close;
query2.sql.clear;
query2.sql.add('select * from jao where num1 = :Num ');
query2.parambyname('Num').asstring:= trim(aa) ;
query2.open;
if query2.recordcount>0 then
begin
messagedlg('罚单号码出现重复',mtWarning,[mbOK],0);
**********************************
不过在修改一个旧记录时,为了提示,避免修改成同其他记录同一编号,
这个方法就不能用了????


 
多人接受答案了。
 

Similar threads

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