融海咨询informix_4gl教材第三十六章INPUTARRAY语句的子句.doc_第1页
融海咨询informix_4gl教材第三十六章INPUTARRAY语句的子句.doc_第2页
融海咨询informix_4gl教材第三十六章INPUTARRAY语句的子句.doc_第3页
融海咨询informix_4gl教材第三十六章INPUTARRAY语句的子句.doc_第4页
融海咨询informix_4gl教材第三十六章INPUTARRAY语句的子句.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三十六章INPUT ARRAY语句的子句本章讲了INPUT ARRAY语句中有效的子句及其使用方法。INPUT ARRAY语句可以带子句,子句在指定时间完成指定任务。有效的子句列在上图中。HELP数字:用于描述帮助信息,这个帮助信息是为INPUT ARRAY语句产生的,与这个帮助号相关的信息用于响应整个INPUT ARRAY语句,而不是某个域。在“使用带子句的INPUT语句”章节中讲到了域层帮助。BEFORE ROW:光标进入元素的第一个域之前把控制权交给INFORMIX-4GL语句。BEFORE INSERT:在用户按了F1(INSERT键)或在进入新之素的第一个域时把控制权交给INFORMIX-4GL语句。BEFORE DELETE:在那按了F2(删除键)时把控制权交给INFORMIX-4GL语句。BEFORE FIELD 域名:当光标进入指定域时把控制权交给INFORMIX-4GL语句。(本页继续上页内容)AFTER ROW:当光标离开一个元素,但在到达一个新元素之前把控制权交给INFORMIX-4GL语句,也这包括按F1(INSERT键)。AFTER INSERT:在用户按了F1(INSERT键)或在新元素的最后一个域之后把控制权交给INFORMIX-4GL语句。AFTER DELETE:用户按了F2(DELETE键)后把控制权交给INFORMIX-4GL。AFTER FIELD域名:当光标离开指定域时把控制权交给INFORMIX-4GL语句。AFTER INPUT:在用户输入完信息后把控制权交给INFORMIX-4GL语句,在这个保留字之后的语句在用户按了ACCEPT键或INTERRUPT键之后执行。ON KEY (键列表):当用户按列在键表中的某键或某些键时把控制权交给INFORMIX-4GL语句。NEXT FIELD域名:是使INFORMIX-4GL把光标立即移到指定域的保留字。这个语句用于改变INPUT语句正常的光标移动顺序。EXIT INPUT:引起INFORMIX-4GL立即跳出INPUT语句。END INPUT:结束INPUT语句的保留字。若INPUT带子句则必须用这个语句,但若没有子句就不能用END INPUT语句。可以把屏幕数组看作是程序数组上的滑动窗口。在上图例子中,用户最多可以输入十行数据(元素),但每次只能看到其中的五行,要通过光标键,在程序数组中上、下移动,才能看到所有数据。数组的大小定义屏幕数组和程序数组时,程序数组的维数必须大于或等于屏幕数组的大小。要知道相对于数组的位置知道当前位置是在数组中的哪条是很重要的,例如:有可能是屏幕数组的第五个元素而相对于程序数组是第六个元素,所以必须能标识光标当前在屏幕数组和程序数组是第几个元素。INFORMIX-4GL有两个库函数用于决定在数组中的位置。l l scr-line()函数用于指明光标在屏幕数组中的位置。用法如下:define scrloc smallintlet scrloc = scr_line()l l scrloc变量包含的数字代表光标当前在屏幕数组元素中是第几个,库出数arr_curr()用于表明光标在程序数组中的位置,它的用法同scr_line():define prgloc smallintlet prgloc = arr_curr()prgloc变量包含的数字代表光标当前在程序数组元素中是第几个。l l 另外两个用到的函数:arr_count()函数用于指明程序变量中包含的元素个数。set_count()函数在屏幕上显示程序数组变量时用到,其用法在其它章讲。简单的动作潜在地触发了子句的执行,因此,了解子句的执行顺序是很重要的。这些子句包括:l l BEFORE ROWl l BEFORE INSERT DELETEl l ON KEYl l BEFORE FIELDl l AFFER INSERT,DELETEl l AFTER FIELDl l AFTER INPUTl l AFTER ROW例如,假设由于某种原因,INPUT ARRAY语句用到了所有子句,用户在第一个元素后面按了RETURN,执行的子句及其顺序列在上图中。INPUT ARRAY 有如此多的子句,很难决定用哪个子句好。上图中列出了在INPUT ARRAY语句中编码要实现的功能。l l数据校验在INPUT ARRAY中的数据校验同INPUT语句,不同点是INPUT ARRAY要知道对哪个元素进行校验。这个信息由库函数提供,一般在AFTER FIELD子句中进行校验。l l从库函数接收值从库函数接收要校验的元素,一般用AFTER子句接收当前元素,用BEFORE子句接收将要移到的元素。l l防止输入NULL元素防止用户输入NULL元素是非常重要的,当光标移到新元素,但在用户输入数据之前,arr_count库函数的值增加,若这时在INSERT语句中用arr_count库函数提供的值,相当于插入了NULL行,这种情况可以通过建表时保证表中至少有一个域非空来避免。程序实例:manu_arr.4gldatabase storesglobals define ga_manufact array10 of 为manufact定义了一个十元record like manufact.*素的程序数组。end globalsmain defer interruptopen window manu_array at 3,3打开了一个带manu_array的 with form manu_arrayForm的窗口。这个Form由五元 attribute(border)素的屏幕数组组成。menu MANY MANUFACT command Add Input up to ten manufacturers. call inpar_manufact() command Query View manufactures. call dummy() command Exit Return to main menu. exit menuend menuclose window manu_arrayend mainfunction dummy()error Function not yet implemented.end functionfunction inpar_manufact()define i smallint此变量用于数组初始化循环和INSERT循环。define pa_elem smallint此变量用于跟踪在程序数组中的位置。let pa_elem = nulllet int_flag = falsefor i = 1 to 10initialize ga_manufacti.* to nullend forclear forminput array ga_manufact from sa_manufact.* after field manu_code let pa_elem = arr_curr() if pk_check(pa_elem) then表明代码在程序数组中。 error This code already exists. Re-enter, or press F2 to delete this entry. next field manu_code end ifend inputif int_flag then let int_flag = false error Add aborted.else for i = 1 to arr_count() insert into manufact values (ga_manufacti.*) end forend ifend functionfunction pk_check(pa_elem)define pa_elem, man_count smallintselect cou

温馨提示

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

评论

0/150

提交评论