Delphi中如何删除DBGrid选中记录

ifApplication.MessageBox('确定删除吗?','询问',MB_ICONQUESTION+MB_YESNO)=ID_YESthenbeginstrSe... if Application.MessageBox('确定删除吗?', '询问', MB_ICONQUESTION + MB_YESNO) = ID_YES then begin
strSeq := DBGrid.DataSource.DataSet.FieldByName('no').AsString;

sqlstr := '';
sqlstr := sqlstr + 'delete from Table1 where no = ' + strSeq;
ExecQuery(sqlstr,'1');
end;
↑上面这段代码是我照着别人的仿写的,我想知道这个 “strSeq”取的值是不是我在 “DBGrid”中选中的那条记录的“no”?
还有,我看别人说这个可以直接写为
if Application.MessageBox('确定删除吗?', '询问', MB_ICONQUESTION + MB_YESNO) = ID_YES then begin
dbgrid1.DataSource.DataSet.Delete;
end;
↑这样写的话,没有定义哪一条是选中的也没问题吗?
展开
 我来答
zhl_529
推荐于2016-11-13 · TA获得超过151个赞
知道小有建树答主
回答量:387
采纳率:72%
帮助的人:95.9万
展开全部
1、是。DBGrid.DataSource.DataSet.FieldByName('no').AsString返回的是当前行的no字段中的值。
2、没问题。这个delete方法是删除数据集的当前这一行数据,数据集打开后会默认选择第一行。

当前行,也就是dbgrid中小三角指的那一行
追问
那如果第二种写法要删除的是当前行,需要添加什么?
追答
什么也不需要添加。如果要删除第二行,就点击第二行(点击了第二行,第二行就成了当前行),然后再删除。

如果你有一个按钮叫“删除第二条数据”,点击事件可以这样写:
DBGrid.DataSource.DataSet.First; //转到第一条

DBGrid.DataSource.DataSet.Next;//转到下一条,即第二条

DBGrid.DataSource.DataSet.Delete;//删除第二条

如果你有一个按钮叫“删除最后一条“,可以这样:
DBGrid.DataSource.DataSet.Last;//转到最后一条

DBGrid.DataSource.DataSet.Delete;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式