起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 2526|回复: 36

【搞定】ExcuteSQL:For input string "1986-3-1"类型:Exception**

[复制链接]
发表于 2006-11-24 10:14:52 | 显示全部楼层 |阅读模式
代码如下:运行时现错误:
  运行导入数据的时候发生异常:ExcuteSQL:For input string "1986-3-1"类型:Exception
  1986-3-1是一个日期型数据,为什么会变成字符串。

Query1.LoadFromFile('E:\测试\zjcs\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;
  QueryInsert.CommandText:=lInsertSQL;
  lFieldList:=Query1.FieldList;
  While not Query1.Eof do
  begin
    for I := 0 to lFieldList.Count - 1 do
    begin
      QueryInsert.Params.AssignFieldValue(lFieldList[I],lFieldList[I].Value);
    end;
    QueryInsert.Execute;//运行该语句时出错
  Query1.Next;
  end ;
回复

使用道具 举报

发表于 2006-11-24 11:16:23 | 显示全部楼层
该字段数据类型为“日期类型”,请检查一下该字段的表现类型是否也为“日期”型,现在可能是“字符串”。如果是这样,那建议您去表中先删除原来的字段,然后重建该字段。

type.gif

14.19 KB, 下载次数: 374

回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-24 11:34:44 | 显示全部楼层
原来设置见图片

1.jpg

15.71 KB, 下载次数: 373

回复 支持 反对

使用道具 举报

发表于 2006-11-24 11:40:25 | 显示全部楼层
ok。既然物理表中没有错误,那就检查一下QueryInsert.Params中变量参数的数据类型是否也是日期型,以前遇到过类似问题。如果还有问题,请把相关资源打个包发给我,我给您测试一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-24 14:29:33 | 显示全部楼层
table_sbjbxx.xml是从当前数据库里导出的,以前的版本我测过,上面的代码没有问题,不知道升到2603以后,上面的代码为什么会出现问题。
CCNY:ftTimeStamp :1986-3-1
TCNY:ftTimeStamp :1987-1-1
回复 支持 反对

使用道具 举报

发表于 2006-11-24 15:10:49 | 显示全部楼层
请提供错误的截图
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-24 15:48:03 | 显示全部楼层
见图片

2.jpg

13.03 KB, 下载次数: 361

回复 支持 反对

使用道具 举报

发表于 2006-11-27 14:38:24 | 显示全部楼层
上面的问题可能出在AssignFieldValue中,但语法是支持的,又找不到问题所在。因为上面用到了一些Delphi标准控件的东西,而且问题出在导入的时候,没有办法让问题重现,没法判断。如能提供资源包来测试最好,我经过测试提供如下的例子,提供参照:(请注意参照XML文件 我的XML里边 字段保存为RDate="20061124T10:57:11000" BDate="19830613" )

test.rar

26.98 KB, 下载次数: 210

回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-27 17:01:52 | 显示全部楼层
CCNY="19911001" TCNY="19911201"
资源包见附件

tablesbjbxx.rar

1.14 MB, 下载次数: 220

回复 支持 反对

使用道具 举报

发表于 2006-11-28 09:25:54 | 显示全部楼层
我下载了您的资源包,包中SBJBXX没有,SBDAXX.Info找不到。引用的JDT单元也看不见。我什么都没看到,没办法测试啊。要是可以的话通过QQ传个包给我,我好测试。QQ:26816062
以下是我仅能看到的代码:
uses
    JDT;
procedure TYWGNZCT.Button3Click(Sender: TObject);
var
  lCount:Integer;
  lMsg:string;
begin
  //ExcelToTable1.FileName:='D:\mydocument\资产原值.xls' ;
// lCount:=ExcelToTable1.Tables.count;
DataSetBroker1.DataSet.Open;
  ExcelToTable1.Execute(lMsg);
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 11:12 , Processed in 0.048094 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表