古
古香
Unregistered / Unconfirmed
GUEST, unregistred user!
做EXCEL表格导入到SQL数据库时,会出现invalid variant type conversion的信息,导不进去!代码如下:
MyWorkBook:=ExcelApp.WorkBooks.Open(OpenDialog1.FileName);
J:=MyWorkBook.ActiveSheet.UsedRange.Rows.Count;
adoconnection1.BeginTrans;
try
i:=2;
while i<j+1 do
begin
adoquery3.SQL.Clear;
adoquery3.SQL.Add('insert into js_linsi(pdnm,spno,amno,gnum,jnno,cj,flag1,qr)values('''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,1])))+''','''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,2])))+'''');
adoquery3.SQL.Add(','''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,3])))+''',cast('''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,4]))+''' as int),'''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,5])))+'''');
adoquery3.SQL.Add(','''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,6])))+''','''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,7])))+''',''0'')');
adoquery3.ExecSQL;
i:=i+1;
end;
因为EXCEL文件里每次导入时,格式不同,而数据库表里除了第四个字段是INT型,其它都是字符型的,请教各位,该怎样写才能保证每次导数据时能一次性成功!
谢谢各位了!
MyWorkBook:=ExcelApp.WorkBooks.Open(OpenDialog1.FileName);
J:=MyWorkBook.ActiveSheet.UsedRange.Rows.Count;
adoconnection1.BeginTrans;
try
i:=2;
while i<j+1 do
begin
adoquery3.SQL.Clear;
adoquery3.SQL.Add('insert into js_linsi(pdnm,spno,amno,gnum,jnno,cj,flag1,qr)values('''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,1])))+''','''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,2])))+'''');
adoquery3.SQL.Add(','''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,3])))+''',cast('''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,4]))+''' as int),'''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,5])))+'''');
adoquery3.SQL.Add(','''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,6])))+''','''+uppercase(Trim(VarToStr(MyWorkBook.WorkSheets[1].Cells[i,7])))+''',''0'')');
adoquery3.ExecSQL;
i:=i+1;
end;
因为EXCEL文件里每次导入时,格式不同,而数据库表里除了第四个字段是INT型,其它都是字符型的,请教各位,该怎样写才能保证每次导数据时能一次性成功!
谢谢各位了!