pb datawindow retrieve 怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pb datawindow retrieve 怎么用相关的知识,希望对你有一定的参考价值。

Retrieve()
功能:让数据窗口控件从数据库中提取数据。如果为该函数提供了参数,那么这些参数的值将用作数据窗口的对象SQL SELECT语句的提取参数。
语法:dwcontrol.Retrieve ( , argument, argument . . . )
参数:dwcontrol:数据窗口控件名

argument:向数据窗口对象的SQL SELECT语句提供的检索参数
返回值:Long。函数执行成功时,返回显示在数据窗口中的数据行的行数(即主缓冲区的数据行数);函数执行失败时返回-1。如果任何参数的值为NULL,则Retrieve()函数返回NULL。
用法:使用Retrieve()函数检索出数据之后,系统自动执行数据窗口对象的过滤条件,不满足过滤条件的行被立即移动到过滤缓冲区中,Retrieve()函数返回的行数不包括移动到过滤缓冲区中的行。

在执行Retrieve()函数之前,必须用数据窗口控件的对象函数SetTransObject()或SetTrans()为数据窗口控件设置事务对象。当使用SetTransObject()函数时,在调用之前,需要使用嵌入式SQL语句CONNECT建立事务对象与数据库的连接。

下,执行Retrieve()后,数据窗口中原有的数据被丢弃,并用新的数据来取代。如果想改变这种缺省操作,那么可以通过在数据窗口控件的RetrieveStart事件中编写代码来实现,方法很简单,只要在该事件的事件处理程序中放上语句:Return 2即可。这时,Retrieve()检索出的数据增加到数据窗口原有数据的后面。

如果数据窗口控件中的数据窗口对象需要检索参数,而Retrieve()函数中又没有提供这些参数,那么执行Retrieve()函数时,系统将显示一个对话框,让用户键入检索参数的取值。
Exp1:不带参数的Retrieve
long ll_rows
dw_main.SetTransObject(SQLCA)
ll_rows = dw_main.Retrieve()
IF ll_rows < 1 THEN MessageBox( "数据库错误", "没有检索到数据。")
Exp2:带参数的Retrieve
假定数据窗口控件dw_emp中的数据窗口对象使用下面的SQL SELECT语句:SELECT Name, emp.sal, sales.rgn From Employee
WHERE emp.sal > :Salary and sales.rgn = :Region
那么下面的语句使数据窗口控件dw_emp1从数据库中提取salary大于50000且地区值为北京的数据:
dw_1.Retrieve(50000, "北京")

希望对你有所帮助!:-)
参考技术A 数据窗口和数据库建立连接,分配空间,然后retrieve显示数据

PB做大屏显示滚动窗口

前段时间接到一个同事的求助

一个客户需求做门诊已完成报告通知取单的大屏显示界面

百度了一下,其实很简单

实现方法如下

 

1.用要显示数据的sql语句做成数据窗口(datawindow);

2.在窗体(window)中嵌入window;

3.在窗体的open事件中加入timer事件;

4.在timer事件中对datawindow进行操作,用datawindow的scrolltorow方法滚动到对应行;

5.当滚动到对应行大于等于datawindow的rowcount是滚动行重新回到第一行;

 //窗口滚动的方式,如跑马灯的方式等都可以优化完美一点,但因为事件和能力的原因就不搞了

以下是一些代码

open事件

 

// Profile local_lis

 

//f_resize()

 

sqlca = create transaction

SQLCA.DBMS = ProfileString (‘sf.ini‘,  ‘Database‘, "DBMS",   "")

SQLCA.Database = ProfileString (‘sf.ini‘,  ‘Database‘, "Database",   "")

SQLCA.LogPass = ProfileString (‘sf.ini‘,  ‘Database‘, "LogPassword",   "")

SQLCA.ServerName = ProfileString (‘sf.ini‘,  ‘Database‘, "Servername",   "")

SQLCA.LogId = ProfileString (‘sf.ini‘,  ‘Database‘, "Logid",   "")

SQLCA.AutoCommit = False

SQLCA.DBParm = ""

 

connect using sqlca;

string ls_title

int li_speed

ls_title = ProfileString (‘sf.ini‘,  ‘Scroll‘, "title",   "")

ii_num = integer(Profilestring (‘sf.ini‘,  ‘Scroll‘, "date_num",   ""))

li_speed = integer(Profilestring (‘sf.ini‘,  ‘Scroll‘, "speed",   "3"))

st_2.text = ProfileString (‘sf.ini‘,  ‘Scroll‘, "text1",   "")

st_3.text = ProfileString (‘sf.ini‘,  ‘Scroll‘, "text2",   "")

 

it_date = relativedate(today(),ii_num)

if ls_title <>‘‘ then st_1.text = ls_title

dw_1.settransobject(sqlca)

 

dw_1.retrieve(datetime(relativedate(today(),ii_num),time(00:00:00)))

//messagebox(‘‘,string(datetime(relativedate(today(),ii_num),time(00:00:00))))

//if dw_1.retrieve() = 

ii_i =0

timer(li_speed)

 

timer事件

int li_i
li_i = dw_1.rowcount()
int i = 0

dw_1.scrolltorow(ii_i)

ii_i = ii_i + 3

if ii_i > li_i +3 then
 ii_i = 0
 dw_1.retrieve(datetime(relativedate(today(),ii_num),time(00:00:00)))
 sleep(2)
 
   li_i = dw_1.rowcount()
end if

转载自【http://blog.sina.com.cn/s/blog_6c99d4e90102vdi0.html】

以上是关于pb datawindow retrieve 怎么用的主要内容,如果未能解决你的问题,请参考以下文章

PB SetFilter() 函数用法及注意事项

PB data window 窗口报错提示:an arggument used in the select is not defined 为啥会报错,怎么解决

pb 数据窗口中的 setsqlselect() 函数

【求助】pb 数据窗口中某一字段的dropdown内容筛选

java中怎么判断一个对象是否为空

pb输窗设置默认值