电子秤操作手册

上传人:daj****de2 文档编号:180405166 上传时间:2023-01-06 格式:DOCX 页数:37 大小:26.39KB
收藏 版权申诉 举报 下载
电子秤操作手册_第1页
第1页 / 共37页
电子秤操作手册_第2页
第2页 / 共37页
电子秤操作手册_第3页
第3页 / 共37页
资源描述:

《电子秤操作手册》由会员分享,可在线阅读,更多相关《电子秤操作手册(37页珍藏版)》请在装配图网上搜索。

1、电子秤操作手册第一部分 与数据库有关的函数行操作列操作 数据操作PowerBuilder 为数据窗口控件提供了丰富的函数,这些函数使用户能够在使用数据窗口控件时得心应手。与数据库有关的函数这类函数完成与数据库有关的功能。一、连接数据库连接数据库也就是指定事务对象。 PowerBuilder 提供了两个函数:SetTrans()和 SetTransObject()。语法格式:dw_control.SetTrans(TransactionObject)dw_control.SetTransObject(TransactionObject)其中,dw_control是所使用的数据窗口控件,trans

2、actionobject是所 要指定的事务对象。这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不 需做任何数据初始化或事务对象初始化工作。用户只需要在这里填充 一个事务对象, PB 就会自动完成对该事物对象的初始化以及和数据 库连接的工作。而使用SetTransObject()函数时,用户必须首先把所用 的事务对象连接到数据库上。但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使 用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这 个函数在每个事务处理的末端都会执行Disconnect语句。与此相反, 使用SetT

3、ransObject()函数可以为数据库维持一个开放性的连接。因此 在一般情况下,为了提高效率,总是采用SetTransObject()函数。这两个函数都是成功时返回 1,发生错误时返回-1。二、检索数据用于检索数据的函数只有一个,就是Retrieve()函数。语法格式:dw_control.Retrieve()如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。而且检索参数必须和数据窗口对象中定义顺 序一致。此函数返回一个长整型的数据,代表检索出来的数据行数。如果发生错误,将返回-1。三、更新数据当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库 中去

4、时,必须使用Update()函数。语法格式:dw_control.Update()这个更新可能成功,也可能失败。一般在这个函数被调用之后,总是要做一个检查。请看下面的例子:Int li_returnli_return = dw_1.Update()IF li_return = 1 THENCOMMIT USING SQLCA;ELSEROLLBACK USING SQLCA;END IF 在这段代码中,首先对数据窗口控件进行更新操作。但是更新只是把 数据写入到客户机的内存,并没有提交到数据库中。如果更新成功, 就把它提交到数据库中,如果更新失败,就回滚到当前的事务。行操作行操作的函数主要是对数

5、据库中的数据进行插入、删除或选择操作。一、插入行在DataWindow中插入一行,可以使用lnsertRow()函数。语法格式:dw_control.lnsertRow(rownumber)dw_control是数据窗口控件名,rownumber是要插入行的的行号。如果这个参数为0代表在当前DataWindow的最后一行插入一空行。lnsertRow()函数返回一个长整型值,以此来代表插入的行号。如果插入失败,则返回-1。二、删除行要删除DataWindow内的一行数据,则要使用DeleteRow()函数。语法格式:dw_control.DeleteRow(rownumber)其中 rownu

6、mber 是要删除的行号。如果该值为 0,表示删除当前行。如果删除成功,返回 1,失败则返回-1。三、设置当前行如果要设置DataWindow中的某行为当前行,可以使用SetRow()函数。语法格式:dw_control.SetRow(rownumber) 其中 rownumber 是要设置为当前行的行号。如果函数返回 1 表示成 功,返回-1 代表失败。四、获取当前行如果想要设置 DataWindow 中的某行为当前行,可以使用 GetRow() 函数。语法格式:dw_control.GetRow()该函数没有参数,它返回一个长整型,代表当前行号。如果返回 -1 代表失败。如果返回 0 代表

7、没有选中任何行。五、选择行如果想要在 DataWindow 中加亮显示某一行或取消加亮显示某一行 可以使用SelectRow()函数。语法格式:dw_control.SelectRow(rownumber,select)其中,rownumber表示要加亮或者取消加这显示的行号,0表示所有 行。select是一个布尔类型的值,TRUE表示加亮,FALSE表示取消加 亮显示。该函数返回1 时表示成功,返回-1 时表示失败。如果想要直接设置某一行为加亮,需要首先取消其它行的加亮显示状 态,采用如下的两行代码:dw_1.SelectRow(0,FALSE)dw_1.SelectRow(rownumbe

8、r,TRUE)六、获取选择行如果想要获取当前 DataWindow 中加亮显示的行, 可以使用 GetSelectRow()函数。语法格式:dw_control.GetSelectRow(rownumber)其中,rownumber为开始查找的行的行号,0表示从头开始查找。该 函数返回一个长整数,表示从 rownumber 开始查找第一个加亮显示 的行的行号。如果失败返回 0。七、滚动行如果在DataWindow的末尾插入一行数据,而当前行是在DataWindow 的中央,那么这种插入可能不会被用户觉察。为了改变这种情况,可 以滚动行到 DataWindow 的末尾,这样用户就能发现新的改变。

9、要滚 动行,可以使用ScrollToRow()函数。语法格式:dw_control.ScrollToRow(rownumber)该函数返回 1 时表示成功,返回-1 时表示失败。与ScrollToRow()函数据功能相关的还有如下几个函数:ScrollPriorRow():向上滚动一行ScrollNextRow():向下滚动一行列操作列操作类的函数主要是选择指定的列和获取列的信息。一、获取列如果要获取当前的列号,可以使用GetColumn()函数,如果要获取当前的列名,可以使用 GetColumnName()函数。语法格式:dw_control.GetColumn() dw_control.G

10、etColumnName() 这两个函数都没有参数,GetColumn()函数返回一个长整型值,代表 当前的列号,GetColumnName()函数返回当前列的列名。如果返回0, 表示当前没有任何列被选择返回-1 表示失败。二、设置列要设置某一列为DataWindow中的当前列,可以使用SetColumn()函数。语法格式:dw_control.SetColumn(column)其中 column 既可以是列号,也可以是列名。当该函数返回 1 时表示 成功,返回-1 时表示失败。数据操作数据操作类的函数主要是对 DataWindow 中的数据进行获取、设置。一、获取数据如果要从 DataWin

11、dow 的指定行和列中获取数据,就要使用 GetItem 系列的函数。这个系列的函数共有五个,分别是对字符串、数字、日 期、日期时间和小数。语法格式: dw_control.GetItemString(rownumber,column) dw_control.GetItemNumber(rownumber,column) dw_control.GetItemDate(rownumber,column) dw_control.GetItemDateTime(rownumber,column) dw_control.GetItemDecimal(rownumber,column)其中,rownum

12、ber参数表示行号,column可以是列号或列名。 二、设置数据与获取数据所用的函数不同,设置DataWindow内指定行列处的数据 只要使用一个Setltem()函数就可以了。语法格式:dw_control.SetItem(rownumber, column, value)其中rownumber表示行号,column可以是列号,也可以是列名,value 表示要设置的值。但是该必须与 DataWindow 中指定的行列处的数据 类型一致,不然PowerBuilder会报错。Setltem()函数返回1时表示成功,返回-1时表示失败。三、数据排序如果希望对 DataWindow 内的数据进行重新

13、排序,而又不想重新从数 据库中检索数据,可以使用SetSort()和Sort()函数。这两个函数一起 完成对DataWindow进行排序的功能。其中SetSort()函数用于设置如 何排序,Sort()函数用于对DataWindow实际进行排序。语法格式:dw_control.SetSort(expression) dw_control.Sort() 其中 expression 是一个字符串,表示排序的表达式,它的具体值是一 个列名后面加一个空格,然后是 "A" ,表示升序,或 "D",表示降序。如果有多个列要同时进行排序,它们之 间用逗号隔开。例:dw

14、_1.SetSort("name A,xh D")这两个函数都是返回1表示成功,返回-1表示失败。四、数据过滤如果希望对DataWindow内的数据进行过滤而不重新从数据库中检索 数据,可以使用SetFilter()和Filter()函数。它们一起完成对数据的过 滤功能。其中SetFilter()函数用来设置过滤条件,Filter()函数用于对 DataWindow 进行过滤。语法格式:dw_control.SetFiter(expression) dw_control.Fiter()其中 expression 是一个字符串,表示过滤的条件,它实际是一 个逻辑表达式。例:d

15、w_1.SetFilter("id>'003' AND name like'王 ' ")dw_1.Filter()这两个函数都是返回1 表示成功,返回-1 表示失败。五、数据检查PowerBuilder提供了两个函数用于数据的检查,它们是DeleteCount() 和ModifiedCount(),其作用分别是检查DataWindow中的数据自上一 次更新到现在,被删除的行数和被修改的行数。它们一般在窗口的CloseQuery事件中使用,用来检查该窗口的DataWindow中的数据是 否有尚未保存的修改。语法格式:dw_control.

16、DeleteCount()dw.control.ModifiedCount()它们分别返回从上一次更新到现在, DataWindow 中被删除和被修改 的行数。如果没有行被删除或被修改,那么它们返回0。如果出现错 误则返回-1。一般情况下,如果窗口中含有可供修改的数据窗口对象,那么在窗口 的 CloseQuery 事件中通常使用如下代码检查数据窗口对象中是否有 尚未保存的数据:Int li_returnIF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THEN li_return = MessageBox("提示&

17、quot;,"数据尚未保存,是否 保存? ",Question!,YesNoCancel!,3)CHOOSE CASE li_returnCASE 1TriggerEvent('ue_save')RETURN 0CASE 2RETURN 0CASE 3RETURN 1END CHOOSEEND IF第二部分PowerBuilder 数据窗口编程技巧十则PowerBuilder 取 得 巨 大 成 就 的 原 因 就 是 有 Datawindow 对 象 ,DataWindow 是 具 有 功 能 强 大 和 灵 活 多 变 的 特 点 , 本 人 用 Pow

18、erBuilder 开发过一段时间后,总结出一些技巧,以供广大的 PB 开发者借鉴使用。一如何创建一个报表,如下形式Quantity Running Total5,000 5,0002,500 7,5003,000 10,50012,000 22,500对于 Running Total 列,我们可使用计算列: CumulativeSum (Quantity for all),即可达到逐渐递增求和的功能。二数据窗口的数据送缓冲区之前确认的四个步骤 判断数据类 型是否正确。如不正确则触发 ItemError 事件。判断数据是否符合有 效性规则。如不符合有效性规则,同样触发ItemError事件。判

19、断是 否有数据被改动。判断数据是否通过 ItemChanged 事件,如果数据和ItemChanged 相斥,将触发 ItemError 事件。三如何在 DataWindow 中用数据类型为 Datetime 的列为条件进 行查找1当要查找的日期条件是一常数时使用如下表达式: ls_Find = "datetime_col= DateTime ('1/1/1999')"2当要查找的日期条件是一个变量时使用如下的表达式: ls_Find = "datetime_col = DateTime ('" + ls_Date + "

20、;')"3.当要查找的日期条件是一个DateTime数据类型时使用如下表达式:ls_Find = "datetime_col = DateTime ('" + String (ldt_DateTime) + "')"四.设置数据窗口 Boolean 型属性的三种方法PowerBuilder提供了三种方法设置数据窗口的布尔型属性,分别是 True/False, 1/0, 'Yes'/'No'。例如: dw_1.Object.address.Visible = 0 dw_1.Object.add

21、ress.Visible = False dw_1.Object.address.Visible = 'No'PowerBuilder 在处理上以字符串的形式保存属性,而不考虑属性 值是布尔型、长整型或是字符型。 为了进一步理解,可以导出一个数据窗口并查看它的原码,可以发现 即使是列的颜色属性它也是使用带双引号的数字来表达。五如何在 DataWindow 中快速删除多行 在开发过程中可能经常有要进行多行删除的操作,一般都使用循 环语句进行操作:FOR ll_RowOn = 1 TO dw_1.RowCount() dw_1.DeleteRow(ll_RowOn) NEXT一个快

22、速的删除方法是把要删除的行从主缓冲区中移到删除缓 冲区中。例如,删除缓冲区中所有的行:dw_1.RowsMove(dw_1, 1, dw_1.RowCount, Primary!, dw_1, 1, Delete!)不过不要忘了过滤的行在不同的缓冲区中。六如何在 DataWindow 的 SQL 语法中不使用 SELECT DISTINCT 实现删除重复的行起先对你要显示唯一值的列进行排序:"city A",然后 增加如下过滤字符串:" city &It; > city -1 or GetRow ()= 1"七如何在分组形式的 DataWindow

23、 中分别显示各组的行号 当我们为 Datawindow 的每一行显示行号时,可以简单的放一个 表达式为GetRow()计算列。但是对于分组的Datawindow,要分别显 示各组的行号,则应使用表达式为GetRow() - First(GetRow() for Group 1) + 1的计算列。八如何改变列的字体颜色,提醒用户此列已做修改在列的 CoIor 属性中,输入如下表达式IF (coIumn_name &It; >coIumn_name.OriginaI, RGB(255, 0, 0), RGB(0,0, 0)。在这个条件中,如果此列已改变,则显示红色字体,否则显示黑 色 字 体

24、 。 这 个 表 达 式 主 要 用 coIumn_name &It; > coIumn_name.OriginaI 比较当前列的值和原始列的值是否相同来达到 判断的目的。九在数据窗口中移走行,但不是去做过滤或删除操作RowsDiscard()函数可做到这一点,它在数据窗口中执行移除工作, 但被移走的行它不可被删除或做任何修改性的保存。十如何在多行显示的 DataWindow 中的 Footer Band 中显示当 前数据的首行和最后行的行号我们先看两个计算列的表达式: IF (GetRow() = First(GetRow()FOR Page), 1, 0) / 1 为当前页的第一行I

25、F (GetRow() < > 1 AND GetRow() = Last(GetRow() FOR Page), 1, 0)/ 1 为当前页的最后一行由上面可知,在 Footer Band 中设置如下计算列表达式:'Rows ' + String(First(GetRow() FOR Page) + ' to ' +String(Last(GetRow() FOR Page) + ' are displayed'。即可达到这项功能。第三部分在 PowerBuilder 中利用 DataStore实现查询条件的记忆文章分类:IT生活-

26、随着MIS开发工具的日益完善,人们对信息检索的要求也越来越 高,以往每次查询时都由用户输入,然后进行检索的方式已越来越无 法满足用户的要求,许多用户都希望系统具有自动记忆查询条件的功 能,这样经常使用的查询条件就不必重复输入了。PowerBuilder(以下简称PB)中的DataStore (数据存储)可以帮助开 发人员方便地解决这一问题OPB作为C/S环境下的数据库开发工具, 其面向对象、可视化以及方便移植等特点引人注目,成为目前非常流 行的数据库前端开发工具。本文以一个文献索引数据库为实例,详细 介绍如何在PB中利用DataStore实现查询条件的记忆。- DataStore是非可视的数据

27、窗口控件,它能够为应用程序存储数据 而不消耗任何图形资源。除了一些可视特征外,它的功能及行为与数 据窗口控件相同。因此,我们可以利用 DataStore 的特点方便地记忆 和维护查询条件。 第一步,在数据库中建立一个查询条件表,其中包含每个要用到 的条件字段(如标题、文献来源、开始日期、结束日期等)和一个日 期字段、时间字段。该表用来保存最近使用的 10 个(如果需要可以 保存任意个)不同条件,每个条件就是一条记录,后两个字段(日期、 时间)用来记载条件的使用时间。 第二步,创建一个包含查询条件表中所有字段的数据窗口对象dw_condation,按使用时间的先后排序。进行查询条件设置时, 第三

28、步,构造如下图的查询条件设置窗口。 四个复选框对应四个条件字段,左、右方向按钮用来浏览设置最近使用过的条件。 第四步,为窗口事件及各控件编写相应的程序。 定义窗口实例变量:datastore ids_Data long currentrow窗口的Open事件:ids_Data = Create DataStore/创建数据存储实例ids_Data.DataObject = "dw_condation"将dw_condation数据窗口对象与ids_Data连接 ids_Data.SetTransObject(sqlca) ids_data.retrieve()if ids_

29、data.rowcount() >1 then/设置当前条件为最后一次使用的条件 pb_3.enabled=truecurrentrow=ids_data.rowcount() trigger event ue_setquery(ids_data.rowcount()end if窗口自定义事件 ue_setquery:string bt,source/标题、文献来源date start_day,end_day/开始日期、结束日期long page/页号/根据参数 rownum 从数据存储实例中得到各条件值bt=ids_Data.Object.btrownumsource=ids_Data

30、.Object.sourcerownum start_day=ids_Data.Object.beginrownum end_day=ids_Data.Object.endrownum page=ids_Data.Object.pagerownum /初始化各窗口控件的状态 cbx_1.checked=falsecbx_2.checked=falsecbx_3.checked=false cbx_4.checked=false sle_1.enabled=false ddlb_1.enabled=falseem_1.enabled=falseem_2.enabled=falseem_3.ena

31、bled=false/分别设置各个条件值if not isnull(bt) and trim(bt)< >"" then cbx_1.checked=truesle_1.enabled=truesle_1.text=bt end if if not isnull(source) and trim(source)< >"" then cbx_2.checked=true ddlb_1.enabled=true ddlb_1.text=source end if if isnull(start_day) or start_day=da

32、te("1900-1-1") then em_1.text=string(today(),"yyyy-mm-dd") else cbx_3.checked=true em_1.enabled=trueem_1.text=string(start_day,"yyyy-mm-dd") end if if isnull(end_day) or end_day=date("1900-1-1") then em_2.text="2050-1-1"else cbx_3.checked=true em_2.e

33、nabled=true em_2.text=string(end_day,"yyyy-mm-dd") end ifcbx_4.checked=true em_3.enabled=true em_3.text=string(page) end if 窗口的 Close 事件: destroy ids_data /清除数据存储实例 pb_3 (向前按钮)的Clicked事件: if currentrow >1 then /设置前一个条件为当前条件 currentrow=currentrow - 1 trigger event ue_setquery(currentrow)

34、 pb_4.enabled=trueif currentrow=1 then this.enabled=falseend ifpb_4 (向后按钮)的Clicked事件:if currentrow< ids_data.rowcount() then/设置后一条件为当前条件currentrow=currentrow + 1pb_3.enabled=trueif currentrow=ids_data.rowcount() then this.enabled=falsetrigger event ue_setquery(currentrow) end if pb_1 (确定按钮)的Click

35、ed事件:string bt,source,sqltext,sql_all,sql_title, sql_source,sql_date, sql_page date start_day,end_day long page,rownum,rowcount boolean exist根据用户设置的条件动态生成查询SQL语法if cbx_1.checked thenbt=sle_1.text sql_title='"index"."title" like '+"'%"+bt +"%'"e

36、nd ifif cbx_2.checked thensource=ddlb_1.textlikesql_source=' and "index"."source"'+"'%"+source +"%'"end ifif cbx_3.checked then start_day=date(em_1.text)end_day=date(em_2.text) sql_date='and"index"."date">='+"

37、;'" +string(start_day,"yyyy.mm.dd")+"'"+'and'+'"index"."date"<='+"'"+string(end_day,"yyyy.mm.dd") +"'"end ifif cbx_4.checked then"index"."page"='+string(page) end if&

38、#39;sqltext='SELECT "index"."num",&+'"index"."title", ' &+'"index"."source", ' &+'"index"."date", ' &+'"index"."page", ' &+'"index"

39、;."other" ' &+' FROM "index" ' &+' WHERE '+sql_title +sql_source+sql_date+sql_page &+' ORDER BY "index"."num" ASC ' rowcount=ids_data.rowcount()for rownum=1 to rowcount/判断该条件是否已经存在if ids_data.object.datarownum,1=bt and &

40、amp; ids_data.object.datarownum,2=source and & ids_data.object.datarownum,3=start_day and & ids_data.object.datarownum,4=end_day and & ids_data.object.datarownum,5=page then ids_data.ob ject.datarownum,6=now() ids_data.object.datarownum,7=today()exist=trueexitend ifnextif not exist then/

41、条件不存在,记忆新条件if rowcount< 10 then elseids_data.deleterow(1) end if rownum=ids_data.insertrow(0) ids_data.object.datarownum,1=bt ids_data.object.datarownum,2=source ids_data.object.datarownum,3=start_day ids_data.object.datarownum,4=end_day ids_data.object.datarownum,5=page ids_data.object.datarownu

42、m,6=now() ids_data.object.datarownum,7=today() end if ids_data.update() /根据生成的 SQL 语句, 修改主窗口中的数据窗口语法, 进行查询 w_index.dw_1.setsqlselect(sqltext) close(parent) if isvalid(w_index)then w_index.dw_1.retrieve()pb_2 (取消按钮)的Clicked事件:close(parent)PowerBuilder 的基本语法1. 忽略大小写2. 断句,续行1) &联句2) ;断句3.注释:/或 /*。

43、*/4 数据类型Blob:2 进制型,用于存放图片和文本Boolean:0/1Character:Date:日期型Time:时间型,包括时分秒Datetime:日期时间型,只有对数据库操作时才能使用Decimal:带符号数,有18位有效数字Double:双精度Unsigned integer:无符号整型,065535Integer: 16 位带符号数, -3276832767Unsigned Long:无符号长整型,04294967295Long: 32 位长整型, -21374836482137483648Real:带符号浮点型String:4 变量作用域 :全局Global;实例Insta

44、nce;共享Shared;局部Local; 访问权限:公有Public;私有Private;共享Shared;保护Protected5 操作符1) 算术:+;-;+自力口 1;-自减1;*; /;八取幕;2) 关系 : =; >; <;>=; <=; <>3)逻辑 : NOT; AND; OR4)优先级:()+,-八*,/ 二,>,<,<二,>二,<> f NOTANDOR6 标识符1)规则: 英字母开头;字母,数字及 “-”“_”,"&",和“”构成<=40 个字符,避免保留字122832035

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!