貌似我看错了。。是删除所有数据呀我一般都这样删除的。。with adoquery1 do begin close; sql.clear; sql.add(asql); open; //搜索条件有的话可以不用加 while not eof do //用while not eof do 循环执行删除 begin delete end; end;
DBGrid1.DataSource.DataSet.delete; post;
參考著以下的語句加上一個循環(while not eof do 或for to do)即可: procedure TRes_HrCq_YD_F.btnSB_DelClick(Sender: TObject); begin inherited; if MessageDlg('操作提示(“刪除提示”):你確定要刪除所選中數據嗎?',mtWarning,[mbYes,mbNo],0)=idyes then begin if not qry_ydcx.IsEmpty then begin try qry_BaseTemp.Close; qry_BaseTemp.SQL.Clear; qry_BaseTemp.SQL.Add( ' insert into RES_HR_RSYD_Log (TypeID,ACCOUNT_ID,FULL_NAME,YCB,YBM,YBMID,YKB,YZXB,YBC,YJZ,YZJQF,YCBZX,YGW,YZW,XCB,XBM,XKB,XZXB,XBMID,XBC,XJZ,XZJQF,XCBZX,XGW,XZW,JN,FLAG,USERID,USERNAME,SXRQ) values (''刪除'', '); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('ACCOUNT_ID').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('FULL_NAME').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YCB').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBM').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBMID').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YKB').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZXB').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBC').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YJZ').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZJQF').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YCBZX').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YGW').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZW').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XCB').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBM').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XKB').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZXB').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBMID').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBC').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XJZ').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZJQF').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XCBZX').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XGW').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZW').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('JN').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('FLAG').AsString)+','); qry_BaseTemp.SQL.Add(QuotedStr(_UserNo)+','); qry_BaseTemp.SQL.Add(QuotedStr(_UserName)+','); qry_BaseTemp.SQL.Add(QuotedStr(FormatDateTime('yyyy/mm/dd',qry_ydcx.fieldbyname('SXRQ').AsDateTime))+')'); qry_BaseTemp.ExecSQL; finally qry_ydcx.Delete; end; end; ChangeStatus(sBrowse); end else Abort; end;
如果是前者,关闭DataSet或断开DBGrid和DataSource的关联
如果是后者,先提交delete语句删除数据库中数据,再刷新DBGrid
begin
close;
sql.clear;
sql.add(asql);
open; //搜索条件有的话可以不用加
while not eof do //用while not eof do 循环执行删除
begin
delete
end;
end;
post;
procedure TRes_HrCq_YD_F.btnSB_DelClick(Sender: TObject);
begin
inherited;
if MessageDlg('操作提示(“刪除提示”):你確定要刪除所選中數據嗎?',mtWarning,[mbYes,mbNo],0)=idyes then
begin
if not qry_ydcx.IsEmpty then
begin
try
qry_BaseTemp.Close;
qry_BaseTemp.SQL.Clear;
qry_BaseTemp.SQL.Add( ' insert into RES_HR_RSYD_Log (TypeID,ACCOUNT_ID,FULL_NAME,YCB,YBM,YBMID,YKB,YZXB,YBC,YJZ,YZJQF,YCBZX,YGW,YZW,XCB,XBM,XKB,XZXB,XBMID,XBC,XJZ,XZJQF,XCBZX,XGW,XZW,JN,FLAG,USERID,USERNAME,SXRQ) values (''刪除'', ');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('ACCOUNT_ID').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('FULL_NAME').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YCB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBM').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBMID').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YKB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZXB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBC').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YJZ').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZJQF').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YCBZX').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YGW').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZW').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XCB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBM').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XKB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZXB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBMID').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBC').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XJZ').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZJQF').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XCBZX').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XGW').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZW').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('JN').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('FLAG').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(_UserNo)+',');
qry_BaseTemp.SQL.Add(QuotedStr(_UserName)+',');
qry_BaseTemp.SQL.Add(QuotedStr(FormatDateTime('yyyy/mm/dd',qry_ydcx.fieldbyname('SXRQ').AsDateTime))+')');
qry_BaseTemp.ExecSQL;
finally
qry_ydcx.Delete;
end;
end;
ChangeStatus(sBrowse);
end else
Abort;
end;
1、如果是DBE连接数据库,使用Table:
Table.delete;
Table.post;2、如果是ADO连接数据库,使用ADOTable:
ADOTable.delete;
ADOTable.post;3、如果是ADO连接数据库,使用ADOQuery:
ADOQuery.delete;
ADQuery.post;4、如果是服务器中的数据库,情况就复杂。一方面DBGrid1.delete外,还要上传至服务器,进行删除。......
DBGrid1.DataSource.DataSet.Active:=False;
DBGrid1.DataSource.DataSet.Active:=True;