起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 186|回复: 8

【结】sql语句&Tdataedit控件

[复制链接]
发表于 2009-11-11 15:22:18 | 显示全部楼层 |阅读模式
一个Tdateedit控件关联数据集中的一个日期时间类型的字段。
发现如果写这样的代码:
DsbSLA.DataSet.Close;
  Tsqldataset(DsbSLA.DataSet).SQL.Clear;
  Tsqldataset(DsbSLA.DataSet).SQL.Text:='select * from FWJBXYB where FWJB='''+combobox1.Text+'''  order by SLAJSSJ desc';
    DsbSLA.DataSet.Open;
  DsbSLA.DataSet.Edit;
这个控件表现正常,带有下拉按钮,我可以下拉选择时间,但是如果我把sql语句那句改为:
Tsqldataset(DsbSLA.DataSet).SQL.Text:='select * from (select * from FWJBXYB where FWJB='''+combobox1.Text+'''  order by SLAJSSJ desc) where rownum=1';
这样的话,这个Tdataedit的控件的表现就有点不正常了,就没有下拉按钮了。我要取查询出来的记录的第一条的,怎样才能让那个Tdataedit控件的下拉按钮出来呢?
回复

使用道具 举报

发表于 2009-11-11 15:37:40 | 显示全部楼层
你是说SQL里套了一层之后,日期型字段就不能表现到控件上了吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-11 15:52:24 | 显示全部楼层
恩,是的。就是这个问题。
回复 支持 反对

使用道具 举报

发表于 2009-11-11 16:07:12 | 显示全部楼层
你在修改的SQL语句里定好字段,然后在数据集的字段编辑器里设置这个字段的来源字段,平台就认了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-11 16:32:23 | 显示全部楼层
不明白你说的意思。
底层数据库是oracle数据库。下面这句话是可以在oracle数据库中执行的。
'select * from (select * from FWJBXYB where FWJB='''+combobox1.Text+'''  order by SLAJSSJ desc) where rownum=1';
其中rownum这个东西是oracle特有的。
回复 支持 反对

使用道具 举报

发表于 2009-11-11 16:42:04 | 显示全部楼层
我个人认为是这样的,TDataEdit是可以对关联的数据集直接进行编辑的,当你的数据集的sql再套一层,就不能直接对数据的数据来编辑。所以那个控件就不显示编辑那个下拉按钮了。
回复 支持 反对

使用道具 举报

发表于 2009-11-11 16:42:45 | 显示全部楼层
你把Tdateedit连接那字段作为数据字段添加到数据集的字段编辑器里,然后设置这个数据字段的来源字段
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-11 16:49:06 | 显示全部楼层
把sql语句更改为:  
Tsqldataset(DsbSLA.DataSet).SQL.Text:='select a.* from FWJBXYB a,FWJBXYB b where a.bh=b.bh and b.FWJB='''+combobox1.Text+''' and a.SLAJSSJ=(select max(SLAJSSJ) from FWJBXYB b)';
这样我说的问题就解决了,结贴吧。
回复 支持 反对

使用道具 举报

发表于 2009-11-11 17:47:05 | 显示全部楼层
收到,谢谢楼主共享解决方法
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-14 18:29 , Processed in 0.039744 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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