使用DBDateTimeEditEh为date类型的字段赋值的错误

秋天之落叶 2018-11-03 10:56:33
一个简单的sql的A表中一个date型字段“业务日期”。
使用DBDateTimeEditEh控件关联表的业务日期,
DBDateTimeEditEh.kind:=dtkDateEh;
DBDateTimeEditEh.DataField := '业务日期';
DBDateTimeEditEh.editformat:='YYYY/MM/DD';

问题:查询出一行数据,显示在DBDateTimeEditEh控件,然后修改DBDateTimeEditEh控件的值,假如显示2018/11/01修改为2018/11/03,修改正常,然后dm.ADOQ.UpdateBatch();
错误提示:Could not convert variant of type (unicodeString) into type (Double)

试过:
DBDateTimeEditEh.text:='2018/11/03';
dm.ADOQ.UpdateBatch();
则正常修改。
换了 DBDateTimeEditEh3.text := FormatDateTime('yyyymmdd', DBDateTimeEditEh3.Value); 也提示上述错误?

尝试保存换成显示:
Memo28.text:=FormatDateTime('yyyymmdd', DBDateTimeEditEh3.Value);
或:Memo28.text:=DBDateTimeEditEh3.text;
也提示上述错误

控件关联数据库后,只要修改DBDateTimeEditEh内容,就会出现错误。

我是哪里用的不对吗?
...全文
205 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋天之落叶 2018-11-04
  • 打赏
  • 举报
回复
不过,很是奇怪的是,我修改回来系统的格式,竟然不提示任何差错了?这是为什么?
代码中没有其他的设置啊,就是一个
DBDateTimeEditEh3.DataField := '业务日期';
其他属性设置完全一样啊?
我晕了,又回到了我上次说的神秘代码怪圈里了?
神奇的是,无论我如何设置,均不在提示错误,好神奇啊
秋天之落叶 2018-11-04
  • 打赏
  • 举报
回复
看来为保证一致,需要在应用中加上一个强制系统转变格式的功能?
我如何可以取得系统格式,而在应用中依照系统格式而转变应用格式呢?
秋天之落叶 2018-11-04
  • 打赏
  • 举报
回复
引用 5 楼 p47655255 的回复:
系统日期格式 设置一下试试

果然,sql的date类型+delphi的elib日期控件,让我头疼了好一阵子,硬是搞不定,设置了一下系统的短格式为yyyy-MM-dd,成了,哈哈哈
谢谢了!
p47655255 2018-11-04
  • 打赏
  • 举报
回复
系统日期格式 设置一下试试
秋天之落叶 2018-11-04
  • 打赏
  • 举报
回复
受教了,以观后效吧
lyhoo163 2018-11-04
  • 打赏
  • 举报
回复
1、DataTime的类型实质是实数,整数部分是日期,小数部分是时分秒
2、DataTime转换的字符类型,有多种格式,操作系统也有默认的格式,在程序中,要转换的顺利的话,就是让系统的格式,与软件使用的格式一致起来。
秋天之落叶 2018-11-03
  • 打赏
  • 举报
回复
引用 1 楼 lyhoo163 的回复:
是日期的格式问题,默认'2018/11/03'。其它格式或空格,就会出错。你要设置好默认的日期格式。

已经设置DBDateTimeEditEh.editformat:='YYYY/MM/DD';
是不是需要自己组成日期字符串?一会试一试
秋天之落叶 2018-11-03
  • 打赏
  • 举报
回复
五.其它DBDateTimeEditEh。从设置DataSource中设定的DataField中,存取的DBGrid中选定字段的日期值。

谁能解释一下这句话的意思?
lyhoo163 2018-11-03
  • 打赏
  • 举报
回复
是日期的格式问题,默认'2018/11/03'。其它格式或空格,就会出错。你要设置好默认的日期格式。
秋天之落叶 2018-11-03
  • 打赏
  • 举报
回复
DBDateTimeEditEh控件真是难搞啊,怎么着都不行,数据库换成nchar()都不行,有请高手提醒一下
Date 对象属性constructor 返回对创建此对象的 Date 函数的引用。prototype 使您有能力向对象添加属性和方法。Date 对象方法getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。getFullYear() 从 Date 对象以四位数字返回年份。getHours() 返回 Date 对象的小时 (0 ~ 23)。getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。getMonth() 从 Date 对象返回月份 (0 ~ 11)。getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。getTime() 返回 1970 年 1 月 1 日至今的毫秒数。getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。getYear() 已废弃。 请使用 getFullYear() 方法代替。parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。setFullYear() 设置 Date 对象中的年份(四位数字)。setHours() 设置 Date 对象中的小时 (0 ~ 23)。setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。setMonth() 设置 Date 对象中月份 (0 ~ 11)。setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。setTime() setTime() 方法以毫秒设置 Date 对象。setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。setUTCSeconds() setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段。setYear() 已废弃。请使用 setFullYear() 方法代替。toDateString() 把 Date 对象的日期部分转换为字符串。toGMTString() 已废弃。请使用 toUTCString() 方法代替。toISOString() 使用 ISO 标准返回字符串的日期格式。toJSON() 以 JSON 数据格式返回日期字符串。toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。toLocaleString() 据本地时间格式,把 Date 对象转换为字符串。toString() 把 Date 对象转换为字符串。toTimeString() 把 Date 对象的时间部分转换为字符串。toUTCString() 根据世界时,把 Date 对象转换为字符串。UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。valueOf() 返回 Date 对象的原始值。

5,388

社区成员

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

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