with LoginFrm.ADOQuery1 do
      begin
       close;
       sql.clear;
       sql.add('insert into Stock (StockID,FeederID,FeederName,DepotID,DepotName,ProductId,ProductName,Spec,Unit,Quantity,UnitPrice,Payment,StockDate,StockRe)values (' );
       sql.add(''''+edit8.Text+''''+','+''''+combobox1.text+''''+','+''''+edit1.text+''''+','+''''+combobox2.text+''''+','+''''+edit2.text+''''+','+''''+combobox3.text+''''+','+''''+edit3.text+''''+',');
       sql.add(''''+edit4.text+''''+','+''''+edit5.text+''''+','+''''+edit6.text+''''+','+''''+edit7.text+''''+','+''''+Payment+''''+','+''''+maskedit1.text+''''+','+''''+memo1.text+''''+')');
       sql.add('select * from Storage where convert(varchar,DepotID)='+''''+Combobox2.text+''''+'and convert(varchar,ProductID)='+''''+Combobox3.text+'''');       open;
      // first;       if recordcount=0 then
          begin
           sql.add('insert into Storage (StorageID,DepotID,DepotName,ProductId,ProductName,Spec,Unit,Quantity)values (' );       //加入库存
           sql.add(''''+edit8.Text+''''+','+''''+combobox2.text+''''+','+''''+edit2.text+''''+','+''''+combobox3.text+''''+','+''''+edit3.text+''''+',');
           sql.add(''''+edit4.text+''''+','+''''+edit5.text+''''+','+''''+edit6.text+''''+')');
          execsql;
          end
        else
         begin
           Quantity:=floattostr(strtofloat(Edit6.Text)+fieldbyname('Quantity').asfloat);
           StorageID:=inttostr(fieldbyname('StorageID').asinteger);
           sql.Add('update Storage set Quantity='+''''+Quantity+''''+' where convert(varchar,StorageID)='+''''+StorageID+'''');
         end;       showmessage('入库登记成功!') ;      end;

解决方案 »

  1.   

      if recordcount=0 then
      begin
      close;           // <- 加上看看
      .....
      sql.add..
      .....
      execsql;
      end
      else
      .....没有格式化显示,就没看语句代码
      

  2.   

    可能是因为  if recordcount=0 then 这个条件不满足,是不是应该改成if recordcount>0 then 
      

  3.   

     if ADOQuery1.RecordCount=0 then
     试试吧
      

  4.   


    open;
      // first;
      if recordcount=0 then
      begin
      sql.add('insert into Storage (StorageID,DepotID,DepotName,ProductId,ProductName,Spec,Unit,Quantity)values (' ); //加入库存
      sql.add(''''+edit8.Text+''''+','+''''+combobox2.text+''''+','+''''+edit2.text+''''+','+''''+combobox3.text+''''+','+''''+edit3.text+''''+',');
      sql.add(''''+edit4.text+''''+','+''''+edit5.text+''''+','+''''+edit6.text+''''+')');
      execsql;
      end
      else
      begin
      Quantity:=floattostr(strtofloat(Edit6.Text)+fieldbyname('Quantity').asfloat);
      StorageID:=inttostr(fieldbyname('StorageID').asinteger);
      sql.Add('update Storage set Quantity='+''''+Quantity+''''+' where convert(varchar,StorageID)='+''''+StorageID+'''');
      end;
      showmessage('入库登记成功!') ;
      end;
    这里有问题。
    打开open后,不能再sql add了吧?
      

  5.   

    不要用同一个DataSet打开数据又更新,再加一个qry用来更新
      

  6.   

    insert 操作要用execsql
    open;
    改成Execl