为什么我执行一个insert在第一次运行的时候有错误,显示主键不能为空,但是之后再运行的话就没有错误了,这是什么问题啊?
代码:
procedure TForm9.BitBtn5Click(Sender: TObject);
begin
dbgrid2.DataSource:=datasource2;
if(Trim(Edit6.Text)='') then
begin
ShowMessage('系号不能为空!');
Exit;
end;
with Query2 do
begin Close;
SQL.Clear;
//SQL.Add(format(SQLstr,[Trim(DBEdit1.Text),Trim(DBEdit2.Text),Trim(DBEdit5.Text),DateTimePicker1.Date,Trim(DBEdit4.Text),Trim(Edit2.Text)]))
SQL.Add('insert into department values (:depart_id,:depart_name,:college_id,:master,:relation_style,:description)');
ParambyName('depart_id').AsString:=Trim(Edit6.Text);
ParambyName('depart_name').AsString:=Trim(Edit7.Text);
ParambyName('college_id').AsString:=Trim(DBLookupComboBox1.Text);
ParambyName('master').AsString:=Trim(Edit8.Text);
ParambyName('relation_style').AsString:=Trim(Edit9.Text);
ParambyName('description').AsString:=Trim(Memo2.Text);
ExecSQL;
ShowMessage('操作已成功!');end;
Edit6.Clear;
Edit7.Clear;
Edit8.Clear;
Edit9.Clear;
Memo2.Clear; table2.Refresh; end;
代码:
procedure TForm9.BitBtn5Click(Sender: TObject);
begin
dbgrid2.DataSource:=datasource2;
if(Trim(Edit6.Text)='') then
begin
ShowMessage('系号不能为空!');
Exit;
end;
with Query2 do
begin Close;
SQL.Clear;
//SQL.Add(format(SQLstr,[Trim(DBEdit1.Text),Trim(DBEdit2.Text),Trim(DBEdit5.Text),DateTimePicker1.Date,Trim(DBEdit4.Text),Trim(Edit2.Text)]))
SQL.Add('insert into department values (:depart_id,:depart_name,:college_id,:master,:relation_style,:description)');
ParambyName('depart_id').AsString:=Trim(Edit6.Text);
ParambyName('depart_name').AsString:=Trim(Edit7.Text);
ParambyName('college_id').AsString:=Trim(DBLookupComboBox1.Text);
ParambyName('master').AsString:=Trim(Edit8.Text);
ParambyName('relation_style').AsString:=Trim(Edit9.Text);
ParambyName('description').AsString:=Trim(Memo2.Text);
ExecSQL;
ShowMessage('操作已成功!');end;
Edit6.Clear;
Edit7.Clear;
Edit8.Clear;
Edit9.Clear;
Memo2.Clear; table2.Refresh; end;
根本就没有把值传过去,所以出现这种情况通过SQL的事件跟踪看看