现欲实现,1、数据在完成添加并提交后,利用查询完成新添加的数据立即在一个DBGrid中显示出来。2、数据在完成修改并提交到数据库后,同样利用查询将已经修改的记录在一个DBGrid中显示。
出现的问题:1、添加并提交后的数据,不能在查询中正常显示,即第一条不能查询出来,添加的第二条与第一条一同显示,添加的第三条能正常显示。
2、在修改数据时,第一条要在第二条记录修改并提交后,显示第一条记录,而第二条不显示,此时添加记录,则修改后的记录与添加的一同显示出来。
procedure TForm1.Button1Click(Sender: TObject);
begin
  if radiobutton1.Checked then
    begin
      adotable1.Close;
      adotable1.Open;
      adotable1.Append;//添加记录
      adotable1.FieldValues['sjdaihao']:=trim(edit1.Text);
      adotable1.FieldValues['jiche']:=trim(edit3.Text);
      adotable1.FieldValues['gudao']:=trim(edit4.Text);
      adotable1.FieldValues['dkshijian']:=trim(edit5.Text);
      adotable1.FieldValues['kgzhuangtai']:='打开';
      adotable1.FieldValues['jhdaihao']:=trim(edit6.Text);
      edit1.Text:='';
      edit2.Text:='';
      edit3.Text:='';
      edit4.Text:='';
      edit5.Text:='';
      edit6.Text:='';
      edit7.Text:='';
      button1.Enabled:=false;
      button2.Enabled:=false;
      radiobutton1.Checked:=false;
      radiobutton2.Checked:=false;
      radiobutton3.Checked:=false;
      radiobutton3.Enabled:=false;
      radiobutton4.Checked:=false;
      radiobutton4.Enabled:=false;
      adotable1.Post;
      adotable1.Close;
      adotable1.open;
      adoquery1.Close;//查询添加的记录
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select siji.sjdaihao as 代号,siji.sjxingming as 申请人,kaiguan.jiche as 机车,kaiguan.gudao as 股道,dkshijian as 打开时间,kgzhuangtai as 开关状态,jiedixian as 接地线,bhshijian as 闭合时间,jianhu.jhxingming as 监护人');
      adoquery1.SQL.Add('from siji,jianhu,kaiguan');
      adoquery1.SQL.Add('where (kaiguan.sjdaihao=siji.sjdaihao)and(kaiguan.jhdaihao=jianhu.jhdaihao)order by kaiguan.dkshijian asc');
      adoquery1.open;
      adoquery1.Last;
      adoquery2.Close;
      adoquery1.SQL.Clear;
      adoquery2.SQL.Add('select siji.sjxingming as 申请人,jiche as 机车,gudao as 股道,dkshijian as 打开时间,kgzhuangtai as 开关状态');
      adoquery2.SQL.Add('from siji,kaiguan');
      adoquery2.SQL.Add('where (kaiguan.kgzhuangtai="打开")and(siji.sjdaihao=kaiguan.sjdaihao)order by kaiguan.dkshijian asc');
      adoquery2.Open;
      adoquery2.Last;
    end;
    if radiobutton2.Checked then
      begin
        adoquery6.Close;//修改记录
        adoquery6.SQL.Clear;
        adoquery6.SQL.Add('update kaiguan set kgzhuangtai="闭合",jiedixian=:jiedixian,bhshijian=:bhshijian where sjdaihao=:sjdaihao and kgzhuangtai="打开"');
        if radiobutton3.Checked then
          adoquery6.Parameters.ParamValues['jiedixian']:=radiobutton3.Caption;
        if radiobutton4.Checked then
          adoquery6.Parameters.ParamValues['jiedixian']:=radiobutton4.Caption;
        adoquery6.Parameters.ParamValues['bhshijian']:=edit5.Text;
        adoquery6.Parameters.ParamValues['sjdaihao']:=edit1.Text;
        adoquery6.ExecSQL;
        edit1.Text:='';
        edit2.Text:='';
        edit3.Text:='';
        edit4.Text:='';
        edit5.Text:='';
        edit6.Text:='';
        edit7.Text:='';
        button1.Enabled:=false;
        button2.Enabled:=false;
        radiobutton1.Checked:=false;
        radiobutton2.Checked:=false;
        radiobutton3.Checked:=false;
        radiobutton3.Enabled:=false;
        radiobutton4.Checked:=false;
        radiobutton4.Enabled:=false;
        datasource1.DataSet.Active:=false;
        datasource1.DataSet.Active:=true;
        adoquery1.Close;//查询修改的记录
        adoquery1.SQL.Clear;
        adoquery1.SQL.Add('select siji.sjdaihao as 代号,siji.sjxingming as 申请人,kaiguan.jiche as 机车,kaiguan.gudao as 股道,dkshijian as 打开时间,kgzhuangtai as 开关状态,jiedixian as 接地线,bhshijian as 闭合时间,jianhu.jhxingming as 监护人');
        adoquery1.SQL.Add('from siji,jianhu,kaiguan');
        adoquery1.SQL.Add('where (kaiguan.sjdaihao=siji.sjdaihao)and(kaiguan.jhdaihao=jianhu.jhdaihao) order by kaiguan.dkshijian asc');
        adoquery1.open;
        adoquery1.Last;
        adoquery2.Close;
        adoquery1.SQL.Clear;
        adoquery2.SQL.Add('select siji.sjxingming as 申请人,jiche as 机车,gudao as 股道,dkshijian as 打开时间,kgzhuangtai as 开关状态');
        adoquery2.SQL.Add('from siji,kaiguan');
        adoquery2.SQL.Add('where (kaiguan.kgzhuangtai="打开")and(siji.sjdaihao=kaiguan.sjdaihao) order by kaiguan.dkshijian asc');
        adoquery2.Open;
        adoquery2.Last;
      end;
end;