推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

PB常用功能和用法解析

   2023-08-25 网络整理佚名2230
核心提示:不要在数据窗口控件的事件处理程序中调用()函数。用法:如果在说明Blob类型的变量时指定了变量长度,那么对该变量来说,Len()函数得到的就是这个指定的长度。//清除数据窗口dw_1的数据过滤的条件,类型,条件即为sql语句where后面的内容用法:与()配合使用,在设置了排序格式后,使用此函数进行排序word、long:这两个参数不是必须的,用来传递long或者类型的数据。

。 ( )(:数据窗口控件名称)

返回值:成功返回1,错误返回-1

笔记:

插入之前,需要对编辑框中的内容进行有效性规则检查;

不要在 控件的事件处理程序中调用 the() 函数。 ()函数还可能触发数据窗口控件的 或 事件。

choose case weight
case ls< 16
Postage=Weight*0.30
CASE ELSE
Postage=25.00
choose end

Close 事件触发之前执行的最后一个事件,并且该事件发生在 Close 事件触发之前。

举办活动是为了增强可靠性。 通常在该事件中判断某项工作是否完成,并显示一个提示窗口询问用户,根据用户的确认,返回一个值来确定是否触发窗口的Close事件。

返回值为1,表示取消关闭动作; 返回值为0,表示继续执行Close事件。


Int li_flag
//如果数据窗口中没有修改,则允许执行Close,直接返回
If dw_user.ModifiedCount() <= 0 And dw_user.DeletedCount() <= 0 Then Return 0
//如果数据窗口有修改,询问用户是否保存
li_flag = MessageBox("提示","数据已经修改,是否保存?",question!,yesnocancel!,1)
Choose Case li_flag //根据用户选择执行
Case 1     //用户选择要保存数据
If dw_user.Update() = 1 Then   //如果修改数据成功
Commit;
//提交
Return 0    //继续执行Close事件
Else            //修改数据不成功
Rollback;
//回退事务
li_flag = MessageBox("提示","数据错误,是否继续关闭!",question!,yesnocancel!,2)         //显示错误
If li_flag = 1 Then
Return 0 //允许关闭
Else
Return 1 //不允许关闭
End If
End If
Case 2 //用户选择不保存数据
Rollback;
//回退事务
Return 0              //允许执行Close事件
Case 3                 //用户选择取消
Return 1              //不允许关闭
End Choose    //用户所有的选择情况处理完毕

(要关闭的窗口,“要返回的值”)

要返回的值存在,获取方法如下:接收返回值 = 。

例:closewithreturn(parent,'abc123')
-------------------------------
String s
s = Message.StringParm

使用数据窗口源代码创建数据窗口对象,并将该对象放入指定的数据窗口控件或数据存储对象中。 此动态数据窗口对象不会成为应用程序源库的永久部分。

string error_syntaxfromSQL, error_create
string new_sql, new_syntax
new_sql = 'SELECT emp_data.emp_id, ' &
+ 'emp_data.emp_name ' &
+ 'from emp_data ' &
+ 'WHERE emp_data.emp_salary>45000'
new_syntax = SQLCA.SyntaxFromSQL(new_sql, &
'Style(Type=Form)', error_syntaxfromSQL)
IF Len(error_syntaxfromSQL) > 0 THEN
// Display errors
mle_sfs.Text = error_syntaxfromSQL
ELSE
// Generate new DataWindow
dw_new.Create(new_syntax, error_create)
IF Len(error_create) > 0 THEN
mle_create.Text = error_create
END IF
END IF
dw_new.SetTransObject(SQLCA)
dw_new.Retrieve()

使用创建对象

用法=

transaction DBTrans
DBTrans = CREATE transaction
DBTrans.DBMS = 'ODBC'

dbcol = dw_1.Object.emp_id.dbName

如果()+()>0,则表明数据窗口有操作

Dw_1.describe(“colname.coltype”) 返回string

创建对象后销毁对象用关键字

是数据窗口对象,数据窗口是即时写入的

string ls_name,ls_staffcode
choose case dwo.name
  case 'xf_staffcode'
  ls_staffcode = trim(data) 
  If gnv_data.of_Havevalue( ls_staffcode ) Then
  select xf_name into :ls_name
  from xf_staff
  where xf_staffcode = :ls_staffcode
  using itrans_current;
  this.setitem(row,'xf_name',ls_name)
end choose

dw_1.getitemstring(1,3) //取得第2行,第4列的值(行列起始从0开始标)

dw_name.getsqlselect()

idle(60) //如果60秒没有操作的话就触发application对象的idle事件

// 用法:
dw_1.insertrow(cur_row) //其中,dw_1为datawindow控件名,cur_row为一具体的行号,在该行前插入一新行。
// 例子:
dw_1.insertrow(4) //将在第4行前插入一条空记录

数据类型:int类型包装类,属于

功能:可以将字符串转换为类型

// 用法:
integer( string a )
// 例子:
integer('123') //把字符串‘123’转换为整数类型

// 用法:
isnull( any ) // any为任意类型变量
// 例子:
string ls_a
isnull(ls_a) //判断ls_a是否为空

// 用法:
isnumber(any) //判断变量any是否为数字,是的话返回true
// 例子:
int a 
string b
a = 123
b = 'abc'
isnumber(a) //返回true
isnumber(b) //返回false

// 用法:
isnumber(any) //判断变量any是否为数字,是的话返回true
// 例子:
int a 
string b
a = 123
b = 'abc'
isnumber(a) //返回true
isnumber(b) //返回false

if dw_1.modifiedcount()+dw_1.deletedcount()>0 then
.......//数据窗口处于修改状态
end if

// 用法:
if(true\false,'为true时返回的值','为false时返回的值',)
// 例子:
if(isrownew(),'新',if(isrowmodified(),'改','旧'))

// 用法:
dw_1.isselected(rownumber)
// 例子:
dw_name.isselected(用循环语句检查每一行是否被选择li_row)

用法:

获取Blob类型变量的数据长度(以字节为单位)。

Len(斑点)

参数: blob:Blob类型变量。

返回值:长整型。

函数执行成功时返回blob变量的长度,发生错误时返回-1。 如果任何参数的值为 NULL,Len() 函数将返回 NULL。

用法:如果在描述Blob类型的变量时指定了变量长度,那么对于该变量,Len()函数获取指定的长度。 如果声明变量时没有指定变量长度,则在赋值时调整长度,未赋值的Blob类型变量的长度为0。

// 用法:将字符串中的大写字母转换为小写字母。
Lower(string)  //转换为小写

// 用法:
string dwcontrol.Modify  ( string modstring ) //参数都用string类型传入
// 例子:
dwcontrolname.Modify ( "DataWindow.Color='long'" )

// 用法:
open(windowname)
// 例子:
open(w_1)

用法:

关闭窗口时使用,编辑按钮中的代码,使用close()关闭按钮所在窗口

例子:

close() //关闭当前组件所在窗口

用法:

pos ( , {, start } ) // 从此字符串开始搜索,要搜索的字符串,long 从哪个字符开始搜索

long p1,p2
p1 = pos('aabcdaee','a',0) //返回值为0,字符串下标从1开始,不存在时返回0
p2 = pos('aabcdaee','a',3) //返回值为6

用法:

数据窗口名称.print() 打印该数据窗口的内容

例子:

.print() //打印错误窗口的错误信息

用法:

('文件名,可以包含路径', '主字节', '主字节下的关键字', '如果没有找到数据则返回的数据')

例子:

//读取数据库的名称和密码

SQLCA。 = ('setup.ini','','','')

SQLCA。 = ('setup.ini','','','')

用法:( , 开始, n, )

:类型,指定用于替换部分内容的字符串;

start:long类型,指定开始替换字符串的字符位置,字符串中第一个字符为1,一个汉字占两个位置

n:long类型,指定替换多少个字符;

:类型,指定用哪个字符串来替换部分字符。

返回值:. 函数执行成功时返回替换后的字符串,发生错误时返回空字符串("")。 如果任何参数的值为 NULL,则 () 函数返回 NULL。

注意:替换中文时,一个汉字的长度为两个字节,占据两个位置。如果位置或长度错误,会造成乱码

String name
        Name= ”春眠不倔小”
        Name= Replace(Name , 7 , 4 , “觉晓”)

用法:.reset()清除数据窗口控件dw_1中的数据。

例: dw_1.reset() //清除数据窗口dw_1的数据

用法:。()

里面可以有参数变量,但必须与数据窗口中定义的类型和顺序相同

注:在()和reset()之前,初始化数据窗口

dw_1.retrieve() //强制dw_1数据窗口控件从数据库读数据,即从数据库中检索数据。

用法:右( s, long n)

有中英文双字节输入时使用()

(1) 该函数从字符串的右端取出指定数量的字符。

(2) 语法右 ( , n )

(3)参数:type,指定提取子串的字符串n:long类型,指定子串的长度并返回值。

当函数执行成功时,它返回字符串右侧的n个字符,当发生错误时,它返回一个空字符串(“”)。 如果任何参数的值为 NULL,则 Right() 函数返回 NULL。 如果 n 的值大于字符串的长度,则 Right() 函数将返回整个字符串,而不添加其他字符。

String s,r1,r2
s = "春眠不觉晓"
r1 = rightw(s,1) //返回 '晓'
r2 = right(s,2) //返回 '晓'

用法:{使用交易名称};

注意点不能省略,最好用交易名称

示例:使用 sqlca;

用法:。()

数据窗口控件名称.()

返回值:长整型。 当函数执行成功时,返回主缓冲区中的数据行数,发生错误时返回-1。 如果 的值为 NULL,则 () 函数返回 NULL。

// 例 1. 下面的代码得到数据窗口控件 dw_Employee 中当前可用行的行数:
long NbrRowsNbrRows = dw_Employee.RowCount()
// 例 2. 下面的代码检测用户是否已经滚动到数据窗口控件的末尾。它通过将数据窗口主缓冲区中的行数与数据窗口对象的 LastRowonPage 属性相比较来得到:
dw_1.ScrollNextPage()
IF dw_1.RowCount() = Integer(dw_1.Describe("DataWindow.LastRowOnPage")) THEN
. . . //  所需的其它处理
END IF

用法: .(起始行、结束行、缓冲区、要复制到的另一个窗口名称、要插入到哪一行之前、要插入哪个缓冲区)

用法:移动行 ( )

.(起始行、结束行、缓冲区、要移动到的另一个窗口名称、要插入到哪一行之前、要插入哪个缓冲区)

还可以在同一数据窗口的不同缓冲区中移动行

// 如从删除缓冲区移动行到主缓冲区实现恢复功能:
dw_name.rowsmove(1,dw_name.deletedcrount(),delete!,dw_name,1,primary!)

用法: dw_1.(,, )

参数:dw_1为控件名称,

是导出的文件名,

对于导出的文件类型,

是否保存标题。

// 将数据窗口中的数据保存到d盘,取名为cs的文件。要求带标题。
Dw_1.saveas(“d:\cs.txt”,text!,true) // true为带标题。False为不带标题。

用法: .() \向后滚动一页

用法:通常与插入新行结合使用

.(.(0)) \滚动到插入的行

int row
row = dw_1.insertrow(0)
dw_1.scrolltorow(row)

用法: 。 (长排,)

:数据窗口,或子数据窗口。

lrow:long类型,选中或取消选中的数据行的行号。 如果该参数为0,则表示对所有数据行进行操作。

:类型,值为True表示选择指定数据行(无论执行函数之前是否选择); 值为 False 表示取消选择指定的数据行(无论在函数执行之前是否未选择)。

返回值:函数执行成功则返回1,执行失败则返回-1,任意参数为空则返回Null。

注意:该函数的执行不会改变当前数据行。 也就是说,如果第二行是当前数据行,则执行dw_1.(5)等函数后,第二行仍然是当前数据行。

// 选择多行的案例,按住ctrl则多行取消、选择,按住shift则选中开始和最后的行
int row
row = dw_1.insertrow(0)
//显示
dw_1.scrolltorow(row)
long ll_Start, ll_End, ll_index
if Row < 1 then return
if KeyDown(KeyControl!) then
if This.IsSelected(Row) then
This.SelectRow(Row,False)
else
This.SelectRow(Row,True)
end if
elseif KeyDown(KeyShift!) then
if Row 

用法:.(con)

参数:数据窗口名称

con过滤器的条件和类型,条件是sql语句where后面的内容

dw_user.setfilter(var_condition)

用法:对象名称。

示例:sle_1.()

用法: .(row,'要设置的控件名称','要设置的数据')

.(长行, , 任意值)

:设置数据的数据窗口控件或子数据窗口的名称。

row:设置数据的行,long类型。

:设置数据的列,可以是类型的列名,也可以是类型的列号。

:要设置的数据。 类型取决于数据列,两者的数据类型要一致。

返回值:类型,1表示函数执行成功,-1表示函数执行失败。 如果任何参数为 Null,则该函数返回 Null。

// 第一行的hire_date列中设置数据:
dw_order.SetItem(1, "hire_date", 1993-06-07)

用法:.(row\第一行,哪一列,哪个缓冲区,要设置哪个状态)

.(长排,,,)

// 设置主缓冲区第五行工资栏的状态为notmodified!
dw_history.SetItemStatus(5, "Salary", Primary!, NotModified!)

用法:dw_1.()

其中,dw_1是控件的名称。 它是排序条件字符串。

Dw_1.setsort(“nl asc”);  //设置以n1列,按升序顺序排(升序用asc,降序用desc)
Dw_1.sort( );   //过滤

用法:。()

注意:重置sql语句时,列和类型必须与原来相同,where、group by、order by可以不同

ls_oldsql = dw_name.getsqlselect()
ls_newsql = left(ls_oldsql,pos(lower(ls_oldsql),'where')) +'NewWhereSql'......
dw_name.setsqlselect(ls_newsql)
dw_name.retrieve()

用法:数据窗口名称。

.(sqlca)

// 设置数据窗口dw_1与数据库连接
dw_1.settransobject(sqlca)

共享数据窗口的概念,共享数据窗口的实现很简单,只需要一个()即可。

例如,对于对象上的两个数据窗口 dw-p 和 dw-s,可以使用 dw-p。

(dw-s)实现两者之间的数据共享,dw-p称为主数据窗口,dw-s称为从数据窗口。

原则上,两者实际上共享的是数据缓冲区。

缓冲区中的数据首先必须从数据库中检索(通过数据窗口()函数),而数据库的检索是一个比较“昂贵”的操作,这会增加数据库和网络传输的负载。

对于共享数据窗口,只有主数据窗口检索数据,通过共享从数据窗口获取的数据不需要检索数据库。

用法:dw_1.()

ConNECT USING SQLCA;
dw_employee.SetTransObject(SQLCA)
dw_employee.Retrieve()
dw_employee.ShareData(dw_dept)
// 要结束共享数据用sharedataoff()

用法:与()一起使用,设置排序格式后,使用该函数进行排序

Dw_1.setsort(“nl asc”);  //设置以n1列,按升序顺序排(升序用asc,降序用desc)
Dw_1.sort( );   //过滤

dw_name.settransobject(sqlca)链接数据库
sqlca.sqlcode = 0 有数据\\ = 100 无数据

用法:(斑点)

对要转换的数据进行赋值

示例:按照设置的格式将日期转换为字符串

(日期,'yyyy-mm-dd')

用法:sqlca. (一条sql语句,窗口样式,错误信息)

用法:对象名.()

触发指定对象的指定事件,并立即执行事件中的脚本。 注意函数 和 之间的区别。 它不是立即执行,而是立即执行触发事件的脚本。

.(事件{,单词,长})

:PB中的任何对象或控件,只要有事件就可以触发。

event:要触发的事件。 可以是枚举类型或类型。 word、long:这两个参数不是必需的,用于传输long或类型数据。

返回值:类型。 如果返回1,则表示函数执行成功; 如果指定事件中没有脚本或者函数执行不正确,则返回-1。 当任何参数为 Null 时,该函数返回 Null。

cb_1.TriggerEvent(Clicked!)
// 等价于
TriggerEvent(“Clicked”)
w_main.TriggerEvent(“ue_open”,0,’test’)
// 在用户自定义事件ue_open中接收数据:
string ls_msg
ls_msg = String(Message.LongParm,’address’)

用法:trim() //trimw()用于有中英文双字节输入时。

string s = ' 4abb  ' //前面一个空格,后面两个空格
string w = ' 你好  ' //前面一个空格,后面两个空格
trim(s) //返回'4abb'
trim(w) //返回'你好'

用法:Dw_1.( ) 其中,dw_1 为控件名称

// 数据修改后,需要对数据进行保存。
Dw_1.update( ) //该语句有返回值,如果返回1表示更新成功,返回-1表示出错。

原文链接:

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
Powered By DESTOON