当删除当前(鼠标选中的)行时,会自动删除两行,这是为什么?
语句是这样的:
self.adoquery1.edit;
self.adoquery1.delete;
// adoquery1 是连接数据表格的控件。求解答。。
语句是这样的:
self.adoquery1.edit;
self.adoquery1.delete;
// adoquery1 是连接数据表格的控件。求解答。。
解决方案 »
- 关于《CSDN网友奖励方案(临时)》的方案,怎么没有了下文?
- 如果通过枚举的方式获取外部程序菜单的ID
- 调用多个InvalidateRect会比直接用Invalidate若repaint效率低么?
- 急救:两个存储过程,一起运行的时候只能运行前面的一个,怎么才能两个一起运行:在线等
- 新增记录后,删除产生溢出,急!!
- 各位三层结构的中间层都是怎么写的?小弟我有一个,不过有点毛病,请指点
- 请问,哪里有比较好的数据库备份与恢复控件。
- 请问一个MDI基本问题
- 关与窗体问题:我在delphi默认窗体情况下开发了一个程序运行后窗体还是在delphi下那么大,但我最大化后可窗体很不好看,大部分都是空白,请问
- listview控件,我添加的节点,可以使他的visiable为看不见吗?我不想删除它.好像没有这个属性,有什么办法吗?
- vk_atl 需要uses什么单元文件啊?
- delphi 2007或者2010是否比D7好用
就是 adoquery1.delete删掉了两行数据。
并且我试过了,只要的adoquery1.delete之前加一个打印语句:
showmessage(aodquery1.fieldbyname['id']),
然后执行adoquery1.delete, 这样的话删除时 就只删除一行。
这是为什么呢?会不会是 数据库table的问题。我在adoquery1所连接的数据表中 只设置了自动增加的 primary key, 没有其他设置。
这个问题挺急的,继续求教
begin
inherited;
if not qry_hrqj.IsEmpty then
begin
if (qry_hrqj.FieldByName('FLAG').AsInteger=3)or(qry_hrqj.FieldByName('FLAG').AsInteger=2)or(qry_hrqj.FieldByName('FLAG').AsInteger=1) then
begin
MessageDlg('操作提示:當前單據已經“簽核”,不能進行“刪除”操作喲!',mtWarning,[mbOK],0);
Exit;
end else
begin
if MessageDlg('操作提示:你確定要“刪除”這筆請假數據嗎?',mtWarning,[mbYes,mbNo],0)=mryes then
begin
qry_hrqj.Delete;
end else
Abort;
end;
end else
MessageDlg('操作提示:請假單數據為空,不能執行“刪除”操作喲!',mtWarning,[mbOK],0);
Exit;
end;
begin
if not (adoquery1.eof) then
begin
//showmessage(adoquery1.fieldbyname('num').asstring);
adoquery1.edit;
adoquery1.delete;
statusBar1.panels[0].text:=' '+inttostr(adoquery1.recordcount)+' 条记录';
end;
end;
如果不注释掉按个 showmessage 语句, 那么就只删除 一行。求解。。
begin
adoquery1.Delete;
end;
你的表架構是怎樣的業務需求是什麼???表有沒有主key...
如果目的只是為了delete一條數據,利用上面的數據集方法是最簡單實用的了
把SQL语句贴出来看看才知道?
begin
close;
sql.clear;
sql.add('select *, conver(varchar(20),declaretime,111) declaredate from zeroinfor where xianname='+ quotedstr(xianname));
open;
end;
end;zeroinfor 是一个 table, xianname 是其中的一个字段。convert 语句是为了让 datetime 格式的时间 以 2010/2/15 这样的格式 显示出来。
adoquery查询出来的内容 显示到了 dbgrid上,当dbgrid的某一行用鼠标上时,点击 删除 按钮,执行删除的函数:procedure TIMportFrm.deleteactionExectue(Sender:Tobject)
begin
if not (adoquery1.eof) then
begin
//showmessage(adoquery1.fieldbyname('num').asstring);
adoquery1.delete;
statusBar1.panels[0].text:=' '+inttostr(adoquery1.recordcount)+' 条记录';
end;
end;这时就会删除两行(相邻的)数据。
如果不注释掉按个 showmessage 语句, 那么就只删除 一行。大侠们帮帮忙!!
如果 鼠标点击最后一条信息,然后删除, 那么会把最后两条 信息 都删除
iNum:Integer=0;
procedure TIMportFrm.deleteactionExectue(Sender:Tobject)
begin
Inc(iNum);
Self.Caption := IntToStr(iNum);
if not (adoquery1.eof) then
begin
//showmessage(adoquery1.fieldbyname('num').asstring);
adoquery1.delete;
statusBar1.panels[0].text:=' '+inttostr(adoquery1.recordcount)+' 条记录';
end;
end;看看是否执行两次