往ACCESS添加一条记录时,除了添加要添加的记录,同时还会添加一条空记录,所有列都是空。
并且在DBGRID里面显示的时候,只显示那条空记录,而不显示所添加的记录。但是当我关掉程序,重新进入时,那条新添加的记录才显示。
代码如下:
procedure TFjizicao.enterbian;
begin
  with dmmain.Qbian do
  begin
    Close;
    sql.Clear;
    sql.Add('insert into bian(chang_bian,ke_bian,banliao,moju,chicun,kehu,riqi) values(:cb,:kb,:bl,:mj,:cc,:kh,:rq)');
    parambyname('cb').Value:=trim(mchangbian.Text);
    parambyname('kb').Value:=trim(mkebian.Text);
    parambyname('bl').Value:=trim(mbanliao.text);
    parambyname('mj').Value:=trim(mmoju.text);
    parambyname('cc').Value:=trim(mchicun.text);
    parambyname('kh').Value:=trim(mkehu.Text);
    parambyname('rq').Value:=FormatDateTime('yyyy-mm-dd',mriqi.DateTime);
    ExecSQL;
  end;
end;
procedure TFjizicao.mokClick(Sender: TObject);
var yuanbm:Tbookstr;
begin
  if trim(mchangbian.text)='' then
  begin
    showmessage('厂编不能空,不能保存!');
    mchangbian.SetFocus;
    exit;
  end;
  //增加新记录
  if (ziliaocao=1) then
  begin
    if ziliaoku=1 then
    with dmmain.yang do
    begin
      if Locate('chang_bian', trim(mchangbian.text), []) then
      begin
        showmessage('厂编已有重复,增加无效!');
        mchangbian.SetFocus;
        exit;
      end;
      {Append;}
      Insert;
      enteryang;
      Post;
    end;
    if ziliaoku=2 then
    with dmmain.bian do
    begin
      if Locate('chang_bian', trim(mchangbian.text), []) then
      begin
        showmessage('厂编已有重复,增加无效!');
        mchangbian.SetFocus;
        exit;
      end;
      {Append;}
      Insert;
      enterbian;
      Post;
    end;
  end;
  fjizicao.Close;
end;

解决方案 »

  1.   

    DbGrid.DataSource.Dataset.Close
    DbGrid.DataSource.Dataset.Open
    或者DbGrid的那个AdoQuery.ReQuery
      

  2.   

    你的代码有问 Insert;
     enterbian;
     Post;
    ????
      

  3.   

    enterbian;是指向另一个PROCEDURE。
    Qbian TQuery
    bian TTable
    你说代码有问题,问题在哪里?
      

  4.   

    Insert;                //////和下面的post就在插入数据了,空值
    enterbian;             ////////又是插入,有值
    Post;
    再看看撒
      

  5.   

    {Append;}
          Insert;你先调用了一下
    然后又在enterbian通过sql插入了一条
      

  6.   

    单独用INSERT,POST,是添加了一条新记录。
    那么引发下面三个问题:
    1、那么我该如何修改添加记录,然后又不会加入新记录。
    2、如果我添加完一条记录,如何同时更新显示这个表的DBGRID,让新的记录也可以显示。
    3、当我输完一条记录后,又去输另一条记录时,程序会报错,错误内容:
    Project Dianzi.exe raised exception class ENoResultSet with message 'Error creating cursor handle'.
      

  7.   

    能给出代码吗?理论上我也想到这么做,可是惭愧的是我对DELPHI不是很熟悉,一直在搞JAVA的,这次应同事请求帮忙改一个DELPHI的程序。
      

  8.   

    而且按照METEOR_sky的做法,不行呀。
      

  9.   

    解决问题,将INSERT,POST删掉就可以了。