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 --置標志已派工的待分配生產任務單
mastering delphi系列不错的。。
这个Dbgrid是显示前一个Table(比如是:Table1吧),然后呢,你还要用这个Dbgrid显示另外一个Table(比如是:Table2吧).在显示之前呢,你还要清空这个Dbgrid,对吗?如果是这样,你可以试试以下方法:
我觉得好像Dbgrid没有清空数据源的方法或函数.所以只有首先在显示Table2之前时改变DataSet的指向,比如:
DBGrid1.DataSet:=Table2
也不知道这种做法对不对,但上次我一个同事遇到和你差不多的情况.或者你试试在显示Table2之前清空DBgrid1的DataSet.然后再
DBGrid1.DataSet:=Table2
也不知道这样行不行
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 --置標志已派工的待分配生產任務單
直接把那个数据集的字段值取出来,赋给另外一个数据集所对应的字段
然后POST一下就行了。
这很简单的
不过清空数据集的话可能就没有这个功能了
因为你DBGRID是和数据源联系在一起的
只要Active,那么它的数据就会显示出来
只有Append的时候它才会自动清空,所以不行
但你可以使用StringList,它可以清空
不过显示所有数据的话,你就要自己写代码了
table1.BatchMove(table2,batAppendUpdate)
table1. EmptyTable;