我在单击删除记录、添加记录、插入记 录时为什么会出现access violation at address 004725a9 in module 'project.exe'. read of address 00000000.对话框
题目是设计一个应用程序,完成下到功能:单击删除记录按钮,则删除数据库中当前的一条记录,单击添加记录按钮,则在数据库末尾添加一条记录,把edit1和edit2的值写入数据库字段name和capital中。
代码如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;type
TForm1 = class(TForm)
ds1: TDataSource;
tbl1: TTable;
Button1: TButton;
Button2: TButton;
Button4: TButton;
edt1: TEdit;
edt2: TEdit;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
if not tbl1.Eof then
tbl1.Next;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
tbl1.Delete;
tbl1.destroy;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
tbl1.Insert;
tbl1.FieldByName('name').asstring:=edt1.Text;
tbl1.FieldByName('capital').AsString:=edt2.Text;
tbl1.Destroy;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
tbl1.Append;
tbl1.FieldByName('name').AsString:=edt1.Text;
tbl1.FieldByName('capital').AsString:=edt2.Text;
tbl1.Destroy;
end;end.
题目是设计一个应用程序,完成下到功能:单击删除记录按钮,则删除数据库中当前的一条记录,单击添加记录按钮,则在数据库末尾添加一条记录,把edit1和edit2的值写入数据库字段name和capital中。
代码如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;type
TForm1 = class(TForm)
ds1: TDataSource;
tbl1: TTable;
Button1: TButton;
Button2: TButton;
Button4: TButton;
edt1: TEdit;
edt2: TEdit;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
if not tbl1.Eof then
tbl1.Next;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
tbl1.Delete;
tbl1.destroy;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
tbl1.Insert;
tbl1.FieldByName('name').asstring:=edt1.Text;
tbl1.FieldByName('capital').AsString:=edt2.Text;
tbl1.Destroy;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
tbl1.Append;
tbl1.FieldByName('name').AsString:=edt1.Text;
tbl1.FieldByName('capital').AsString:=edt2.Text;
tbl1.Destroy;
end;end.
这个是 将 对象 tbl1释放掉!下次就不能再用了!
应该改为
tbl1.post; 将新增的记录保存到数据库中
destroy; 就是注销实例
当你再一次操作的时候,因为实例不存在 就会报出 00000000 这样的错误!