读书人

怎么删除DBGridEh当前纪录? 50分

发布时间: 2012-03-22 17:43:57 作者: rapoo

如何删除DBGridEh当前纪录??? 50分
ADOQuery2
DataSource1
DBGridEh1


procedure Tgift.spSkinSpeedButton2Click(Sender: TObject);
begin
IF application.MessageBox('你确认要删除该数据吗?','系统提示',MB_YesNo or mb_defbutton2 or mb_iconstop or mb_applmodal)=IdYes then
begin
with adoquery2 do
begin
try
delete;
showmessage('数据删除成功!');
except
showmessage('数据删除失败!');
end;
end;
end;
end;



adoquery2.SQL.Clear;
ADOQuery2.SQL.Add('select b.bm_name,a.gh,a.name from rs a,bm b where a.bm_no=b.bm_no' );
adoquery2.Open;

这样是不行的,但是如果这样就可以!
ADOQuery2.SQL.Add('select bm_no,gh,name from rs');

我显示的数据集是要关联其他表;



或者也可以这样删除呢

ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('delete from rs where gh=当前行gh列的值);
ADOQuery2.ExecSQL;

当前行gh列的值要如何求得啊???


第一次用DELPHI,请大家帮帮忙~



[解决办法]
dbgrideh.datasource.dataset.fieldbyname('gh').asstring;
[解决办法]
delete from rs where gh=dg.datasource.datase.fieldByName('gh').astring;
[解决办法]
楼上给你说的是思路,你不会真的照抄他给你的代码吧~~
[解决办法]
var
sqlstr:string;
begin
sqlstr:='delete from rs where gh='+QuotedStr(dg.datasource.datase.fieldByName( 'gh ').astring);
....
end;
[解决办法]
procedure Tgift.spSkinSpeedButton2Click(Sender: TObject);
begin
IF application.MessageBox( '你确认要删除该数据吗? ', '系统提示 ',MB_YesNo or mb_defbutton2 or mb_iconstop or mb_applmodal)=IdYes then
begin
with adoquery2 do
begin
try
adoDelete.close;
adoDelete.sql.text := 'delete from rs where gh='''+dg.datasource.datase.fieldByName( 'gh ').astring;+'''';
adoDelete.ExecSQL;

delete;
showmessage( '数据删除成功! ');
except
showmessage( '数据删除失败! ');
end;
end;
end;
end;
[解决办法]
我表了,大家别见笑,哈哈。
[解决办法]
dbgrideh也是感知控件..你直接用的adoquery.fieldbyname('你在dbgrideh里显示出来的字段名字').value
你当前选中的某个行就是这个数据了。..你showmessage()出来看看就知道了
[解决办法]
adoDelete.close;
adoDelete.sql.text := 'delete from rs where gh= ' ' '+ADOXXX.fieldByName( 'gh ').astring;+ ' ' ' ';
adoDelete.ExecSQL;

ADOXXX就是你用来显示在dbgrideh的数据源联接的ADOQuery或者ADOTable
[解决办法]
ADOQuery1.clear;
ADOQuery1.SQL.Add( 'delete from rs where gh='+quotedStr(adoquery2.FieldByName('GH').AsString));
ADOQuery1.ExecSQL;
[解决办法]
试试看这种方法:
1、设置记录集更新方式
ADOQuery2.LockType = ltBatchOptimistic
(目的是对记录集删除或者更新等,不会直接影响到数据库,数据库操作采用SQL直接处理)

2、执行删除
procedure Tgift.spSkinSpeedButton2Click(Sender: TObject);
var
strSql: string;
begin
if application.MessageBox( '你确认要删除该数据吗? ', '系统提示 ',MB_YesNo or mb_defbutton2 or mb_iconstop or mb_applmodal)=IDYES then
begin
with adoquery2 do
begin
try
strSql := 'delete from rs where gh='''+adoquery2.FieldByName('gh').AsString+'''';
if 执行SQL成功 then
begin
delete; //此时删除操作,目的是把界面记录删除,实际记录删除是在执行SQL里头。


showmessage( '数据删除成功! ');
end
else ShowMessage('异常,删除失败!');
except
showmessage( '数据删除失败! ');
end;
end;
end;
end;

读书人网 >.NET

热点推荐