Delphi删除问题

x1aogu1 2010-07-15 09:09:29
procedure TForm9.Button1Click(Sender: TObject);
begin
if adoquery1.Locate('ID',edit1.Text,[LoPartialKey]) then
begin
adoquery1.Edit;
adoquery1.Delete;
showmessage('您已经成功删除该用户的所有信息!');

end
else
showmessage('删除失败!');

end;
我想通过输入ID而删除用户信息的目的,但是系统一直提示if adoquery1.Locate('ID',edit1.Text,[LoPartialKey]) then
有错误,我实在是找不出,希望亲们帮帮忙!
...全文
207 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
langtaosoft 2010-07-28
  • 打赏
  • 举报
回复
你可能在其它感知控件中使用了adoquery1,这里操作时当然出错了,建议另外用个adoquery执行SQL语句来删除
ilovemovieboy 2010-07-26
  • 打赏
  • 举报
回复
用ADOTable时用这种方法,
用ADOQuery时最好自己写SQL语句来删除。
richgong 2010-07-25
  • 打赏
  • 举报
回复
可參考如下:(隨手寫,可能有誤.)
adoquery1.close;
adoquery1.sql.text.clear;
adoquery1.sql.text:='delete sysuser where userid like '+'''+%user%+''';
try
adoquery1.execsql;
except
end;


radiodl 2010-07-23
  • 打赏
  • 举报
回复
通过Delphi自有的方法属性实现:
添加:
with ADOQuery1 do
append;
......
post;
删除:
with ADOQuery1 do
delete(选择删除的记录); //默认删除记录指针指向的记录
修改:
with ADOQuery1 do
edit;
......
post;


adotable1.Append; //添加
ADotable1.Fields.FieldByName('gxid1').Value:=gx;
adotable1.Post;

adotable1.delete; //删除

adotable1.edit; //修改
ADotable1.Fields.FieldByName('gxid1').Value:=gx;
adotable1.post;
WITHI adoquery do
begin//添加
adoquery.open;//motice set adoquery.sql
adoquery.append;//OR adoquery.insert;
fieldbyname(fieldname).asstring:=trim(edit1.text);
......
adoquery.post;
end;
删除:
adoquery.delete
修改:
adoquery.edit;
fieldbyname(fieldname).asstring:=trim(edit1.text);
有关细节可以参看帮助OR DEMO
kye_jufei 2010-07-23
  • 打赏
  • 举报
回复
給您一個有刪除日誌功的demo參考之:


procedure TRes_HrCq_HBD_F.btnSB_DelClick(Sender: TObject);
begin
inherited;
if MessageDlg('操作提示(“刪除提示”):你確定要刪除所選中數據嗎?',mtWarning,[mbYes,mbNo],0)=idyes then
begin
if not qry_searchhb.IsEmpty then
begin
try
qry_BaseTemp.Close;
qry_BaseTemp.SQL.Clear;
qry_BaseTemp.SQL.Add( ' insert into RES_HR_RSHB_Log (TypeID,ACCOUNTID,FULL_NAME,CB,BM,BMID,KB,ZXB,BC,ZJQF,CBZX,ZW,JN,FLAG,USERID,USERNAME,SXRQ,HBBC) values (''刪除'', ');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('ACCOUNTID').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('FULL_NAME').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('CB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('BM').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('BMID').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('KB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('XB').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('BC').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('ZJQF').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('CBZX').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('ZW').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('JN').AsString)+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.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_searchhb.fieldbyname('SXRQ').AsDateTime))+',');
qry_BaseTemp.SQL.Add(QuotedStr(qry_searchhb.fieldbyname('HBBC').AsString)+')');
qry_BaseTemp.ExecSQL;
finally
qry_searchhb.Delete;
end;
end;
ChangeStatus(sBrowse);
end else
Abort;
end;
qhjio 2010-07-20
  • 打赏
  • 举报
回复
去掉 edit试试看啊
xinxiangsui2008 2010-07-20
  • 打赏
  • 举报
回复
adoquery1.Locate('ID',VarArrayOf([edit1.Text]),[LoPartialKey])
dinoalex 2010-07-16
  • 打赏
  • 举报
回复
怀疑是主键问题
kaikai_kk 2010-07-16
  • 打赏
  • 举报
回复
if adoquery1.Locate('ID',edit1.Text,[LoPartialKey]) then

语法上是没有问题的,去其它地方找原因吧

直接这样试试:
if adoquery1.Locate('ID','A',[LoPartialKey]) then

还有Delete前是不须要Edit的
lovelymelon 2010-07-16
  • 打赏
  • 举报
回复
改成
if adoquery1.Locate('ID',edit1.Text,[]) then
试试
lyhoo163 2010-07-15
  • 打赏
  • 举报
回复
Trim(Edit1.text)试试。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧