type
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
Query1: TQuery;
Label1: TLabel;
procedure DBGrid1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('delete from 基本表.db where ID='+DBGrid1.Fields[0].AsString+';');
Query1.ExecSQL;
label1.Caption:=DBGrid1.Fields[0].AsString;
end;end.
我用如上的一个TQuery删除DBGrid选中的一条记录
总是出现错误下面
Access violation at address 004AFF5F in module 'Project1.exe'. Read of address 00000000.
请问什么?
如果想在选中的DBGrid中删除一条记录怎么办?(用TQuery,而不是用TTable,因为我实际上还要删除另外一个表里面和这张表有一样ID的记录,即实际是是
'delete from 基本表.db,获奖情况表,处罚情况表 where ID='+DBGrid1.Fields[0].AsString+';')
谢谢!!!
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
Query1: TQuery;
Label1: TLabel;
procedure DBGrid1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('delete from 基本表.db where ID='+DBGrid1.Fields[0].AsString+';');
Query1.ExecSQL;
label1.Caption:=DBGrid1.Fields[0].AsString;
end;end.
我用如上的一个TQuery删除DBGrid选中的一条记录
总是出现错误下面
Access violation at address 004AFF5F in module 'Project1.exe'. Read of address 00000000.
请问什么?
如果想在选中的DBGrid中删除一条记录怎么办?(用TQuery,而不是用TTable,因为我实际上还要删除另外一个表里面和这张表有一样ID的记录,即实际是是
'delete from 基本表.db,获奖情况表,处罚情况表 where ID='+DBGrid1.Fields[0].AsString+';')
谢谢!!!
该操作已经使DBGrid1的Fields.count=0,因此再调用DBGrid1.Fields[0]出现地址错误.可以着样做,把Query1.RequestLive设置为True;
然后:
DBGrid1DblClick(sender TObject)
begin
if not Query1.IsEmpty then
begin
Query2.Clear;
Query2.SQL.Text := 'DELETE FROM 其他表 WHERE ID='+Query1.FieldByName('ID').AsString;
Query2.ExecSql;
...
Query1.Delete;
end;
end;
就可以了
这句去掉分号试试看。
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('delete from 基本表.db where ID='+DBGrid1.Fields[0].AsString);
Query1.Prepare;
Query1.Open;
label1.Caption:=DBGrid1.Fields[0].AsString;
end;