SQL语句 关于 Delete(50分)

  • 主题发起人 主题发起人 小乌龟
  • 开始时间 开始时间

小乌龟

Unregistered / Unconfirmed
GUEST, unregistred user!
before delete 代码!
if MessageBox(Handle,'删除参数将导致数据的不一致,确认要删除吗?','系统提示',mb_IconInformation+mb_OK+mb_OKCancel)=mrOK then
begin
strSQL := 'Delete from gzgl where 工人工号='+ADOQuery1.FieldByName('工人工号').AsString;
总是报错!。。
我的意思是在删除操作之前提个醒!
strSQL 语句不对吧 。那位大哥帮忙下!
哎。代码不写不知道啊,一写还真的是漏洞百出!。
 
strSQL := 'Delete from gzgl where 工人工号='''+ADOQuery1.FieldByName('工人工号').AsString+'''';
 
strSQL := 'Delete from gzgl where 工人工号='''+ADOQuery1.FieldByName('工人工号').AsString + ''''
 
关系表吧,要先删除其它表中关联的纪录
 
给你个参考:
if not IMsgBox.DlgQuestion(FormAt('是否删除XXXXXXXX[%S]?', [ADOQuery1.FieldByName('工人工号').AsString]),2) then Exit;
ExecSQL(ADOQuery1, 'DELETE FROM gzgl WHERE 工人工号='+#39+ADOQuery1.FieldByName('工人工号').AsString+#39);
IMsgBox.DlgHints('删除成功');
 
strSQL := 'Delete from gzgl where 工人工号='''+ADOQuery1.FieldByName('工人工号').AsString + ''''
 
用一个参数传递
AAA:=ADOQuery1.FieldByName('工人工号').AsString;
 
strSQL := 'Delete from gzgl where 工人工号='+#39+ADOQuery1.FieldByName('工人工号').AsString+#39;
 
除了用parameter跟'''外,提供另外一种方法:
strSQL := 'Delete from gzgl where 工人工号='+QuotedStr)ADOQuery1.FieldByName('工人工号').AsString);

注意,需要Uses SysUtils
 
请把 引号 写进去, 让它成为SQL语句的一部分.
 
如果你的數據在SQL中是字符串的話,就不能用加號將其串起來,應該這樣:
strSQL := 'Delete from gzgl where 工人工号='''+ADOQuery1.FieldByName('工人工号').AsString + ''''
除非這個工人工號是個數字類型!
 
各位大哥,改过以后还是不行。啊。
我的原意是,对Access数据库操作,店击删除按钮后,删除当前指针所在的记录。
但是现在这样,整张表里的数据都删除了。郁闷。
 
你的操作界面是怎样的呀?
 
to lzh1983
也别说什么界面了,就是DBGrid。你看应该怎么写。谢谢。
 
看看你的表的主键是什么
 
strSQL := 'Delete from gzgl where 工人工号='+ADOQuery1.FieldByName('工人工号').AsString;

如果报错的话,
你先看看,你在定义字段的时候,把“工人工号”定义是是什么类型,如果是数字的,那上面的这句理论上说,语法没有错误。
如果是,字符类型的,那后面要改一下了。

strSQL := 'Delete from gzgl where 工人工号='''+ADOQuery1.FieldByName('工人工号').AsString + ''''

其他的,如,主从表的关联,什么的,上面也有人写了,你仔细研究一下吧
 
打印出strSQL语句来,检查下sql语句有没错.
 
strSQL := 'Delete from gzgl where 工人工号='+#39+ADOQuery1.FieldByName('工人工号').AsString+#39;
還有就是工人工號是什麼類型的也有關系的
 
就是要删除当前所指的记录吗?使用DataSet的Delete不就可以了?
 
后退
顶部