手工拼写sql好了: var s,s1,s2:string s1:Variant i:integer;Query1.first; while not Query1.Eof do begin s1:=''; for i:=0 to Query1.FieldCount-1 do begin case Query1.Fields[i].DataType of ftString: s1:= s1+ ''''+Query1.Fields[i].AsString+''','; ftInteger: s1:= s1+ Query1.Fields[i].Asinteger+','; /................................. //还有其他很多类型。。 end; s2:=s2+Query1.Fields[i].FieldName+','; Query1.next; Delete(s1,Length(s1),1); Delete(s2,Length(s2),1); s:='Insert into TableName ('+s2+')Values('+s1+')'+'#13#10';//所需要的字符串,可以保存到文件或其他。 end;
上面少写错一个: s:=s+'Insert into TableName ('+s2+')Values('+s1+')'+'#13#10';//所需要的字符串,可以保存到文件或其他。
sqlStr := 'SELECT * into #dcb_TempMend FROM OpenDataSource(' + #39 + 'Microsoft.Jet.OLEDB.4.0'+
#39 +','+ #39 + 'Data Source=' + filePath + filename + ';User ID=Admin;Password=;'+
'Extended properties=Excel 8.0' + #39 + ')...' + copy(filename,1,pos('.',filename)-1) + '$' ;
DataSet.SQL.Add(sqlStr);
try
DataSet.ExecSQL;
var
s,s1,s2:string
s1:Variant
i:integer;Query1.first;
while not Query1.Eof do
begin
s1:='';
for i:=0 to Query1.FieldCount-1 do
begin case Query1.Fields[i].DataType of
ftString: s1:= s1+ ''''+Query1.Fields[i].AsString+''',';
ftInteger: s1:= s1+ Query1.Fields[i].Asinteger+',';
/.................................
//还有其他很多类型。。
end; s2:=s2+Query1.Fields[i].FieldName+',';
Query1.next;
Delete(s1,Length(s1),1);
Delete(s2,Length(s2),1);
s:='Insert into TableName ('+s2+')Values('+s1+')'+'#13#10';//所需要的字符串,可以保存到文件或其他。
end;
s:=s+'Insert into TableName ('+s2+')Values('+s1+')'+'#13#10';//所需要的字符串,可以保存到文件或其他。