指定日期后第n天的日期;当n的值小于0时返回参数date指定日期前第n天的日期。如果任何参数的值为NULL,则RelativeDate()函数返回NULL。
**********************************************************************************88 keydown(keycode)
//决定用户是否按了相应键。
如:KeyDown(keya!)//用来判断用户是否了按了a(A)
********************************************************************* dwprimary.sharedata(dwsecondary)
//功能:在主数据窗口和从数据窗口之间共享数据。 dwprimary:用于主数据窗口的数据窗口控件名。dwsecondary:从数据窗口控件名,该数据窗口控件与主数据窗口控件共享数据。
用法:使用此函数此,要求主数据窗口控件与从数据窗口控件中的数据窗口对象列必须相同,但各自使用的SELECT语句可以不一样。由于数据窗口并不检索数据,因此,两个数据窗口中的数据均由主数据窗口的WHERE子句来实现。 另注:要终止数据窗口的数据共享,调用sharedataoff()。
**************************************************************
dw1.rowscopy(startrow,endrow,copybuffer,targetdw,beforerow,targerbuffer)
//功能:将一个数据窗口控件中指定的行复制到另外一个数据窗口,或将数据窗口控件中一个缓冲区的指定行复制到另外一个缓冲区
copybuffer:dwbuffer类型,指定从哪个缓冲区复制行。其取值为:primary!,delete!,filter!
targetdw:dwbuffer类型,指定复制的数据放置到目的数据窗口控件的哪个缓冲区中。有效取值为:同上
beforerow:long 类型,指定复制的数据插入到哪一行前面。 返回: 1 success,-1 fail
用法:使用些函数把某些复制到目的数据窗口控件后这些行行的修改状态为:newmodified!(注:使此函数复制数据时,对于目的数据窗口控件来说,下拉数据窗口风格的列中的数据并不会自动检索出来,应用程序必须对目的数据 窗口中这些列明确执行retrieve() 例:
dw_1.rowscopy(dw_1.getrow(),dw_1.rowcount(),primary!,dw_2,1,primary!) //把数据窗口dw_1中当前行之后的所有行复制到第二个数据窗口dw_2的主缓冲区中。
********************************************************************************************
****************************************** 使用windows系统对话框
1.GetFileopenname(title,pathname,filename{,extension{,filter}})
//功能:显示打开文件对话框,允许用户选择文件,并可以设置文件名的过滤方式。
title:string类型,表示对话框的名字。pathname:string类型,用来保存用户选择文件的和文件名。extension:string类型,可选项,使用1到3个字符
指定缺省的扩展文件名,filter:string类型,可选项,其值为文件名掩码,指定显示在该对话框的列表框中供用户选择的文件名满足的条件。 返回值:1 成功,-1错误,0 用户没选择任何文件。 如:string docname,named integer value
value=getfileopenname(\选择文件\files(*.txt),*.txt,doc files(*.doc),*.doc\ if value=1 then
fileopen(docname) end if
2.GetFileSaveName(title,pathname,filename{,extension{,filter}}) // 功能:显示保存文件对话框,让用户选择要保存到的文件。 title:string类型,指定对话框的标题. pathname:string类型变量,用于保存该对话框返回的文件路径及文件名.filename:string类型变量,用于保存该对话框返回的文件名.
extension:string类型,可选项,使用1到3个字符指定缺省的扩展文件名,filter:string类型,可选项,其值为文件名掩码,指定显示在该对话框的列表框中供用户选择的文件名满足的条件
(比如*.*,*.TXT,*.EXE等)返回值Integer。函数执行成功时返回1;当用户单击了对话框上的“Cancel”按钮时函数返回0;发生错误时返回-1。如果任何参数的值为NULL,那么GetFileSaveName()函数返回NULL。
如:if GetFileSaveName(\保存文件\文件,*.xls\将dw_1保存到filname中 dw_1.saveas (FileName,excel!,false) end if
**********************************************************************************************
dw_1.saveas({filename,saveasytpe,colheading})
//功能:将数据窗口控件的内容保存到指定格式的文件中
filename:string类型,其值是用来保存数据窗口内容的文件的文件名。 savaastype:其值可为:clipboard! (剪贴板),excel! ,excel5!,html table!,text!,dbase2!等。
colheading:boolean类型,指示是否在文件的开头加上数据窗口的标题,默认值为:true
返回:1 成功,-1 失败
****************************
FileOpen(filename{,filemode{,fileaccess{,filelock{,writemode,{creator,filetype}}}}})
//功能:以指定的读写方式打开指定的文件,同时返回该文件的句柄。
filename:string类型,指定要打开文件的名称,其中可以包含路径;filemode:FileMode枚举类型,可选项,指定文件打开方式.LineMode! - 缺省值,行模式 ,StreamMode! - 流模式;fileaccess:FileAccess枚举类型,可选项,指定文件访问方式。有效取值为:Read! - 缺省值,只读方式,这样打开的文件只能进行读操作;Write! - 只写方式,这样打开的文件只能进行写操作.
filelock:FileLock枚举类型,可选项,指定文件加锁方式。有效取值为:n LockReadWrite! - 缺省值,只有打开该文件的用户能够访问该文件,其它用户对该文件的访问均被拒绝;n LockRead! - 只有打开该文件的用户能够读该文件,但其它任何用户均可写该文件;n LockWrite! - 只有打开该文件的用户能够写该文件,但其它任何用户均可读该文件;n Shared! - 所有用户均可读写该文件writemode:WriteMode枚举类型,可选项,当fileaccess参数指定为Write!时,该参数指定在指定文件已经存在时数据的添加方式。有效取值为:?Append! - 缺省值,将数据添加到原文件尾部;?Replace! - 覆盖原有数据creator:可选项,用于Macintosh机,使用四个字符的字符串指定文件的创建者。指定该参数后,必须同时指定filetype参数filetype:可选项,用于Macintosh机,使用四个字符的字符串指定文件类型返回值 返回值为:integer类型,成功时,返回打开文件的句柄。
***************************************************************************
filerwrite(fileno,variable) //向指定文件中写数据
fileno:integer类型,指定文件句柄(由FileOpen()函数得到)。variable:string或blob类型,其值将写入fileno参数指定的文件.
返回值 :integer类型,。函数执行成功时返回写入文件的字符或字节数,发生错误时返回-1。
*****************************************************************************
在数据窗口中的某个对象中的Expression中加入: if (boolean,truevalue,falsevalue)
其中:boolean:为逻辑表达式,如:salary>1000 truevalue:为string类型,其值表示为当前面的逻辑表达为true时返回的值。falsevalue:为string类型,其值表示为当前面的逻辑表达为false时返回的值。 例如:if (salary>1000,\雇主\服务员\ 如果工资salary>1000时,返回雇主,否则为服务员。
另外:if (salary>1000,\大老板\中老板\小老板\:如果工资大于1000返回大老板,在800~1000为中老板,小于800为小老板
例二:if (sex=\男\将此语句放到(人名列)下border属性中的expresion下,将使所有性别是男的人名显示出边框为5的效果。
例三:IF(MOD(GETROW(),2)=0,RGB(230, 240, 240), RGB(255, 255, 255)) 此语语句放到数据窗口的属性中(datawindow.detail.color)将单数行的数据窗口颜色设为RGB(255, 255, 255),偶数行的设为:RGB(230, 240, 240) ************************************************************** 有关数据窗口对象的访问:
1.使用列名或计算域的名称访问一个数据或者所有数据时的语法:dw1.object.列名.{.buffer}{.datasource}{[rownum]}
buffer:primary(default),delete,filter datasource://可选项,指定数据来源。取值:current:(default)数据窗口控件占的当前值;original:从数据库中最初检索到的数据值。对于计算域来说,必须指定为此参数。
rownum:为optial项,要访问的数据所在的行号。如果要访问某一列的所有数据,可省略此参数。但是必须指定datasourc和buffer中的一个。 如:string
ls_namearray[] ls_namearray=dw_1.object.emp_name.current //得到数据窗口主缓冲区中emp_name列所有的当前值,并存于数组中。
ls_namearrary=dw_1.object.emp_name.original //得到数据窗口主缓冲区中emp_name列中的原始值(从数据库中提取到的值,用户未作修改)存于数组。
(*注:dw_1.object.emp_name 却不是数据,而为dwobject类型,引用了数据窗口dw_1中的列对象。
2.访问列名指定列中用户选中的数据的语法:dw_1.object.列名{.primary}{.datasource}.selected
primary:可以不写。datasourc: 指定数据来源。有取值为:取值:
current:(default)数据窗口控件占的当前值;original:从数据库中最初检索到的数据值。对于计算域来说,必须指定为此参数。
selected:必须写,说胆要得到指定列所选行的数据。 返回值:返回一个数组,该数组中的每一个值的类型都与列的数据类型相同。 如:dw_1.object.emp_name.selected 与
dw_1.object.emp_name.primary.selected ,dw_1.object.emp_name.current.selected,dw_1.object.emp_name.priamry.current.selected 都等价 //都访问emp_name列所行选行的当前数据。
如:string ls_emp_name[] ls_emp_name[1]=\张三\
dw_1.obect.emp_name.selected=ls_emp_name // 将所选行第一行的emp_name 列设置为“张三”,其它行的emp_name不变。 如:string
ls_emp_name[] ls_emp_name=dw_1.object.emp_name.original.selected //得到所选行emp_name列的值,并将其保存到一个字符串数据中。
3.访问列名指定列中的某个范围的数据:. 要访问的由列名指定的列在某些连续行中的数据格式:dw_1.object.列
名.{.buffer}{.datasource}[startrownum,endrownum] 如:
dw_1.object.emp_name.primary.current[1,dw_1.rowcount()] //返回emp_name列所有在主缓冲区的当前值。 .使用列号访问单个数据:
dw1.object.data{.buffer}{.datasourc}[rownum,colnum]
如:dw1.object.data.primary.current[1,2] //访问数据窗口在主缓冲区的第一行每二列单元的当前值。
dw1.object.data{.buffer}{.datasource}[startrownum,starcolumn,endrownum,endcolnum]
如:dw_1.object.data[1,1,20,5] //访问数据窗口当前缓冲区 如:integer li_filenum long
ll_deleterows str_namelist lstr_naemlist[] //结构数组,存储人员编号和姓名
ll_deletedrows=dw_1.deletedcount() lstr_namelist=dw_
1.object.data.delete[1,1,ll_deletedrows,2] //得到删除缓冲区中所有数据
li_filenum=fileopen(\
for ll_count=1 to upperbound(llstr_namelist) filewrite(li_filenum,string(lstr_namelist.id)+\ next
fileclose(li_filenum)
//////////////假设人员编号和人员姓名是数据窗口中的前两列,其功能是得到删除缓冲区中所有的人员编号和姓名,并把它们保存到文本文件deleted.txt中。
dw1.object.data{.buffer}{.datasource}{[rownum]}
指定行号时,行号要放置在方括号内。此时上表达式返回一个结构,结构中每个元素对应于数据窗口中的每个列,其数据类型必须相同。
如:dw1.object.data[5] //得到数据窗口主缓冲区中第五行数据的当前值
4.访问所选行的数据:dw1.object.data{.primary}{.datasource}.selected 如:dw1.object.data.selected //访问数据窗口主缓冲区中选中行数据的当前值。
*************************************************************************
******************************************************************** 数据窗口对象属性的取值、类型和访问技巧
1.数据窗口画笔表达式 (数据窗口表达式可以是:运算符、数据窗口中控件的名称、数据窗口表达式函数、用户自定义函数。 格式:default~t 数据窗口表达式 //~t 是tab字符,起分隔作用。
如:dw_1.object.emp_name.backgroup.color=\if(address='北京',15790320,1677215)\等价于:在emp_name 列的backgroup.color中设置了:if(address='北京',15790320,1677215) 2.数据窗口属性表达式的基本语法:
dw1.object.dwcontrolname{.property}.property{=value} 其中:dwcontrolname:数据窗口对象中控件的名称。取值为:datawindow、列名、计算域名、gragh,line,oval,picture,rectangle,roundrectangle,report(报表),talbeblod,text控件的名称。
(*注:当dwcontrolname是下拉数据窗口或是报表或是ole对象时,可使用另外一个object关键字和dwobjectname来进一步引用更深层次 嵌套对象属性的要求。
value:当属性要求yes或no这样的值时,value可以是字字符串\