出错提示:
not convert variant of type (String) into type (Date)
not convert variant of type (String) into type (Date)
解决方案 »
- 关于ADODataSet或者DBEdit的问题
- 在delphi中最大同时能创建多少个线程
- insert into问题
- 结婚一周年纪念,散分。9月30日下午结贴
- 哪一种软件可以将整个目录里的DELPHI源码一次性从繁体转为简体?? 当然这目录里的文件不能只限于TXT 和HTML文件
- 如何挂接手写输入法
- 忍痛送分了,谁知道哪儿有d5开发指南下载,最好是李维的???
- 急急急,如何用Query对lookup进行查询?????
- 如何使自己定制的控件正常绘制其包含的控件组及自身的图形
- 如何在程序中打开一个readme.txt(记事本文件)?
- Excel中可否编写带有参数的宏?
- 关于ACMin和ACMDlg的使用问题
这个问题本人是这样解决的,第一:可以在数据库中不用datetime类型。第二:如果真要用,自己写一个函数把字符转成时间的格式。再去做其它的运算。以str为(yyyy-MM-dd)为例。仅供参考。
function StrtoDateF(str: string): TDate;
begin
StrtoDateF:= EncodeDate(strtoint(Copy(str,1,4)),strtoint(copy(str,6,2)),strtoint(copy(str,9,2)));
end;
var CanClose: Boolean); var sFileName:string; iRepetendCount:integer;
iStartRows:integer;
iEndRows:integer;
iParamIndex:integer;
iArrayIndex:integer; vExcel:Variant;
vWorkBook:Variant;
vWorkSheet:Variant; aExcelFields:array[0..9] of string;
begin
if MessageBox(self.Handle,'开始导入数据。点击[是]开始。','数据导入',64+MB_YESNO)=7 then
Exit
else
sFileName:=OpenDialog1.FileName; try
vExcel:=CreateOleObject('Excel.Application');
vWorkBook:=vExcel.WorkBooks.Open(sFileName);
vWorkSheet:=vExcel.WorkBooks[1].WorkSheets[1];
except
vWorkBook:=UnAssigned;
vExcel.Quit;
Application.MessageBox('文件打开时出错。请确认你安装了Excel并且打开的是正确的文件类型。','错误',0+16);
Exit;
end; iStartRows:=StrToInt(Edit1.Text);
iEndRows:=StrToInt(Edit2.Text); for iRepetendCount:=iStartRows to iEndRows do
begin
for iArrayIndex:=0 to 9 do
begin
aExcelFields[iArrayIndex]:=(vWorkSheet.Cells[iRepetendCount,iArrayIndex+1]);
end; try
QImportData.Close;
QImportData.SQL.Clear;
QImportData.SQL.Add('insert into tbltest);
QImportData.SQL.Add(' values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j)'); for iParamIndex:=0 to 9 do
begin
if aExcelFields[iParamIndex]='' then
QImportData.Parameters[iParamIndex].Value:=NULL
else
QImportData.Parameters[iParamIndex].Value:=aExcelFields[iParamIndex];
end; QImportData.ExecSQL;
except
vWorkSheet:=UnAssigned;
vWorkBook:=UnAssigned;
vExcel.Quit;
vExcel:=UnAssigned;
Application.MessageBox('数据传输出错!即将中断导入。','警告',64+0);
Exit;
end;
end;
vWorkSheet:=UnAssigned;
vWorkBook:=UnAssigned;
vExcel.Quit;
vExcel:=UnAssigned;
Application.MessageBox('数据导入完成。','信息',0+64);
end;
var CanClose: Boolean); var sFileName:string; iRepetendCount:integer;
iStartRows:integer;
iEndRows:integer;
iParamIndex:integer;
iArrayIndex:integer; vExcel:Variant;
vWorkBook:Variant;
vWorkSheet:Variant; aExcelFields:array[0..9] of string;
begin
if MessageBox(self.Handle,'开始导入数据。点击[是]开始。','数据导入',64+MB_YESNO)=7 then
Exit
else
sFileName:=OpenDialog1.FileName; try
vExcel:=CreateOleObject('Excel.Application');
vWorkBook:=vExcel.WorkBooks.Open(sFileName);
vWorkSheet:=vExcel.WorkBooks[1].WorkSheets[1];
except
vWorkBook:=UnAssigned;
vExcel.Quit;
Application.MessageBox('文件打开时出错。请确认你安装了Excel并且打开的是正确的文件类型。','错误',0+16);
Exit;
end; iStartRows:=StrToInt(Edit1.Text);
iEndRows:=StrToInt(Edit2.Text); for iRepetendCount:=iStartRows to iEndRows do
begin
for iArrayIndex:=0 to 9 do
begin
aExcelFields[iArrayIndex]:=(vWorkSheet.Cells[iRepetendCount,iArrayIndex+1]);
end; try
QImportData.Close;
QImportData.SQL.Clear;
QImportData.SQL.Add('insert into tbltest);
QImportData.SQL.Add(' values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j)'); for iParamIndex:=0 to 9 do
begin
if aExcelFields[iParamIndex]='' then
DataMod.QImportData.Parameters[iParamIndex].Value:=NULL
else if (iParamIndex=7)or(iParamIndex=8)or(iParamIndex=10) then
DataMod.QImportData.Parameters[iParamIndex].Value:=StrToDateTime(aExcelFields[iParamIndex])];{漏掉的 现在补上}
else
DataMod.QImportData.Parameters[iParamIndex].Value:=aExcelFields[iParamIndex
end; QImportData.ExecSQL;
except
vWorkSheet:=UnAssigned;
vWorkBook:=UnAssigned;
vExcel.Quit;
vExcel:=UnAssigned;
Application.MessageBox('数据传输出错!即将中断导入。','警告',64+0);
Exit;
end;
end;
vWorkSheet:=UnAssigned;
vWorkBook:=UnAssigned;
vExcel.Quit;
vExcel:=UnAssigned;
Application.MessageBox('数据导入完成。','信息',0+64);
end;