Excel表格数据导入SQL2005,其中数据库的一个字段是 “datetime”,可以为‘NULL’该字段对应Excel表的值可能为空。我的代码:
CSRQ :TdateTime;CSRQ := strtodatetime(Trim(excelWorksheet1.Cells.Item[i,6])); 当为空时报错;
改成
if Trim(excelWorksheet1.Cells.Item[i,6]) <> '' then
begin
CSRQ := strtodatetime(Trim(excelWorksheet1.Cells.Item[i,6]));
end
else
begin
CSRQ := NULL;
end;
当为空时也会报错:
Could not convert variant of type(NULL) into type (Double)请问各位,我该怎么处理 Excel时间为空?先谢谢!呵呵
CSRQ :TdateTime;CSRQ := strtodatetime(Trim(excelWorksheet1.Cells.Item[i,6])); 当为空时报错;
改成
if Trim(excelWorksheet1.Cells.Item[i,6]) <> '' then
begin
CSRQ := strtodatetime(Trim(excelWorksheet1.Cells.Item[i,6]));
end
else
begin
CSRQ := NULL;
end;
当为空时也会报错:
Could not convert variant of type(NULL) into type (Double)请问各位,我该怎么处理 Excel时间为空?先谢谢!呵呵
解决方案 »
- TdxMemData 用法 高分 等
- 高分求救(为什么我的打印用fastReport打印内存始终增加?没有别的代码就是一个打印内存老是增加)
- 在DBGRID导出数据到EXCEL时如果填写的文件名已存在时会报错!各位大哥给解决一下吧!!
- 怎么样批量修改文件类型?
- 急急,各位高手,如何判断某一天所在的周,在某一年或某一月中是第几周?有这样的函数吗?
- 十万火急!!!!!!!!!!!
- 有关SQL的结果,请大家进来一看
- 怎么看不到内容?
- delphi listbox问题
- 各位大哥帮忙啊,我实在弄不出来了,把字符型变量转换成十六进制!
- 简单问题 (送分)
- Delphi7中使用adoQuery+DataSource+DBChart无法完全图表的问题
for j:=4 to fields.count-1 do
fields[j].value := ExcelID.Cells[4+i,j-2].Value;
如果你是用adoquery或者clientdataset提交的,请用ADOQuery1.FieldByName('date_time').AsString:='';
如果你使用sql语句提交的,请用insert into testsql(date_time) values (null)以上都是d7和sql2000下测试可用
改为CSRQ.Clear;
试下。
改为CSRQ.Clear;
试下。
if Trim(excelWorksheet1.Cells.Item[i,6]) <> '' then
begin
ADOQuery1.FieldValues['csrq'] := Trim(excelWorksheet1.Cells.Item[i,6]);
end
else
begin
ADOQuery1.FieldValues['csrq'] := Null;
end;
begin
CSRQ := strtodatetime(Trim(excelWorksheet1.Cells.Item[i,6]));
end
else
……楼主的本意是 判定Excel单元格是否为空,但,在Excel中Cell的value是variant类型,如果中间没有值时,是null,只有在用户显示的给cell赋空字符串时,其类型才是string,值value才是''所以 你的判定应该写成
if not VarIsNull(excelWorksheet1.Cells.Item[i,6]) then
……顺便指出,你提到的系统错误是由于将值为Null的Variant变量尝试转变为TDate(日期类型是使用双精度浮点数保存的)报出的
CSRQ := strtodatetime(Trim(excelWorksheet1.Cells.Item[i,6]));