遇到datawindow难题,初学者求助!

lanshantutu 2003-09-09 09:42:05
要根据表table1做出数据窗,表中字段如下:
ID char 17 (不能为空)
TIME datetime
OPID char 15

TIME的值格式为yyyy-mm-dd hh:mm:ss,例TIME="2003-09-09 09:28:56"
ID为17位,前12位为年月日时分,后5位为随机生成,例ID="20030909092812345"
OPID则为一个15位的随机数;
现在要求根据时间段来检索数据,即在form中用em_1、em_2来取一个时间段来查询数据窗中的数据,而数据窗中要求显示在一定的时间段内的以小时为时段的时段、OPID数,数据窗要求显示如下:

从 (em_1的时间) 到 (em_2的时间)
-------------------------------------------
时段 OPID数
2003-09-09 00 2
2003-09-09 01 6
: :
: :

初学者愚笨,请教大家该怎么做啊?很急!多谢了
...全文
55 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanshantutu 2003-09-10
  • 打赏
  • 举报
回复
在这里,TIME字段为datetime类型,将“convert(char(13), datetime, 120)”写在datawindow的语法里,会报错“120 is not a valid style number when converting from DATETIME to a character string.Do you want to corvert errors?”,所以格式还是没有转换过来,写在按钮的clicked事件里,没有作用,不知道到底怎么转换格式,请大家再帮忙看看,多谢了!
liujiaqiang 2003-09-09
  • 打赏
  • 举报
回复
select convert(varchar(13), time, 120) , count(opid)
from andy group by convert(varchar(13), time, 120)
happy_0325 2003-09-09
  • 打赏
  • 举报
回复
convert(varchar(13), time, 120)这是sql的函数
你把语句写到字符串中。
string sql
sql=''
execute immediate :sql;
lanshantutu 2003-09-09
  • 打赏
  • 举报
回复
convert(varchar(13), time, 120)
中的120是什么意思?为什么我这样写会出错,结果我去掉120,时间段的格式就变成“Sep 09 2003 1”,而且应该为“Sep 09 2003 0”的就变成“Sep 09 2003 ”,这个格式怎么转化呢
jdsnhan 2003-09-09
  • 打赏
  • 举报
回复
我晕!还以为在em_2下面要显示一些东东呢 ?
如果不是,就好办了,和小强说的原理差不多。
根据两个时间段检索,然后按小时段分组。
select count(opid) from tabel
where to_char(TIME,'yyyymmdd') >= :ls_bdate and to_char(time,'yyyymmdd')
group by substr(time,9,2);
这是oracle的语句,你略微改动一下吧。
andyzq 2003-09-09
  • 打赏
  • 举报
回复
其实方法是一样的,只要把时间字段转换成字符型的,并从小时部分截断,成为
2003-09-09 00, 2003-09-09 01 这样的格式,再加上sql语句即可

select 截断的时间,count(opid)
from andy
where time > em_1time and time < em2time
group by 截断的时间

sybase数据不熟,你按照上面的思路改一改就可以了
andyzq 2003-09-09
  • 打赏
  • 举报
回复
sql server数据库可以这样写:

select convert(varchar(13), time, 120), count(opid)
from andy
group by convert(varchar(13), time, 120)

在查询分析器和datawindow中都可以直接用
lanshantutu 2003-09-09
  • 打赏
  • 举报
回复
sybase数据库
其实就是在form上选择一个时间段,起始时间为em_1的时间,终止时间为em_2的时间,然后点击“查询”按钮,然后form上的数据窗口就会根据所选择的时间段来显示相应的内容;
----------------------------------------------

从(em_1的时间)到(em_2的时间)
-------------------------------------------
时段 OPID数
2003-09-09 00 2
2003-09-09 01 6
: :
: :
em_2的时间的具体显示。
-----------------------------------
em_2的时间的具体显示为yyyy-mm-dd,例2003-09-09
andyzq 2003-09-09
  • 打赏
  • 举报
回复
sql server数据库可以这样写:

select convert(varchar(13), time, 120), count(opid)
from andy
group by convert(varchar(13), time, 120)

在查询分析器和datawindow中都可以直接用
andyzq 2003-09-09
  • 打赏
  • 举报
回复
什么数据库?
jdsnhan 2003-09-09
  • 打赏
  • 举报
回复
请楼主贴出:
从 (em_1的时间) 到 (em_2的时间)
-------------------------------------------
时段 OPID数
2003-09-09 00 2
2003-09-09 01 6
: :
: :
em_2的时间的具体显示。
andyzq 2003-09-09
  • 打赏
  • 举报
回复
convert(char(13), datetime, 120)
中的char(13)表示把字段datetime转换为长度为13的char类型数据,你把长度改为14即可.
120表示时间的格式
查看帮助中对convert的说明可以看到所有的时间格式的说明
lanshantutu 2003-09-09
  • 打赏
  • 举报
回复
convert(char(13), datetime, 120)写在数据窗的语法中,出错,无法保存,写在查询按钮的事件中,好像没有效果,格式还是没有改过来,怎么设置该列的editmask呢?
hanps 2003-09-09
  • 打赏
  • 举报
回复
convert(char(13), datetime, 120)
workhand 2003-09-09
  • 打赏
  • 举报
回复
怎么把数据窗上时间段(Sep 09 2003 0)的显示格式改为2003-09-09 01 呢?
//设置该列的editmask
还有,怎么在数据窗上显示em_1和em_2的值呢?
//加两个计算列,赋值就行了。
lanshantutu 2003-09-09
  • 打赏
  • 举报
回复
怎么把数据窗上时间段(Sep 09 2003 0)的显示格式改为2003-09-09 01 呢?

还有,怎么在数据窗上显示em_1和em_2的值呢?请大家帮忙看看!
lanshantutu 2003-09-09
  • 打赏
  • 举报
回复
还是不行,格式还是没有变过来

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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