求救 table1:cannot perform this operation on a closed dataset!
近日用delphi写了如下代码,运行也成功!可是输完数据后点保存按钮就提示table1:cannot perform this operation on a closed dataset! 数据库是access,table1,query1连接正常。如果注释掉以下代码则运行正常!!望高手们指教
procedure Taddfrm.FormCreate(Sender: TObject);
var
maxNO,tmp:integer;
begin
rydate.Date:=now;
cydate.Date:=now;
with table1 do
begin
Open;
First;
maxNO:=FieldByName('hz_num').AsInteger;
while not eof do
begin
tmp:=FieldByName('hz_num').AsInteger;
if maxNO<tmp then maxNO:=tmp;
next;
end;
close;
end;
edit1.Text:=inttostr(maxNO+1);
end;
全部代码如下:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls, DB, DBTables, Grids, DBGrids;
type
Taddfrm = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Edit3: TEdit;
ComboBox1: TComboBox;
Edit4: TEdit;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
Edit5: TEdit;
rydate: TDateTimePicker;
cydate: TDateTimePicker;
Edit6: TEdit;
Button2: TButton;
Table1: TTable;
Query1: TQuery;
Bevel1: TBevel;
Bevel2: TBevel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Edit7: TEdit;
Edit8: TEdit;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
addfrm: Taddfrm;
implementation
{$R *.dfm}
procedure Taddfrm.Button2Click(Sender: TObject);
var
flag:boolean;
begin
flag:=true;
if edit2.Text='' then flag:=false;
if edit3.Text='' then flag:=false;
if edit4.Text='' then flag:=false;
if edit5.Text='' then flag:=false;
if edit6.Text='' then flag:=false;
if edit7.Text='' then flag:=false;
if flag then
with table1 do
begin
Append;
FieldValues['hz_num']:=edit1.Text;
FieldValues['hz_name']:=edit2.Text;
FieldValues['hz_sex']:=combobox1.Text;
FieldValues['hz_age']:=edit3.Text;
FieldValues['hz_class']:=combobox2.Text;
FieldValues['jb_class']:=combobox3.Text;
FieldValues['ry_date']:=rydate.Date;
FieldValues['cy_date']:=cydate.Date;
FieldValues['fz_doc']:=edit4.Text;
FieldValues['lx_name']:=edit5.Text;
FieldValues['lx_phone']:=edit6.Text;
FieldValues['lx_address']:=edit7.Text;
FieldValues['bz']:=edit8.Text;
Post;
showmessage('添加信息成功!');
end
else begin
showmessage('请补全信息!');
edit2.SetFocus;
end;
with query1 do //同步刷新dbgrid
begin
Close;
SQL.Clear;
SQL.Add('select * from hz_msg');
try
Open;
FieldByName('hz_num').DisplayLabel:='患者编号';
FieldByName('hz_name').DisplayLabel:='姓名';
FieldByName('hz_sex').DisplayLabel:='性别';
FieldByName('hz_age').DisplayLabel:='年龄';
FieldByName('hz_class').DisplayLabel:='病人类别';
FieldByName('jb_class').DisplayLabel:='疾病类型';
FieldByName('ry_date').DisplayLabel:='入院时间';
FieldByName('cy_date').DisplayLabel:='出院时间';
FieldByName('fz_doc').DisplayLabel:='负责医生';
FieldByName('lx_name').DisplayLabel:='联系人';
FieldByName('lx_phone').DisplayLabel:='联系电话';
FieldByName('lx_address').DisplayLabel:='联系地址';
FieldByName('bz').DisplayLabel:='备注';
except
ExecSQL;
end;
end;
edit2.Text:='';
edit3.Text:='';
combobox1.ItemIndex:=0;
edit4.Text:='';
combobox2.ItemIndex:=0;
combobox3.ItemIndex:=0;
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
edit8.Text:='';
edit1.SetFocus;
end;
procedure Taddfrm.FormCreate(Sender: TObject);
var
maxNO,tmp:integer;
begin
rydate.Date:=now;
cydate.Date:=now;
with table1 do
begin
Open;
First;
maxNO:=FieldByName('hz_num').AsInteger;
while not eof do
begin
tmp:=FieldByName('hz_num').AsInteger;
if maxNO<tmp then maxNO:=tmp;
next;
end;
close;
end;
edit1.Text:=inttostr(maxNO+1);
end;
end.