我使用SQL数据库,字段为DateTime类型程序中,我使用ADOTable组件连接SQL表,在设计字段时,DisplayFormat设置为hh:mm
EditMask设置为!90:00;1;_
则在程序运行时,会出现,假设我数据库内部的内容为:21:33:00
则在显示时正确为:21:33
当鼠标点击时,则会变成21:00
分钟部份则变成了秒钟,
真奇怪啊。
请高手解决, 我在网上查找了很久,也没有找到解决方法。不过,同样也有人遇到过。
I've put a dbedit on my form. in editmask i set dbedit to !90:00;1;_
and the display format to hh:nn.when i click in my dbedit then 18:25 turns into 18:00 or 19:15 turn
into 19:00 when i click away from dbedit it turns normal again..How is this happening and how can i solve that?TX anyone ,anywhere, anyhow, anytime

解决方案 »

  1.   

    一般不采用DisplayFormat,
    常用的做法是在字段 getText setText设定显示方式
    如在gettext
      if not Sender.ISnull then
        text := FormatDateTime('hh:nn',Sender.AsDateTime)editmask 设置为##:##
      

  2.   

    一般我先将字符串格式化后再用TEdit显示,有时候觉得MaskEdit用得不顺手。
      

  3.   

    个人认为MaskEdit很垃圾,一点使用价值也没有
      

  4.   

    换普通edit吧,那样方便而且稳定
      

  5.   

    我没有使用MaskEdit,我直接是使用DBEdit啊
      

  6.   

    换普通的edit,录入要写很多代码,而且回显也要写代,这样不方便
      

  7.   


    你错了,如果 你想做一个健壮的程序,就不要用db控件,db控件是很多初学者为了图省事,摆几个控件来显示数据用的,咱可不能这样呀
      

  8.   

    对于以上观念,我并不赞同,因为有简单的东西,为什么非得弄一个复杂的东西来弄。
    对于大量的录入,不采用DB控件,要在程序处理上处理许多东西不直接与数据保持连接是最理想,但是一个内网,连不连,没有任何关系。你讲的属于BS的模式方面吧。以上言论,没有偏见,只是个人所想。
      

  9.   


    当然,如果程序比较小,绑定的方式处理起来比较方便;
    即使在一个网内,用户多的情况下对于服务器的来说,与数据源保持连接也是一种负担。有点跑题了,楼主可以看看TMaskEdit的具体用法。但我还是建议用TEdit的好。
      

  10.   

    逸帆(39034261)  22:34:52
    帮忙一下 
    逸帆(39034261)  22:35:04
    我以前的老项目都没有这个问题 
    逸帆(39034261)  22:35:08
    一样的用法 
    Arthur(阿胜)(34334055)  22:35:15
    你的问题 不清楚,从来不用DBEdit
    cjc(3768605)  22:35:27
    那把老项目拷贝过来试试啊 
    逸帆(39034261)  22:35:29
    晕 
    cjc(3768605)  22:35:50
    看来大家都没有用DBedit的习惯啊 
    逸帆(39034261)  22:35:53
    我数据库的格式都变了,数据库都换了啊 
    Arthur(阿胜)(34334055)  22:35:55
    除了 TADOXX 其他 BDE什么的从不用
    cjc(3768605)  22:36:08
    你到底有多少个字段要编辑啊? 
    逸帆(39034261)  22:36:15
    几十个吧 
    逸帆(39034261)  22:36:44
    问题倒也是有解决办法,使用Elib的组件就可以 
    cjc(3768605)  22:37:25
    能解决不就得了 
    Arthur(阿胜)(34334055)  22:37:55
    你从TDBEdit派生一个不就是了
    逸帆(39034261)  22:39:19
    呵呵,不是我是不想使用第三方组件啊 
    Arthur(阿胜)(34334055)  22:43:22
    Arthur(阿胜)(34334055)  22:37:55
    你从TDBEdit派生一个不就是了
    逸帆(39034261)  22:43:51
    派生一个,本质上没有解决问题 
    Arthur(阿胜)(34334055)  22:43:58
    应该在getXXX事件中 可以解决
    逸帆(39034261)  22:44:24
    Get事件是可以 
    逸帆(39034261)  22:44:43
    每我每个表,有几十个这样的字段,这样做,也太麻烦了 
    Arthur(阿胜)(34334055)  22:45:16
    所以,让你派生一个 就全解决了
    Arthur(阿胜)(34334055)  22:45:21
    :)
    逸帆(39034261)  22:45:24
    :)
     
      

  11.   

    给lz个建议,你可以按照下面两个方法调试下1.数据库用到时间类型的时候 在查询语句执行后出来后最好做时间格式设置:
    比如
    ADOQuery.Open;
    后面紧接着
    //时间格式设置
     TDateTimefield(FieldByName('你的字段')).DisplayFormat := 'hh:mm:ss';2.用TMaskEdit的使用一般用它的EditText属性取值,尤其是有掩码时,比如
      TMaskEdit.EditText := FieldByName('你的字段').AsString;