我现在用dbgrid操作数据库已经困绕了我好几天了
请各位帮我想想呀。
我现在用dbgrid操作,用dbgrid的各字段给别的table 赋值,然后在清空 这个dbgrid请问应该怎样做我一直在线,如果没说清楚,可以问,谢谢

解决方案 »

  1.   

    DBGrid 的数据从哪里来,数据又要送到哪里去?应该说清楚,不能放太多的省略号。
      

  2.   

    dbgrid知是数据感知控件,并不是数据源,我想你应有数据源的吧?也就是说有一个源表的!你把那个table控件指向它不行吗?
      

  3.   

    唉。。看此比较务实的书吧。。
    mastering delphi系列不错的。。
      

  4.   

    不知道你问的问题是不是这样:
       这个Dbgrid是显示前一个Table(比如是:Table1吧),然后呢,你还要用这个Dbgrid显示另外一个Table(比如是:Table2吧).在显示之前呢,你还要清空这个Dbgrid,对吗?如果是这样,你可以试试以下方法:
       我觉得好像Dbgrid没有清空数据源的方法或函数.所以只有首先在显示Table2之前时改变DataSet的指向,比如:
       DBGrid1.DataSet:=Table2
       也不知道这种做法对不对,但上次我一个同事遇到和你差不多的情况.或者你试试在显示Table2之前清空DBgrid1的DataSet.然后再
       DBGrid1.DataSet:=Table2
       也不知道这样行不行
      

  5.   


    procedure TdfrmProc_Mrp.NewBtnClick(Sender: TObject);
    var                  //派工
       rst:word;
    begin
       if Query2.FieldByName('Single_No').AsString='' then Exit;
       if Query2.State in [dsEdit,dsInsert] then Exit;
       rst:=MessageDlg(' 你確定要對制令單號為: '+Query3.FieldByName('Single_No').AsString+' 的待分配工作清單進行派工嗎?'+#13+#13,
          mtConfirmation,[mbYes, mbNo],0);
       if rst=mrYes then
       begin
         Query3.Append;
         MoveFocusBes(1,False);   //置Botton狀態
         Query3.FieldByName('Single_No').AsString:=Query2.FieldByName('Single_No').AsString;
         Query3.FieldByName('Cust_Nm').AsString:=Query2.FieldByName('Cust_Nm').AsString;
         Query3.FieldByName('C_Level').AsString:=Query2.FieldByName('C_Level').AsString;
         Query3.FieldByName('Model_No').AsString:=Query2.FieldByName('Code_no').AsString;
         Query3.FieldByName('M_Level').AsString:=Query2.FieldByName('M_Level').AsString;
         Query3.FieldByName('M_Mode').AsString:=Query2.FieldByName('M_Mode').AsString;
         Query3.FieldByName('M_Type').AsString:=Query2.FieldByName('M_Type').AsString;
         Query3.FieldByName('Diff_L').AsString:=Query2.FieldByName('Diff_L').AsString;
         Query3.FieldByName('End_Date').AsDatetime:=Query2.FieldByName('End_Date').AsDatetime;
         DbDateTimePicker1.Date:=Date;
         DbDateTimePicker2.Date:=Date;
         DbDateTimePicker3.Date:=DbDateTimePicker4.Date;
       end;
    end;Query2.Delete;CREATE TRIGGER Tri_Ins_Sch ON dbo.Schedule 
    FOR INSERT     --新增工作任務
    AS
       Update  Orderm set If_Mrp=1 from Orderm a , inserted i where a.Single_No=i.Single_No           --置標志已派工的待分配生產任務單
      

  6.   

    就像上面
    直接把那个数据集的字段值取出来,赋给另外一个数据集所对应的字段
    然后POST一下就行了。
    这很简单的
    不过清空数据集的话可能就没有这个功能了
    因为你DBGRID是和数据源联系在一起的
    只要Active,那么它的数据就会显示出来
    只有Append的时候它才会自动清空,所以不行
    但你可以使用StringList,它可以清空
    不过显示所有数据的话,你就要自己写代码了
      

  7.   

    table1.fieldbyname('fieldname').asstring=dbgrid.datasource.dataset.fieldbyname('fieldname').asstring;
      

  8.   

    这样试试看行不?
    table1.BatchMove(table2,batAppendUpdate)
    table1. EmptyTable;