我的dbgrid和datasoure   、adoquery用语句连接的
1:关于dbgrid我想在dbgrid里的单元格里输入内容,能够自动保存。但我能输入,就是保存不了??
2:为什么dbgrid只有一行啊。我想让他有没有记录都显示多行。怎样做。
3:在dbgrid的第一个单元格里输入相应的内容,怎样能够检索数据库看是否有和他一样的东东。
4:谢谢各位了。

解决方案 »

  1.   

    1.你要调用adoquery.post才可以保存到数据库,或着dbgrid的行改变的时候会自动保存到数据库中
    2.dbgrid只有一行是因为你的数据集是空的或只有一条记录,dbgrid和数据库表是时刻连着的
    3.你就再增加一个按钮把,在按钮的click事件里写:adoquery.post;就可以了
      

  2.   

    写写;楼上的。第一个我一解决
    adoquery的属性面板的LockType属性选择ltBatchOptimistic
    就ok了
    用self.adoquery2.UpdateBatch提交
    我还想更改某一个单元格内容。和他相关的单元格也响应改动。假设在数量这个里改为4 。再合计里响应的算出值来。
      

  3.   

    我还想更改某一个单元格内容。和他相关的单元格也响应改动。假设在数量这个里改为4 。再合计里响应的算出值来。用计算字段
    双击query添加字段,选择calcuted
    在query的oncalcuted事件里写
      

  4.   

    谢谢楼上的各位。
    我是这样做的
    procedure Txskd.Label10Click(Sender: TObject);
    begin
    // Label10.Caption :=DateTimePicker1.datatime;
    end;procedure Txskd.DBGrid1CellClick(Column: TColumn);
      var sl1:string;
    begin
          ADOQuery1.UpdateBatch;
        //  ADOQuery1.post;
        with ADOQuery1 do
    begin
    edit;
      sl1:= FieldByName('数量').AsString;
        sl:=strtofloat(trim(sl1)); sdj := FieldByName('单价').AsString;
     shj := FieldByName('合计').AsString;
     dj:=strtofloat(sdj);
     hj:=strtofloat(shj);
     hj:=dj*sl;
     FieldByName('合计').AsString:=floattostr(hj);
      //.................
     // post;
      UpdateBatch;
    end;
     // ADOQuery1.UpdateBatch;
    end;就ok了

    2:为什么dbgrid只有一行啊。我想让他有没有记录都显示多行。怎样做。
    3:在dbgrid的第一个单元格里输入相应的内容,怎样能够检索数据库看是否有和他一样的东东。
    还没有解决
      

  5.   

    一切都用sql语句自己控制,更自由