一、连接数据库


连接数据库也就是指定事务对象。PowerBuilder供给了两个函数:SetTrans()和SetTransObject()。
语法格局:
dw_control.SetTrans(TransactionObject)
dw_control.SetTransObject(TransactionObject)
此中,dw_control是所应用的数据窗口控件,transactionObject是所要指定的事务对象。
这两个函数有一个首要的差别就是在应用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。用户只须要在这里填充一个事务对象,PB就会主动完成对该事物对象的初始化以及和数据库连接的工作。而应用SetTransObject()函数时,用户必须起首把所用的事务对象连接到数据库上。
然则,这并不料味着SetTrans()函数比SetTransObject()函数更好,应用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理惩罚的末尾都邑履行Disconnect语句。与此相反,应用SetTransObject()函数可认为数据库保持一个开放性的连接。是以在一般景象下,为了进步效力,老是采取SetTransObject()函数。
这两个函数都是成功时返回1,产生错误时返回-1。



二、检索数据



用于检索数据的函数只有一个,就是Retrieve()函数。
语法格局:
dw_control.Retrieve()
若是数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。并且检索参数必须和数据窗口对象中定义次序一致。
此函数返回一个长整型的数据,代表检索出来的数据行数。若是产生错误,将返回-1。



三、更新数据



当用户对数据窗口对象内的数据批改后,想把这些批改反应到数据库中去时,必须应用Update()函数。
语法格局:
dw_control.Update()
这个更新可能成功,也可能失败。一般在这个函数被调用之后,老是要做一个搜检。请看下面的例子:
Int li_return
li_return = dw_1.Update()
IF li_return = 1 THEN
COMMIT USING SQLCA;
ELSE
ROLLBACK USING SQLCA;
END IF
在这段代码中,起首对数据窗口控件进行更新操纵。然则更新只是把数据写入到客户机的内存,并没有提交到数据库中。若是更新成功,就把它提交到数据库中,若是更新失败,就回滚到当前的事务。

行操纵
行操纵的函数主如果对数据库中的数据进行插入、删除或选择操纵。



一、插入行



在DataWindow中插入一行,可以应用InsertRow()函数。
语法格局:
dw_control.InsertRow(rownumber)
dw_control是数据窗口控件名,rownumber是要插入行的的行号。若是这个参数为0,代表在当前DataWindow的最后一行插入一空行。
InsertRow()函数返回一个长整型值,以此来代表插入的行号。若是插入失败,则返回-1。



二、删除行



要删除DataWindow内的一行数据,则要应用DeleteRow()函数。
语法格局:
dw_control.DeleteRow(rownumber)
此中rownumber是要删除的行号。若是该值为0,默示删除当前行。若是删除成功,返回1,失败则返回-1。



三、设置当前行



若是要设置DataWindow中的某行动当前行,可以应用SetRow()函数。
语法格局:
dw_control.SetRow(rownumber)
此中rownumber是要设置为当前行的行号。若是函数返回1默示成功,返回-1代表失败。



四、获取当前行



若是想要获取DataWindow中的某行动当前行,可以应用GetRow()函数。
语法格局:
dw_control.GetRow()
该函数没有参数,它返回一个长整型,代表当前行号。若是返回-1代表失败。若是返回0代表没有选中任何行。



五、选择行



若是想要在DataWindow中加亮显示某一行或作废加亮显示某一行,可以应用SelectRow()函数。
语法格局:
dw_control.SelectRow(rownumber,)
此中,rownumber默示要加亮或者作废加这显示的行号,0默示所有行。是一个布尔类型的值,TRUE默示加亮,FALSE默示作废加亮显示。该函数返回1时默示成功,返回-1时默示失败。
若是想要直接设置某一行动加亮,须要起首作废其它行的加亮显示状况,采取如下的两行代码:
dw_1.SelectRow(0,FALSE)
dw_1.SelectRow(rownumber,TRUE)




六、获取选择行



若是想要获取当前DataWindow中加亮显示的行,可以应用GetSelectRow()函数。
语法格局:
dw_control.GetSelectRow(rownumber)
此中,rownumber为开端查找的行的行号,0默示从头开端查找。该函数返回一个长整数,默示从rownumber开端查找第一个加亮显示的行的行号。若是失败返回0。



七、迁移转变行



若是在DataWindow的末尾插入一行数据,而当前行是在DataWindow的中心,那么这种插入可能不会被用户发觉。为了改变这种景象,可以迁移转变行到DataWindow的末尾,如许用户就能发明新的改变。要迁移转变行,可以应用ScrollToRow()函数。
语法格局:
dw_control.ScrollToRow(rownumber)
该函数返回1时默示成功,返回-1时默示失败。
与ScrollToRow()函数据功能相干的还有如下几个函数:
ScrollPriorRow():向上迁移转变一行
ScrollNextRow():向下迁移转变一行

列操纵
列操纵类的函数主如果选择指定的列和获取列的信息。



一、获取列



若是要获取当前的列号,可以应用GetColumn()函数,若是要获取当前的列名,可以应用GetColumnName()函数。
语法格局:
dw_control.GetColumn()
dw_control.GetColumnName()
这两个函数都没有参数,GetColumn()函数返回一个长整型值,代表当前的列号,GetColumnName()函数返回当前列的列名。若是返回0,默示当前没有任何列被选择返回-1默示失败。



二、设置列



要设置某一列为DataWindow中的当前列,可以应用SetColumn()函数。
语法格局:
dw_control.SetColumn(column)
此中column既可所以列号,也可所以列名。当该函数返回1时默示成功,返回-1时默示失败。

数据操纵
数据操纵类的函数主如果对DataWindow中的数据进行获取、设置。



一、获取数据



若是要从DataWindow的指定行和列中获取数据,就要应用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)
此中,rownumber参数默示行号,column可所以列号或列名。



二、设置数据



与获取数据所用的函数不合,设置DataWindow内指定行列处的数据只要应用一个SetItem()函数就可以了。
语法格局:
dw_control.SetItem(rownumber, column, value)
此中rownumber默示行号,column可所以列号,也可所以列名,value默示要设置的值。然则该必须与DataWindow中指定的行列处的数据类型一致,不然PowerBuilder会报错。
SetItem()函数返回1时默示成功,返回-1时默示失败。



三、数据排序



若是欲望对DataWindow内的数据进行从头排序,而又不想从头从数据库中检索数据,可以应用SetSort()和Sort()函数。这两个函数一路完成对DataWindow进行排序的功能。此中SetSort()函数用于设置如何排序,Sort()函数用于对DataWindow实际进行排序。
语法格局:
dw_control.SetSort(expression)
dw_control.Sort()
此中expression是一个字符串,默示排序的表达式,它的具体值是一个列名后面加一个空格,然后是"A",默示升序,或"D",默示降序。若是有多个列要同时进行排序,它们之间用逗号隔开。
例:dw_1.SetSort("name A,xh D")
这两个函数都是返回1默示成功,返回-1默示失败。



四、数据过滤



若是欲望对DataWindow内的数据进行过滤而不从头从数据库中检索数据,可以应用SetFilter()和Filter()函数。它们一路完成对数据的过滤功能。此中SetFilter()函数用来设置过滤前提,Filter()函数用于对DataWindow进行过滤。
语法格局:
dw_control.SetFiter(expression)
dw_control.Fiter()
此中expression是一个字符串,默示过滤的前提,它实际是一个逻辑表达式。
例:
dw_1.SetFilter("id>\""003\"" AND name like\""王%\""")
dw_1.Filter()
这两个函数都是返回1默示成功,返回-1默示失败。



五、数据搜检



PowerBuilder供给了两个函数用于数据的搜检,它们是DeleteCount()和ModifiedCount(),其感化分别是搜检DataWindow中的数据自上一次更新到如今,被删除的行数和被批改的行数。它们一般在窗口的CloseQuery事务中应用,用来搜检该窗口的DataWindow中的数据是否有尚未保存的批改。
语法格局:
dw_control.DeleteCount()
dw.control.ModifiedCount()
它们分别返回从上一次更新到如今,DataWindow中被删除和被批改的行数。若是没有行被删除或被批改,那么它们返回0。若是呈现错误则返回-1。
一般景象下,若是窗口中含有可供批改的数据窗口对象,那么在窗口的CloseQuery事务中凡是应用如下代码搜检数据窗口对象中是否有尚未保存的数据:
Int li_return
IF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THEN
li_return = MessageBox("提示","数据尚未保存,是否保存?",Question!,YesNoCancel!,3)
CHOOSE CASE li_return
CASE 1
TriggerEvent(\""ue_save\"")
RETURN 0
CASE 2
RETURN 0
CASE 3
RETURN 1
END CHOOSE
END IF





★SetTransObject
语法:dwcontrol.SetTransObject ( transaction )
功能:给数据窗口或者datastore控件dwcontrol设置事务对象transaction,缺省事务对象是SQLCA。
返回值:成功设置事务对象则返回1,履行过程中产生了错误则返回-1,有随便率性参数为Null时返回Null。



★Retrieve
语法:dwcontrol.Retrieve ( {, argument, argument . . . } )
功能:应用数据窗口控件的当前事务对象检索数据库中的数据。若是数据窗口控件对应的数据窗口对象定义了检索参数,则应当在该函数中指定检索参数,参数的个数和数据窗口对象的检索变量个数相等,对应的数据类型相兼容。
返回值:返回数据窗口控件主缓存区(PrimaryBuffer)中的记录数,若是检索数据时产生错误则返回-1,若是随便率性参数为Null则返回Null
*该函数的参数和数据窗口对象定义的参数的次序要雷同,类型要兼容。个数不克不及少于数据窗口对象定义的参数,即可以便是和多于数据窗口对象定义的参数,多的参数忽视。



★DeleteRow
语法:dwcontrol.DeleteRow ( row )
功能:删除数据窗口dwcontrol中的第row行数据,若是row为0则默示删除当前行的数据。
返回值:履行成功则返回1,履行错误则返回-1,若是随便率性参数为Null则返回Null。
*该函数履行后只是将被删除的数据从数据窗口的主缓存区移放到Deleted缓冲区,在数据库中并没有真正删除数据,当正确履行了Update函数并且应用commit语句提交了事务后,才真正从数据库中删除该数据



★InsertRow
语法:dwcontrol.InsertRow ( row )
功能:在数据窗口dwcontrol的第row行前插入一行空白数据。当指定row为0时,默示在当前行之前插入一行空白数据。
返回值:返回插入的数据的行号,若是履行过程中产生错误则返回-1,若是随便率性参数为Null则返回Null



★Update
语法:dwcontrol.Update ( { accept {, resetflag } } )
功能:提交数据窗口或者datastore中的数据。若是accept为True,默示在提交数据之前主动履行AccpetText函数,不然不履行该函数,该参数缺省为True;若是resetflag为True,默示数据提交后主动清除批改标识,该参数缺省为True。
返回值:履行成功则返回1,产生错误则返回-1,若是dwcontrol为Null则返回Null



★AcceptText
语法:dwcontrol.AcceptText ( )
功能:该函数履行时,起首对当前编辑框中的内容进行对应字段的校验规矩,可以或许经由过程校验规矩,则保存在对应字段中,不然显示校验信息提示错误。须要履行该函数的原因是,当在某字段上的编辑框中输入内容而没有移动光标到此外字段上时,其他控件获得核心,此时编辑框中的内容不克不及被保存到字段中,所以就应当在数据窗口落空核心时履行该函数。
返回值:履行成功则返回1,履行过程中产生错误则返回-1,若是dwcontrol为Null则返回Null。
*该函数在数据窗口的ItemChanged事务中不起感化,因为项目改变是产生在接管编辑框中内容之后



★ModifiedCount
语法:dwcontrol.ModifiedCount ( )
功能:获取数据窗口或者Datastore中被修悔改但还没有提交到数据库中的记录数。
返回值:返回long类型的数据窗口控件中被修悔改的记录数,若是没有记录被修悔改或者批改后都已经保存到了数据库中则返回0,履行过程中若是产生错误则返回-1,若是dwcontrol为Null则返回Null。
*该函数获得的修悔改的记录数包含主缓存区和Filter缓存区的被修悔改的和新添加到数据窗口中的记录数



★DeletedCount
语法:dwcontrol.DeletedCount ( )
功能:获取数据窗口控件或者datastore控件dwcontrol中被删除的记录数。
返回值:返回long类型的已经被删除但还没有提交到数据库中的记录数,若是履行过程中产生了错误则返回-1,若是dwcontrol为Null则返回Null,若是没有删除过记录则返回0



★RowsMove
它可以将数据从一个缓冲区移动到别的缓冲区中。该函数的语法是:
dwcontrol.RowsMove ( startrow, endrow, movebuffer, targetdw, beforerow, targetbuffer )
此中,dwcontrol是进行移动操纵的源数据窗口;startrow和endrow是要移动数据的局限(包含这两个行号的数据);movebuffer指要从哪个缓存区移出数据,可所以Primary!、Delete!、Filter!;targetdw是目标数据窗口控件名称;beforerow默示在目标数据窗口的哪一行之前插入移入的数据,若是该数值比目标数据窗口的行数大,则在最后插入移入的数据;targetbuffer是目标缓存区,取值同movebuffer一样。



★GetItemStatus和SetItemStatus
应用函数dwcontrol.GetItemStatus ( row, column, Primary! )可以获取该缓冲区内指定单位的状况,当参数column为0时,默示读取全部行的批改状况。有以下状况。
NotModified! :指定单位的数据和原始数据雷同,没有修悔改。
DataModified!:指定单位的数据和原始数据不合,修悔改。
New!:该数据行是新增长的,但还没有在该行上输入数据。
NewModified!:该数据行是新增长的,并且已经在该行上录入了数据。
这些批改标识都是由数据窗口主动保护的,一般景象下没有须要编写脚本批改这些标识表记标帜,但并不是说就不克不及批改。PowerBuilder供给了函数SetItemStatus,它的语法是:
dwcontrol.SetItemStatus ( row, column, dwbuffer, status )
此中,row参数指定将要批改状况的行;column参数指定将要批改状况的列(可所以整型的列号,也可所以string类型的列名),当列号为0时默示要批改row指定的整行的状况;dwbuffer指定要批改哪个缓冲区(必然不克不及是original),status为上方的四个取值中的一个,但不是随便率性的取值,因为有些状况不克不及用该函数设置成别的一种状况,必须是可以或许转换的状况。下面列出了可以或许转换的状况。
期望的状况 New! NewModified! DataModified! NotModified!
当前状况
New! \ Yes Yes No
NewModified! No \ Yes New
DataModified! NewModified! Yes \ Yes
NotModified! Yes Yes Yes \
表中的Yes默示可以应用SetItemStatus进行该状况设置,No默示不会产生预期的状况,若是标了然某个特定的状况,则申明是新的状况,而不是期望的状况。例如,数据窗口dw_1的第1行第1列的当前状况为DataModified!,应用函数dw_1.SetItemStatus(1,1,New!)后,第1行第1列的状况改变为NewModified!。同样对于该数据窗口dw_1,若是应用函数dw_1.SetItemStatus(1,1,NotModified!),则会将其状况改变为NotModified!。当从一种状况不容许改变到另一种状况时,可以批改成其他一个中心状况,然后再进行一次转换。例如,要从new!改成NotModified,应当起首转换到DataModified!

★GetItemX
读取数据窗口中的数据
dwcontrol.GetItemX( row, column {, dwbuffer, originalvalue } )
此中的X可以调换成Date、DateTime、Decimal、Number、String、Time,所以读取数据的函数有6个。参数row默示要读取哪行的数据,是一个long类型数值。column代表列,可所以string型的列名,也可所以整型的列号。dwbuffer是DWBuffer列举型,取值Primary!、Delete!、Filter!分别代表主缓冲区、删除缓冲区和过滤缓冲区。originalvalue为Boolean型,默示是否读取比来一次检索时检索到的初始值,当指定dwbuffer时必须指定该参数,该参数和dwbuffer都是可选的。函数正确履行则返回对应类型的数据,履行过程中产生错误则返回空值(""),任何参数为Null则返回Null



★SetItem和SetText
函数SetItem的语法格局是:
dwcontrol.SetItem ( row, column, value )
各个参数的含义如下。
dwcontrol:数据窗口或datastore控件名称。
row:要设置的数据地点行。
column:要设置的数据地点的列。可以用整型列号,也可以用string型列名。
value:要设置的值,应当和要设置的列的类型一致。
函数正确履行则返回1,这时数据窗口中row行column列显示的数据是方才用该函数设定的数据,若是函数履行过程中产生错误则返回-1。重视,该函数履行时仅仅搜检函数中指定命据的类型和字段的类型是否一致,不会进行有效性校验,包含在数据窗口中设置的校验规矩、在ItemChanged事务中编写的校验规矩、在ItemChanged调用的校验规矩都不会履行。
函数SetText的语法格局是:
integer dwcontrol.SetText ( string text )
功能是设置当前编辑框中的内容。重视,当编辑框分开当前单位时要进行有效性校验,若是校验数据正确,则当前字段接管该数据,不然触发ItemError事务。所以,可以应用该函数给带有校验规矩的字段设置数据。
EG:
int li_i
dw_1.SetColumn("name") //使name列成为当前列
For li_i = 1 To dw_1.RowCount()
dw_1.SetRow(li_i) //使第I行成为当前行
dw_1.SetText("屁") //向当前编辑框中写入内容
Next
dw_1.SetColumn("sex") //选中性别列,包管最后一个也要经由过程校验规矩



★SetColumn、SetRow和GetColumn、GetRow和GetClickedColumn、GetClickedRow和GetColumnName
设置当前列
integer dwcontrol.SetColumn ( string column)
integer dwcontrol.SetColumn ( integer column)
设置当前行
integer dwcontrol.SetRow ( long row )
获得当前列
integer dwcontrol.GetColumn ( )
获得当前行
long dwcontrol.GetRow ( )
获得用户单击的列
integer dwcontrol.GetClickedColumn ( )
获得用户单击的行
long dwcontrol.GetClickedRow ( )
获得当前列的名
string dwcontrol.GetColumnName ( )



★SetFilter、Filter和Find
这两个函数必须配对应用,起首应用函数SetFilter设置过滤规矩,然后用函数Filter进行过滤。过滤规矩是boolean类型的表达式,可以或许应用过滤规矩的,将表达式为True的数据行显示在数据窗口中,使其为False的数据行被移送到数据窗口的Filter!缓存区。在设计数据窗口对象时也可以定义过滤规矩,应用这两个函数可以按照须要来动态改变过滤规矩。在设计时,指定了过滤规矩的数据窗口可以应用这两个函数再进行过滤。每次过滤都是对数据窗口的Original!缓存区进行的,而不是在前一次过滤出来的数据根蒂根基上再次过滤。
函数SetFilter的语法是:
dwcontrol.SetFilter ( format )
此中,dwcontrol是要进行过滤的数据窗口控件名称。format是过滤规矩,string类型。过滤规矩是由字段、常量、运算符、函数构成的boolean表达式。须要作废过滤规矩显示所有的数据时,可以指定过滤规矩为空(""),若是让用户可以随便指定过滤规矩,则可以应用Null的过滤表达式,这时PowerBuilder供给一个和数据窗口设计时雷同的过滤规矩指定窗口。该函数正确履行返回1,不然返回-1。履行完后,数据窗口中显示的数据没有产生变更,只有当履行了Filter函数后才遵守方才指定的过滤规矩显示数据。
该函数的语法是:
dwcontrol.Filter ( )
dwcontrol是和SetFilter中同名的数据窗口控件名称。该函数履行正确则返回1,不然返回-1,若是dwcontrol为Null则返回Null。
函数Find也可以用来进行查询。该函数可以在数据窗口中的指定局限查找合适某些前提的数据。该函数的语法格局是:
dwcontrol.Find ( expression_r, start, end )
此中,dwcontrol是要进行查找的数据窗口控件名称,expression_r是表达式,含义和重视事项同SetFilter中的完全雷同。start和end都是long类型变量,用行号默示的查找局限,它们之间没有大小束缚。函数返回的是在指定局限内找到的第一个合适前提的记录号,若是没有找到或产生了错误则返回0,若是参数有Null的则返回Null



★SetSort和Sort
数据的排序可以在数据窗口对象设计时就指定排序规矩,也可以在脚本中动态指定。应用函数SetSort和Sort可以完成这一任务,它们和SetFilter、Filter一样也必须配对应用。函数SetSort设置排序的规矩,不改变数据的显示,只有当履行了函数Sort时,数据才真正进行从头分列。
函数SetSort的语法是:
dwcontrol.SetSort ( format )
此中,dwcontrol为要进行排序的数据窗口控件的名称;format为排序规矩,是string类型,由字段、函数、ASC或DESC、逻辑联络符、常数构成。可以应用字段名,也可以应用字段号来默示字段,字段号的格局是#X,此中X为正整数。该函数正确履行返回1,不然返回-1。
和SetFilter函数类似,当指定format为空("")时,可以作废排序,当指定format为Null时,可以由用户指定排序规矩。
应用函数SetSort后,再应用Sort函数才干从头分列数据。
该函数的格局是:
dwcontrol.Sort ( )
此中,dwcontrol是和SetSort中同名的数据窗口控件名称。该函数正确履行则返回1,不然返回-1,若是参数dwcontrol为Null,则返回Null。



★SelectRow
选中指定的行
dwcontrol.SelectRow ( row, boolean )
此中,dwcontrol是数据窗口控件的名称;row是行号,该参数为0则默示是对数据窗口中的所稀有据行进行操纵;boolean默示是否选中,若是是True,默示选中行号row的数据行,若是是False则作废。该函数正确履行返回1,产生错误返回-1,若是参数有Null则返回Null。



★PrintSetup、Print、PrintOpen、PrintDatawindow、PrintClose、PrintCancel
PrintSetup():
打印设置
PrintOpen():
启动打印功课
PrintOpen函数用来打开一个功课,并返回当前可以应用的打印功课号,该打印功课号可以标识当前的打印工作。该函数的语法是:
PrintOpen ( { jobname } )
若是产生错误,该函数返回-1。打印功课名称是可选的,名字在打印队列中。在打印功课的最后必须封闭打印功课,使PowerBuilder和Windows清除打印功课所占用的所有资料。是以,每个启动功课的语句都有一个封闭功课的语句相对应。
PrintClose()、PrintCancel():
封闭打印功课
有两个函数可以用来封闭打印功课。PrintClose()函数把当前页传送给打印机,并封闭当前打印功课。语法格局为:
PrintClose(printjobnumber)
函数PrintCancel()作废打印功课并删除当前的打印文件。这个函数可以与Print或者PrintDataWindow()函数组合应用。用于PrintDatawindow()的语法是:
DatawindowControl.PrintCancel()
用于Print()的语法是:
PrintCancel(printjobnumber)
PrintClose()函数和PrintCancel()函数是互相排斥的,成功调用过一个今后,不要在没有再次打开打印功课时调用另一个函数。
PrintDatawindow():
该函数是以单个打印功课的情势打印数据窗口控件中的内容。PowerBuilder应用数据窗口对象中定义的字体和布局进行打印。用这个函数可以在一个打印功课中打印多个数据窗口,然则每个数据窗口控件都从新的一页开端打印;若是要让几个数据窗口打印在同一页中,则须要哄骗底层的打印函数或将要打印在同一页中的数据窗口,创建成一个composite显示样式的数据窗口。PrintDatawindow函数的语法是:
PrintDatawindow(printjobnumber,datawindow)
此中,printjobnumber是PrintOpen函数返回的打印功课号,datawindow是要打印的数据窗口控件的名称。除了可以或许和Printopen()、PrintClose()函数共同应用外,其他函数都不克不及和PrintDatawindow共同应用。下面是一个完全地应用函数PrintDatawindow()进行数据窗口打印的例子,该例子中同时打印三个数据窗口:
Long ll_job
Ll_job = PrintOpen("数据窗口打印")
PrintDatawindow(ll_job,dw_1)
PrintDatawindow(ll_job,dw_2)
PrintDatawindow(ll_job,dw_3)
PrintClose(ll_job) //封闭打印功课
Print():
该函数是一个通用的函数,可以用来打印PowerBuilder中很多可视对象。下面介绍打印数据窗口时的语法,格局如下:
datawindowname.Print ( { canceldialog } )
datawindowname为要打印的数据窗口控件名称,canceldialog是一个boolean型变量,指导在打印时是否显示一个无模式的可以随时作废打印的窗口,该变量缺省为True。该函数正确履行则返回1,履行过程中产生错误则返回-1。
*固然该函数和PrintDatawindow一样都可以打印数据窗口,然则它们之间是有区此外。Print函数应用设置在数据窗口对象的打印规范来打印数据窗口,而PrintDatawindow函数应用打印机当前的设置来打印数据窗口。