PB设置机器时间提示error c0001:illegal data type:systemtime

PB设置机器时间提示error c0001:illegal data type:systemtime,第1张

你可能需要先定义systemtime 这个structure, 因为PB本身是没有这种类型的

以下是例子

Structure: (SystemTime)

uint year, uint month, uint dayofweek, uint day, uint hour, uint minute, uint second, uint millisecond

数据窗口名 dw_a

数据窗口列名 a_date

筛选语句应为

如取时间类型:

datetime Ldt_date

Ldt_date=dw_aobjecta_date[行号]

如取字符类型:

string Ls_date

Ls_date="2013/12/24"或者Ls_date=string(date(Ldt_date),'yyyy/mm/dd')

dw_asetfilter("a_date>'"+Ls_date+"'")

dw_afilter()

RelativeDate()

功能得到指定日期前多少天或后多少天的日期。

语法RelativeDate(date,n)

参数date:Date类型,指定基准日期n:integer类型,指定天数返回值Date。当n的值大于0时返回参数date指定日期后第n天的日期;当n的值小于0时返回参数date指定日期前第n天的日期。如果任何参数的值为NULL,则RelativeDate()函数返回NULL。

30天就用RelativeDate(today(),30)

可能要自己写一个函数来实现,我看pb9有relativedate,relativetime这两个函数,前者是日期加天数的,后者是时间加秒数的

你可以先将你的datetime数据分别转换成date和time,再通过relativetime 加上相应的秒数,还需判断加上小时后是否超过24,如超过则日期需加1

大致写法如下:其中ld_sdate ,ll_addhours可作为函数的参数

datetime ldt_sdate

date ld_sdate

time lt_stime

long ll_addhours,ll_day,ll_hours

ldt_sdate = '2012-12-03 16:30'

ll_addhours = 8

ld_sdate = date(ldt_sdate)

lt_stime = time(ldt_sdate)

ll_day = int(ll_addhours / 24) --如时间超过24小时则可先算出增加的天数

ll_hours = mod(ll_addhours / 24)

if ll_hours + hour(lt_time) > 24 then

ll_day ++

end if

ldt_edate = datetime(relativedate(ld_sdate,ll_day),relativetime(lt_time,ll_hours 60 60))

global function string uf_firstday ();string ls_date

date ld_today

ld_today=date(today())

choose case month(ld_today)

case 1 to 3

ls_date=string(year(ld_today))+"-01-01"

case 4 to 6

ls_date=string(year(ld_today))+"-04-01"

case 7 to 9

ls_date=string(year(ld_today))+"-07-01"

case 10 to 12

ls_date=string(year(ld_today))+"-10-01"

end choose

return ls_date

end function

取该季度第一天

global function string uf_lastday ();string ls_date

date ld_today

ld_today=date(today())

choose case month(ld_today)

case 1 to 3

ls_date=string(year(ld_today))+"-03-31"

case 4 to 6

ls_date=string(year(ld_today))+"-06-30"

case 7 to 9

ls_date=string(year(ld_today))+"-09-30"

case 10 to 12

ls_date=string(year(ld_today))+"-12-31"

end choose

return ls_date

end function

取该季度最后一天

(1)DeclareInstance Variables——Declare ——Instance Variables

//声明实例变量string is_sql

(2)窗体加载事件:w_query——open()事件中

//数据窗口dw设置连接事务sqlcadw_querysettransobject(sqlca)//让数据窗口控件从库中提取数据//dw_queryretrieve()//得到原始语法,为检索做准备is_sql = dw_querygetsqlselect()

3)查询cb_query——Clicked()事件:

string ls_start,ls_end ,ls_select

string ls_left ,ls_right//得到开始和结束时间ls_start = em_starttextls_end = em_endtextls_select = ''// 开始时间if not isnull(ls_start) and ls_start <> "" and lower(ls_start) <> 'none' then

ls_select = ls_select + " convert(char(10),抵店时间,120) >= '" + ls_start + "'"end if// 结束时间if not isnull(ls_end) and ls_end <> "" and lower(ls_end) <> 'none' then if ls_select = "" then

ls_select = " convert(char(10),抵店时间,120) <= '" + ls_end + "'"

else

ls_select = ls_select + " AND convert(char(10),抵店时间,120) <= '" + ls_end + "' "

end ifend if拼SQL语句

ls_select = is_sql + ' where ' + ls_selectif ls_select <> '' then //赋值SQL语句

dw_querysetsqlselect(ls_select)

end ifdw_queryretrieve() //检索数据

昏~中考也要用pb

我不是用pb的

但是我知道SQL语句可以用

select col1,col2

from table

where to_char(col_date,'YYYYMMDD') between '20060101' and '20060526'

以上就是关于PB设置机器时间提示error c0001:illegal data type:systemtime全部的内容,包括:PB设置机器时间提示error c0001:illegal data type:systemtime、PB要怎样才能按照数据窗口中有时间的一列来检索、pb中如何获取当前时间的30天之后的日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9699117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存