Delphi6+Oracle8i,插入日期报错!

darkhorsedba 2003-08-21 05:21:54
...
query1.sql.add(insert into tab1(id,date1) values (:id,:date1));
query1.parambyname('id').asinteger:=1;
query1.parambyname('date1').asdate:=DateTimePicker1.date;
query1.excute;
...
报Number ....float...错误(具体记不清了)
搞的头大!
哪位遇到过吗?
...全文
51 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
darkhorsedba 2003-08-26
  • 打赏
  • 举报
回复
shi shi
wjowner 2003-08-25
  • 打赏
  • 举报
回复
直接在Oracle的sqlplus中运行这个SQL会有问题吗?
darkhorsedba 2003-08-25
  • 打赏
  • 举报
回复
确实是日期的问题,把日期去掉后,就没有错误!
delphi中的方法各位都提到了,却是老报错(float溢出)!
看来,可能是我的oracle问题.
ghui 2003-08-24
  • 打赏
  • 举报
回复
报Number ....float...错误(具体记不清了)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
不是因为日期报错吧!
我怀疑与你的Number类型有关系。在Oracle中 Number类型可以支持到 10^308, 而Delphi中仅仅支持到 10^38, 我建议使用 Number(38,26) 替代默认的 Number。
试试看。

Integer => Number(10,0)
fenglaile 2003-08-23
  • 打赏
  • 举报
回复
这样
query1.sql.add(insert into tab1(id,date1) values (:id,to_date(:date1,''yyyy-MM-dd''));
query1.parambyname('id').asinteger:=1;
query1.parambyname('date1').asstring:=datetostr(DateTimePicker1.date);
query1.excute;
可以吗
darkhorsedba 2003-08-23
  • 打赏
  • 举报
回复
query1.parambyname('date1').asdate:=timeDateTimePicker1.date;
就是这样吗?
我都晕了!
bluemeteor 2003-08-23
  • 打赏
  • 举报
回复
刚刚测试一下,我这里没有问题啊,不过我这里只有oracle734:)
darkhorsedba 2003-08-23
  • 打赏
  • 举报
回复
意思就是超出范围的错误!
darkhorsedba 2003-08-23
  • 打赏
  • 举报
回复
date1是date类型的,我单独存放日期也报错。我怀疑是oracle的错,我插入now()都报错!
在db2下用相同的语句都可以.具体的错误代码我手头没有.
与oracle的日期格式有关吗?或须其他的设置?
bluemeteor 2003-08-23
  • 打赏
  • 举报
回复
你的date1是date类型还是datetime类型?
确定肯定是date1字段的插入错误么?怎么会有number报错?
是delphi报错还是oracle报错?把ora-error代码帖出来....
你的表只有这两个字段么?

query1.parambyname('date1').asdatetime:=DateTimePicker1.datetime;
darkhorsedba 2003-08-23
  • 打赏
  • 举报
回复
人呢??
wjowner 2003-08-22
  • 打赏
  • 举报
回复
直接传字符串也不行?
darkhorsedba 2003-08-22
  • 打赏
  • 举报
回复
以上各位,方法都试了,还是不行!
报Number 超出范围!可没有Nubmber ya
wjowner 2003-08-22
  • 打赏
  • 举报
回复
是因为你的数据库里是date型,才要用todate()函数转换啊。你传入字符串,转换过程使用todate()完成。

另外,我曾经试过,如果使用ADO控件,并直接传入字符串类型,格式为YYYY-MM-DD的,可以由数据库系统直接转换格式的。
darkhorsedba 2003-08-22
  • 打赏
  • 举报
回复
直接传字符串?数据库也改为varchar2() 就可以!
否则不行!!
darkhorsedba 2003-08-21
  • 打赏
  • 举报
回复
wjowner(Jerry.W):你得我想应该不行。因为数据库是date类型
darkhorsedba 2003-08-21
  • 打赏
  • 举报
回复
to:denny001()
我昨天是这样了 ,不行!
分有啊!
denny001 2003-08-21
  • 打赏
  • 举报
回复
today没问题
query1.parambyname('date1').asdate:=strtodate(datetostr(DateTimePicker1.date));
这样就行了,不知道为什么,试出来的.
  搂主有分的话多给一点阿,最近分都快用完了,谢谢
darkhorsedba 2003-08-21
  • 打赏
  • 举报
回复
回去试试!数据库定义的是date类型。先谢谢各位了,好了明早来揭帖!
wjowner 2003-08-21
  • 打赏
  • 举报
回复
试试看这样:

query1.sql.add(insert into tab1(id,date1) values (:id,todate(:date1)));
...
query1.parambyname('date1').asString:=FormatDate('YYYY-MM-DD', DateTimePicker1.date);
加载更多回复(3)

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧