使用Ehlib的DBDatetimeEditEh的困惑

秋天之落叶 2018-11-14 10:10:46
控件显示 日期1:DBDatetimeEditEh1 日期2:DBDatetimeEditEh2

数据表显示:DBgridEh1(显示数据表)

结构如上,两个datafield和datasource均设置完成。
单独使用DBDatetimeEditEh1、DBDatetimeEditEh2没有问题,光标离开1后,DBgridEh1中显示DBDatetimeEditEh1录入的时间,光标离开2后,表中显示DBDatetimeEditEh2的录入时间;这时候是不是数据已经保存到缓存中了?没有updateBatch是保存不到数据表中的?
问题:在两个chang或者exit事件中加上
if DBDatetimeEditEh1.text<DBDatetimeEditEh2.text then
begin
DBDatetimeEditEh2.setfocus;
showmessage('1不能小于2');
end;
调试时,假如DBDatetimeEditEh2录入正确,光标离开后,再点击DBDatetimeEditEh2录入随便一个时间,光标离开后均提示“could not convert variant of type(unicodestring) into type (double)”错误,这时候dbgrideh1中的记录并不改变,而是上一次录入时间。(用value替换text也是如此),DBDatetimeEditEh2控件里的时间和DBgridEh1里的时间不一致造成的吗?如何解决这个问题?
另外,发现DBcomboboxeh控件也是这个问题,但是给控件一个判断为空后exit的条件语句后,就能解决。而DBDatetimeEditEh控件判断为空exit却不行,错误提示照旧。
错误提示“不能将类型(unicodestring)转换为类型(double)”有点莫名其妙。难道缓存的值和控件的值感知不一致造成的?
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋天之落叶 2018-11-14
  • 打赏
  • 举报
回复
引用 3 楼 DelphiGuy 的回复:
从很早的版本起(大约D6/D7的时代),通过LiveBindings技术,几乎所有组件都可以作为数据感知组件使用,不需要专门的TDBEdit、TDBGrid...之类,这些实际上是更古老版本的产物,只是为了保持兼容还一直存在着。

我真是孤陋寡闻了
  • 打赏
  • 举报
回复
从很早的版本起(大约D6/D7的时代),通过LiveBindings技术,几乎所有组件都可以作为数据感知组件使用,不需要专门的TDBEdit、TDBGrid...之类,这些实际上是更古老版本的产物,只是为了保持兼容还一直存在着。
秋天之落叶 2018-11-14
  • 打赏
  • 举报
回复
或者说 DBxxx 类的控件适合做录入控件吗?
秋天之落叶 2018-11-14
  • 打赏
  • 举报
回复
新增按键是这样写的
dm1.ADOQ.Close;
dm1.ADOQ.SQL.Clear;
dm1.ADOQ.SQL.Add('select * from 临时表 where 1=2');
dm1.ADOQ.Open;
dm1.ADOQ.Append;

5,388

社区成员

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

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