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 怎么用的主要内容,如果未能解决你的问题,请参考以下文章