|

楼主 |
发表于 2007-3-30 08:55:55
|
显示全部楼层
我正是这样做的
导出
procedure TYWGNZCT.btExportClick(Sender: TObject);
begin
query1.CommandText:='select * from table_bmkzb where dwdm=''S11JH001''';
query1.Open;
query1.SaveToFile('E:\table_bmkzb.xml',TDataPacketFormat.dfXML);
end;
导入
procedure TYWGNZCT.btImportClick(Sender: TObject);
var
I,j:Integer;
lValues,lFields,lInsertSQL:string;
lFieldList:TFieldlist;
lStr:string;
begin
Query1.LoadFromFile('E:\table_bmkzb.xml');
//Query1.LoadFromFile('E:\测试\zjcs\table_sbjbxx.xml');
//Query1.LoadFromFile('E:\table_sbjbxx.xml');
lFields:='';
lValues:='';
for i:=0 to Query1.FieldCount-1 do
begin
if (i<Query1.FieldCount-1) then
begin
lFields:=lFields+Query1.FieldList.FieldName+',';
lValues:=lValues+':'+Query1.FieldList.FieldName+',' ;
end
else begin
lFields:=lFields+Query1.FieldList.FieldName ;
lValues:=lValues+':'+Query1.FieldList.FieldName;
end
end;
lFields:='('+lFields+')';
lValues:='Values('+lValues+')';
//lInsertSQL:='Insert into table_sbjbxx '+lFields+' '+lValues;
lInsertSQL:='Insert into table_bmkzb '+lFields+' '+lValues;
QueryInsert.CommandText:=lInsertSQL;
Dialogs.ShowMessage(QueryInsert.CommandText) ;
lFieldList:=Query1.FieldList;
While not Query1.Eof do
begin
for I := 0 to lFieldList.Count - 1 do
begin
QueryInsert.Params.DataType := lFieldList[I].DataType;{增加}
QueryInsert.Params.ParamType := TParamType.ptInput;{增加}
QueryInsert.Params.AssignFieldValue(lFieldList[I],lFieldList[I].Value);
end;
QueryInsert.Execute;//运行该语句时出错
Query1.Next;
end ;
出现一楼的错误,因为导出的记录只有一条,发现日期为空值,然后直接在table_bmkzb.xml加入
QSRQ="1990-1-1"再导入则没有问题。 |
|