我有dbgrid1,dbgrid2,分别对应是adoquery1,adoquery2,及表table1,table2,(dbgrid1中的数据并不一定是table1中的全部数据),我点击一个按钮,dbgrid1中的数据就全部转移到了dbgrid2,我该如保操作?
我用的是adoquery2.Recordset:=adoquery1.Recordset,但是数据并没有保存到table2中去,加了dbgrid2.datasource.dataset.post也不行;
我的dbgrid1中的数据如何删除?
我用的是adoquery2.Recordset:=adoquery1.Recordset,但是数据并没有保存到table2中去,加了dbgrid2.datasource.dataset.post也不行;
我的dbgrid1中的数据如何删除?
var
Field_Name: String; // 表字段名称
i: Integer;
Field_Name_List: TStringList;
begin
Result := True; if DM.TmpTable.Active then DM.TmpTable.Close;
DM.TmpTable.Connection := DM.Conn1; // 当前的注册单位
DM.TmpTable.TableName := tbName; if DM.TmpTable2.Active then DM.TmpTable2.Close;
DM.TmpTable2.Connection := DM.Conn2; // 新建数据库的连接
DM.TmpTable2.LockType := ltBatchOptimistic; // 使用批方式更新
DM.TmpTable2.TableName := tbName; Field_Name_List := TStringList.Create;
try
try
DM.TmpTable.Open;
DM.TmpTable2.Open;
DM.TmpTable2.GetFieldNames(Field_Name_List); //取新表的字段列表
while not DM.TmpTable.Eof do begin // 遍历上年度的系统表记录
DM.TmpTable2.Append;
for i := 0 to Field_Name_List.Count - 1 do begin
Field_Name := Field_Name_List[i];
if DM.TmpTable.FindField(Field_Name) <> nil then // 在上年度表中找到该字段
DM.TmpTable2.FieldByName(Field_Name).Value := DM.TmpTable.FieldByName(Field_Name).Value;
end;
DM.TmpTable2.Post;
DM.TmpTable.Next;
end;
DM.TmpTable2.UpdateBatch();
except;
DM.TmpTable2.CancelBatch();
Result := False;
end;
finally
Field_Name_List.Free;
end; if DM.TmpTable.Active then DM.TmpTable.Close;
if DM.TmpTable2.Active then DM.TmpTable2.Close;
DM.TmpTable2.LockType := ltOptimistic; // 使用默认方式
end;
procedure From_QuerySource_To_QueryDest(QuerySource:TADOTable; QueryDest: TADOTable);overload;
var
i: integer;
begin
QueryDest.Append;
if not QuerySource.IsEmpty then
for i:=0 to QuerySource.FieldCount-1 do
QueryDest.Fields[i].AsString:= QuerySource.Fields[i].AsString;
end;