为什么点“修改””保存“时,emp表的数据随quit表数据更新了,点新增保存时quit表数据写进去了,可是emp表数据却没有更新。代码如下,不知哪里错了。
procedure TForm5.Button1Click(Sender: TObject);
var
intNum:string;
begin
intNum:=dbgrideh1.Fields[0].AsString;
if Panel3.Tag=1 then
begin
//showmessage('当前为修改状态');
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('update quit set id1='''+edit1.Text+'''');
adoquery1.SQL.Add(',id2='''+edit2.text+'''');
adoquery1.SQL.Add(',name='''+edit3.text+'''');
adoquery1.SQL.Add(',sex='''+combobox1.Text+'''');
adoquery1.SQL.Add(',part='''+combobox2.Text+'''');
adoquery1.SQL.Add(',edu='''+combobox3.Text+'''');
adoquery1.SQL.Add(',idcard='''+edit4.Text+'''');
adoquery1.SQL.Add(',nation='''+edit5.Text+'''');
adoquery1.SQL.Add(',in_time='''+edit6.Text+'''');
adoquery1.SQL.Add(',out_time='''+edit7.Text+'''');
adoquery1.SQL.Add(',reason='''+edit8.Text+'''');
adoquery1.SQL.Add(',status='''+combobox4.Text+'''');
adoquery1.SQL.Add(' where id1='''+intNum+'''');
adoquery1.ExecSQL;
dbgrideh1.Refresh;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select * from quit');
adoquery1.open;adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('update emp set id1='''+edit1.Text+'''');
adoquery2.SQL.Add(',status='''+combobox4.text+'''');
adoquery2.SQL.Add(' where id1='''+intNum+'''');
adoquery2.ExecSQL;
form2.dbgrideh1.Refresh;
adoquery2.SQL.Clear;
adoquery2.sql.Add('select * from emp');
adoquery2.open;Panel3.Visible:=false;
showmessage('修改成功!');
end
else if Panel3.tag<>1 then
begin
if (edit1.Text='') and (edit3.Text='') then
begin
showmessage('必须输入姓名!') ;
exit;
end
else
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:='insert into quit(id1,id2,name,sex,part,edu,idcard,'+#13#10+
'nation,in_time,out_time,reason,status) VALUES ('''+edit1.text+''','''+edit2.text+''','+#13#10+
''''+edit3.text+''','''+combobox1.text+''','''+combobox2.text+''','+#13#10+
''''+combobox3.text+''','''+edit4.text+''','+#13#10+
''''+edit5.text+''','+#13#10+
''''+edit6.text+''','+#13#10+
''''+edit7.text+''','''+edit8.text+''','''+combobox4.text+''')';
adoquery1.ExecSQL;
DBGrideh1.Refresh;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select * from quit');
adoquery1.open;adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('update emp set id1='''+edit1.Text+'''');
adoquery2.SQL.Add(',status='''+combobox4.text+'''');
adoquery2.SQL.Add(' where id1='''+intNum+'''');
adoquery2.ExecSQL;
form2.dbgrideh1.Refresh;
adoquery2.SQL.Clear;
adoquery2.sql.Add('select * from emp');
adoquery2.open;Panel3.Visible:=false;
showmessage('新增成功!');
end
else showmessage('未知错误!');
end;
……
adoquery1.SQL.Text:='insert into quit(id1,id2,name,sex,part,edu,idcard,'+#13#10+
'nation,in_time,out_time,reason,status) VALUES ('''+edit1.text+''','''+edit2.text+''','+#13#10+
''''+edit3.text+''','''+combobox1.text+''','''+combobox2.text+''','+#13#10+
''''+combobox3.text+''','''+edit4.text+''','+#13#10+
''''+edit5.text+''','+#13#10+
''''+edit6.text+''','+#13#10+
''''+edit7.text+''','''+edit8.text+''','''+combobox4.text+''')';
adoquery1.ExecSQL;
DBGrideh1.Refresh;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select * from quit');
adoquery1.open;
//如果emp表有id1=edit1.text的記錄,加入下句。如果沒有相應的記錄,下面的update就要改成insert語句。
intNum := edit1.text;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('update emp set id1='''+edit1.Text+'''');
adoquery2.SQL.Add(',status='''+combobox4.text+'''');
adoquery2.SQL.Add(' where id1='''+intNum+'''');
adoquery2.ExecSQL;
form2.dbgrideh1.Refresh;
adoquery2.SQL.Clear;
adoquery2.sql.Add('select * from emp');
adoquery2.open;
……