我用ADOQuery的insert的方法插入数据,第一可以成功的插入,但第二次却提不有一数据项找不到,是什么原因呀?

解决方案 »

  1.   

    with ADOQuery do
      begin
          close;
          open;
          insert;
          fieldvalues['...']:=ComboBox5.Text;
          ...............
          fieldvalues['..]:=FormatFloat(',.000',a);
          post;
          end;       with ADOQuery do//此为刷新数据的
            begin
            close;
            with sql  do
            begin
            clear;
            Add(....);
            end;
            execsql;
            open;
            end;
      

  2.   

    with ADOQuery do//此为刷新数据的
    begin
      close;
      with sql do
      begin
        clear;
        Add(....);
      end;
      execsql;  //如果是Insert、Update、Delete用exesql
      open;     //如果是select用open 
    end;
      

  3.   

    with ADOQuery do
    begin
      close;
      //可能需要在这里恢复初始的SQL语句
      open;
      insert;
      fieldvalues['...']:=ComboBox5.Text;
      ...............
      fieldvalues['..]:=FormatFloat(',.000',a);
      post;
    end;with ADOQuery do//此为刷新数据的
    begin
      close;
      with sql do
      begin
        clear;
        Add(....);//第二次点的时候,ADOQuery的Sql已经变为这个了。
      end;
      execsql;  //如果是Insert、Update、Delete用exesql
      open;     //如果是select用open 
    end;
      

  4.   

    你用的是DELPHI几啊
    有个版本的DELPHI就是这样的
      

  5.   

    首先,
    with ADOQuery1 do
      begin
          close;
          open;
          insert;
          fieldvalues['字段1']:=ComboBox5.Text;
          //...............
          fieldvalues['字段n]:=FormatFloat(',.000',a);//原来的这里少了个'号吧
          fieldvalues['字段n']:=FormatFloat(',.000',a);//这句才对      post;
          end;注意:若'字段1'是建立了唯一索引的字段,在执行一次以后,就要改变combobox5.text的值,
    否则第二次点击就不能插入成功;没有后面这一段也可以的;
    with ADOQuery1 do//此为刷新数据的
            begin
            close;
            with sql  do
            begin
            clear;
            Add(select * from 原表);
            end;
            execsql;
            open;
            end;