chareter oracle,Oracle数据库的操作程序.pdf-汇文网

dc60c5ff59da21688d9d4d0085fbffa9.gifOracle数据库的操作程序.pdf-汇文网

管理信息化 ORACLEOracle 数据库的 操作程序 1Developer/2000中各键盘触发子所对应的“按键”2 2 中,当光标走到块的最后一项时,如何让按 “enter回车”键时,光标自动走到下一条记录的第一项 3 3 如何在启动 程序时直接登录到 Oracle 数据库 上3 4中,如何通过 ODBC 访问 Acress 数据3 5从中调用REPORT时,如何使打印结果直接输出 到打印机上4 6调用REPORT时,如何去掉report server4 7中,如何实现屏幕同步刷新4 8 在 Developer/2000 中如何读写文本型操作系统文 件4 9如何改变FMX模块运行时的title5 10中,如何修改系统提示信息默认英文为中文 5 11中,怎样创建动态下拉列表List6 12中,如何引入图像,制作封面7 13运行时,如何使按钮变灰(即无效)7 14中,设置应用特性光标类型7 15 运行 时,如何使窗口(runtime 窗口、画布窗 口)自动变成最大化、最小化7 16中,WINDOW标题的设置7 17中,Exception例外都有哪些,如何书写8 18 如何在 运行中,使定制菜单中的“窗口W” 菜单项不显示8 19中,如何屏蔽默认的功能键8 20中,触发子exit_的两种功能是什么9 21 中如何存取图象如何把图象从一个表中导到 另一个表中9 22中如何存取声音10 23 中,当用鼠标点击标签画布的某一“标签页” 时,如何判断点击的是哪一页10 24中,常用快捷键有哪些10 25如何发布Developer/2000应用程序11 26中,点击按钮实现字段排序11 27 为什么在触摸屏上,我的按纽不响应我的“按”动 作11 28为什么我的FMX程序里没有Message line11 29中,如何设置水平滚动条11 30中,触发子POST-CHANGE的作用11 31中,触发子WHEN-VALIDATE-ITEM的作用11 32中,触发子POST-QUERY的作用11 33怎样在中使用宏11 34如何调用外部操作系统命令13 35临时表的作用13 36中,怎样使用KEY-Fn(n0.9)触发子13 37用户出口函数USER_EXIT如何编写13 38如何从REPORT中调用、GRAPHICS程序13 39如何从GRAPHICS中调用、REPORT程序13 40Oracle中s 与Reports的集成13 41 在 DEVELOPER2000 中利用 DDE 将数据倒入到 EXCEL 文件中的方法16 42 使用设置菜单项属性及 数据项属性限制不同 用户的访问范围20 43提高表连接的查询速度20 44利用用库模块实现模块资源共享20 45易导致查询数据错误的原因20 46使用视图组织报表数据简单且易于维护20 47给报表加序号的简单办法21 48 用 S 实 现 ORACLE 数 据 库 与 其 它 数 据 源 数 据 的 交 换21 49S 4.5 实 现 的 列 表 查 询、 多 行 录 入 中 的 实 现 行 累 计22 50REPORT 2.5 中 实 现 的 动 态 报 表( 一 张 表 利 用 多 个QUERY 语 句, 生 成 一 样 格 式 的 多 张 报 表22 51如何屏蔽系统提示信息23 52 在编写 PL/SQL 代码中使用 SELECT 语句时如何避免 例外发生23 53当使用主从块时,如何使从块自动提交23 54如何减少所占磁盘空间23 55如何使定制菜单的主菜单中WINDOWS项不显示23 56如何使不同布局的报表显示在同一页上23 57怎样较快的生成FMX文件24 58如何在中同时加入水平与垂直滚动条24 59如何在告警框内显示message信息24 60如何一次退出所有25 61如何在与REPORT之间传递参数25 62从调用REPORT时,如何使REPORT以满屏方式 显示26 63如何关闭REPORT运行时的参数窗口26 64在Oracle中实现报表的定长输出27 65Developer/2000 FROMS 4.5 中 的 宏 代 换28 66 用 S 实 现 ORACLE 数 据 库 与 其 它 数 据 源 数 据 的 交 换29 67S 4.5 实 现 的 列 表 查 询、 多 行 录 入 中 的 实 现 行 累 计30 68REPORT 2.5 中 实 现 的 动 态 报 表( 一 张 表 利 用 多 个QUERY 语 句, 生 成 一 样 格 式 的 多 张 报 表31 69 用 ORACLE*s 和 ORACLE*Graphics 实现数据与 图形动态显示31 70数字分金额转成大写汉字元金额程序33 Developer/2000中各键盘触发子所对应的“按键” 封装过程键触发子含义对应按键 ABORT_QUERYKey-EXIT退出/取消 BLOCK_MENUKey-MENU块菜单F5 CLEAR_BLOCKKey-CLRBLK清空块ShiftF5 CLEAR_Key-CLRFRM清空ShiftF7 CLEAR_RECORDKey-CLRREC清空记录ShiftF4 COMMIT_Key-COMMIT提交/存盘F10 COUNT_QUERYKey-CQUERY计算查询记录总数ShiftF2 CREATE_RECORDKey-CREREC插入新记录F6 DELETE_RECORDKey-DELREC删除记录ShiftF6 DOWNKey-DOWN下滚记录Ctrll、下箭头 DUPLICATE_ITEMKey-DUP-ITEM复制域/项F3 DUPLICATE_RECORDKey-DUPREC复制记录F4 EDIT_TEXTITEMKey-EDIT打开编辑器CtrlE ENTERKey-ENTEREnter ENTER_QUERYKey-ENTQRY输入查询条件F7 CUTE_QUERYKey-QRY执行查询F8 EXIT_Key-EXIT退出/取消查询CtrlQ HELPKey-HELP帮助F1 LIST_VALUESKey-LISTVAL显示值列表LOVF9 LOCK_RECORDKey-UPDRECLockRecord NEXT_BLOCKKey-NXTBLK下一块CtrlPageDown NEXT_ITEMKey-NEXT-ITEM下一域/项CtrlTab、Tab、Enter NEXT_KEYKey-NXTKEY定位到下一个主键项ShiftF3 NEXT_RECORDKey-NXTREC下一条记录ShiftDown NEXT_SETKey-NXTSET下一个记录集Ctrl PREVIOUS_BLOCKKey-PRVBLK前一块CtrlPageUp PREVIOUS_ITEMKey-PREV-ITEM 前 一 域 / 项 ShiftTab 、 ShiftCtrlTab PREVIOUS_RECORDKey-PRVREC前一条记录ShiftUp PRINTKey-PRINT打印当前屏幕ShiftF8 SCROLL_DOWNKey-SCRDOWN下翻屏PageDown SCROLL_UPKey-SCRUP上翻屏PageUp UPKey-UP上滚记录Ctrlp、上箭头 Esc取消 Backspace向后删除 CtrlU清除域/项 CtrlF1显示有效的功能键列表 ShiftF1发生错误时,显示错误窗口 中,当光标走到块的最后一项时,如何让按“enter回车” 键时,光标自动走到下一条记录的第一项 设置块属性 导航器风格改变记录 如何在启动程序时直接登录到Oracle数据库上 1、调入Builder,打开一个新的 2、在表格级新建一个ON_LOGON触发器 3、在ON_LOGON里输入以下代码 DECLARE PASS1VARCHAR280;PASS1为密码参数 BEGIN LOGONUSER1,USER1TNS1; SELECTPASSINTOPASS1FROMT_PASSWORDWHEREUSERNAMEUSE R2; LOGOUT; LOGONUSER2,PASS1TNS1; END; 中,如何通过ODBC访问Acress数据 1. 在控制面板中选取ODBC控制源 2. 系统DSN 3. 添加D. 4. 选 定 您 需 要 的 驱 动 程 序 来 安 装 数 据 源 S MicrosoftAcressDriver*.mdb 5. 完成F 6. DateSourceNameaaa(aaa 就是数据源名称,也就是在 应用程序中所要使用的) 7. 选择一个mdb数据库文件(select) 8. 高级属性设置用户名、口令 9. OK 10.打开一个 11.文件F连接E 12.用户名/口令odbcaaa 13.连接O 从 中调用 REPORT 时,如何使打印结果直接输出到打印机 上 在parameterlist中加入parameter_No Add_parameterlist_id,PSRAMETER_,TEXT_PARAM ETER,NO; 调用REPORT时,如何去掉reportserver Add_parameterlist_id,ORACLE_SHUTDOWN,TEXT_PARA METER,YES; 中,如何实现屏幕同步刷新 现象说明 中,在做一连串大的操作时,有时希望用 message 来显示提示信息,但屏幕却不刷新, 解决方法 message信息1; synchronize;同步屏幕显示 message信息2; synchronize; 在Developer/2000中如何读写文本型操作系统文件 PL/SQL3.3以上的版本中,UTL_FILE包允许用户通过PL/SQL 读写操作系统文件。如下 declare file_handleutltype; begin file_handleutl_CA;是文件名 utllinefile_handle,写入的信息; utl_file_handle; end; Developer/2000中,可以用Text_IO读写操作系统文件。如 下 DECALRE in_fileTextType; out_fileTextType; BEGIN in_fileText_文件名,R; TextLinein_file,linebuf; Text_in_file; out_fileText_文件名,W; TextLineout_file,写入信息; Text_out_file; END; 常用TEXT_IO Declare out_filetexttype;定义 Begin out_filetext_prn,w;打开文件prn textlineout_file,;新建一行 textlineout_file,写入一行 text_out_file;关闭文件 End; -文本输入输出 TEXT_IO TEXT_ TEXT_ TEXTTYPE TEXT_ TEXTOPEN TEXTLINE TEXTLINE TEXT_ TEXT_ TEXTLINE Declare Out_fileTexttype; LVarchar2100; L1Varchar2100; L2Varchar2100; Begin Out_filetext_cll,r; IftextopenOut_filethen textlineOut_file,L; textlineOut_file,L1; textlineOut_file,L2; Else Null; Endif; End; 如何改变FMX模块运行时的title 1、 Developer/2000 中 FMX 默 认 title 为 Developer/2000sRuntimeforWindows95/NT 2、 在 级 触 发 器 中 添 加 触 发 WHEN-NEW--INSTANCE 3、 在此触发器中写如下代码 4、 SET_WINDOW_PROPERTYS_MDI_WINDOW,TITLE, 您的提示; 中,如何修改系统提示信息默认英文为中文 1、 调入Builder,打开一个新的 2、 在表格级新建一个ON_ERROR 触发器 3、 在ON_ERROR 里输入以下代码 begin if error_code40100thenmessage已在第一条记录; elsiferror_code40102thenmessage您已在最后一条记录,请 先输入处理此记录,然后再输入下一条记录; elsiferror_code40200thenmessage此项仅用于查询参考,您 无法更改此项; elsiferror_code40202thenmessage此项必须输入产生错 误原因您未输入值,或您删去了原有值; elsiferror_code40203thenmessage值必须输入完全产生 错误原因该项有定长要求; elsiferror_code40207thenmessage您输入的值不在有效范 围之内,请输入有效范围之内的值; elsiferror_code40401thenmessage您没有修改或输入任何 新的记录,无须保存; elsiferror_code40508thenmessage编码不能相同,不能有相 同编码的记录,编码必须唯一; elsiferror_code40509thenmessage严重操作错误,您可能 输入了一个空的记录,无法保存记录; elsiferror_code41802thenmessage您只能在输入新的记录 时使用复制记录键,来复制上一条记录; elsemessageerror_type_to_charerror_code error_text; endif; raise_trigger_failure; end; 中,怎样创建动态下拉列表List 1、打开Builder 2、文件F新建N表格F 3、新建一个非数据块,取名为tool 4、鼠标右键布局编辑器E 5、建一个列表项,名为xl(属于tool块) 6、新建一过程,内写如下的代码 PROCEDUREcreate_xlIS动态显示学历过程 CURSORAISSELECTDISTINCTxlFROMt_xl;建立a游标,从 学历档案表取原始数据(有可能动态变化) CNTNUMBER;记录总数变量,用于生成列表的总项数 iNUMBER;循环变量 TNAMEt_TYPE;TNAME 变量和 t_xl 表中 name 项具有相同 的结构 BEGIN CLEAR_LIST;清空列表(tool块上的xl项) SELECTCOUNTDISTINCTnameINTOCNTFROMt_xl;计算列 表总数 OPENA;打开游标 FORiIN1CNTLOOP开始循环 FETCHAINTOTNAME;取数 EXITWHENANOTFOUND;退出条件 ADD_LIST_ELEMENT,i,TNAME,TNAME;把查询出的值加 入列表中(序号,实际值,显示值) ENDLOOP;结束循环 CLOSEA;关闭游标 END; 7、在级触发器中添加触发WHEN-NEW--INSTANCE 在此触发器中写如下代码create_xl; 使 程序一启动,就调用此过程,达到动态生成下拉列 表List的效果。 附 学历档案表 createtablet_xlnamevarchar26; insertintot_xlvalues小学; insertintot_xlvalues初中; insertintot_xlvalues职高; insertintot_xlvalues技校; insertintot_xlvalues高中; insertintot_xlvalues中专; insertintot_xlvalues大专; insertintot_xlvalues本科; insertintot_xlvalues研究生; mit; 中,如何引入图像,制作封面 1、 打开Builder 2、 文件F新建N表格F 3、 鼠标右键布局编辑器E 4、 文件F导入I图象I 5、 可调入作好的图像,以制作封面。 6、 所支持的图像格式有TIF、JPG、BMP、TGA、PCX、PCT、 GIF、CAL、RAS、OIF、PCD等 运行时,如何使按钮变灰(即无效) set_item_property 按 钮 名 称 ,ENABLED,PROPERTY_FALSE; 中,设置应用特性光标类型 在级触发器中添加触发WHEN-NEW--INSTANCE SET_APPLICATION_PROPERTYCURSOR_STYLE,CROSSHAIR |BUSY|HELP|DEFAULT|INSERTION; 运行时,如何使窗口(runtime窗口、画布窗口)自动变成 最大化、最小化 1. 在 级 触 发 器 中 添 加 触 发 WHEN-NEW--INSTANCE 2. 在此触发器中写如下代码 SET_WINDOW_PROPERTYS_MDI_WINDOW,WINDOW_STATE,MAXIM IZE;最大化 SET_WINDOW_PROPERTYS_MDI_WINDOW,WINDOW_STATE,MINIM IZE;最小化 中,WINDOW标题的设置 1. 在级触发器中添加触发WHEN-NEW--INSTANCE SET_WINDOW_PROPERTYS_MDI_WINDOW,title,你要写的标 题; 或用以下方法 2.对象导航器窗口WINDOW0(窗口的名字)属性标题 修改其属性 中,Exception例外都有哪些,如何书写 BEGIN PL/SQL块; Exception whenno_data_foundthen没有找到数据 响应命令; whentoo_many_rowsthen返回多行,隐式光标每次只能检 索一行数据 响应命令; wheninvalid_numberthen字符向数字转换失败 响应命令; whenzero_dividethen被零除 响应命令; whendup_val_on_indexthen向唯一索引中插入重复数据 响应命令; wheninvalid_cursorthen非法游标操作 响应命令; whenvalue_errorthen数字的,数据转换,截字符串或强制 性的错误 响应命令; whenothersthen发生其它任何错误 null;选择一什么也不做,就当错误没发生 raise_trigger_failure;选择二挂起当前程序 END; 如何在运行中,使定制菜单中的“窗口W”菜单项不显示 对象导航器窗口WINDOW0(窗口的名字)属性模 式修改其属性 设置窗口属性模式是 中,如何屏蔽默认的功能键 1.在级触发器中添加触发KEY-OTHERS 2.在此触发器中写如下代码 null; 3.这样 程序运行后,大部分的功能键都被屏蔽(包 括一些必需键,如上箭头、下箭头、退出.), 要想让这些键再恢复功能,就为这些键各自编程 按键触发器代码说明 上箭头KEY-DOWNDOWN;上滚记录 下箭头KEY-UPUP;下滚记录 PageUpKEY-SCRUPSCROLL_UP;上翻屏 PageDownKEY-SCRDOWNSCROLL_DOWN;下翻屏 F1KEY-HELPHELP;显示帮助 F3KEY-DUP-ITEMDUPLICATE_ITEM;复制项 F4KEY-DUPRECDUPLICATE_RECORD;复制记录 F5KEY-MENUBLOCK_MENU;块导航菜单 F6KEY-CRERECCREATE_RECORD;插入记录 F7KEY-ENTQRYENTER_QUERY;输入查询条件 F8KEY-QRYCUTE_QUERY;运行查询 F9KEY-LISTVALLIST_VALUES;显示LOV F10KEY-COMMITCOMMIT;存盘 Enter、TabKEY-NEXT-ITEMNEXT_ITEM;下一项 SHIFTTABKEY-PREV-ITEMPREVIOUS_ITEM;前一项 CtrlQKEY-EXITEXIT_;退出/取消查询 中,触发子exit_的两种功能是什么 1、退出 exit_; 2、取消查询 ifENTER-QUERYthen exit_; endif; 中如何存取图象如何把图象从一个表中导到另一个表中 1、SQL*Plus中 SQLcreatetablet_photo1photo1longraw; SQLcreatetablet_photo2photo2longraw; 2、硬盘上c下有一个图象文件 3、打开 新建两个块t_photo1、t_photo2 t_photo1 块是数据库块,连接的表是数据库中的一个表 t_photo1 t_photo2块也是数据库块,连接的表是数据库中的另一个表 t_photo2(备份表) t_photo1 块上新建一个图象项,名为 photo1,对应的是即 表t_photo1中的photo1列 t_photo2 块上也新建一个图象项,名为 photo2,对应的是 即表t_photo2中的photo2列 新建一按钮 1,输入以下程序,这个按钮实现读入图象到表 里,即录入图象到表里 BEGIN GO_BLOCKt_photo1;到块1 READ_IMAGE_FILEc,bmp,t_photo1.photo1; 读入外部图象文件(图象类型为 BMP)到 t_photo1 块的 photo1项,也就是到了t_photo1表里 COMMIT;存盘 END; 新建一按钮 2,输入以下程序,这个按钮实现图象的倒表 (t_photo1到t_photo2) BEGIN GO_BLOCKt_photo1;到块1 cute_query; 查询出表中的图象,这时,表中的图象到了 中的图 象项上 WRITE_IMAGE_FILEc,bmp,t_photo1.photo1; 把图象项中图象写入外部图象文件 GO_BLOCKt_photo2;到块2 READ_IMAGE_FILEc,bmp,t_photo2.photo2; 把外部图象文件读入到t_photo2块的photo2项,也就是 到了t_photo2表里 COMMIT;存盘 END; 运行此程序,点击此按钮观察效果。 注释t_photo1.photo1 是正式图片表中的图象项(数据库 项)(t_photo1块photo项1) t_photo2.photo2 是备份图片表中的图象项(数据库项) (t_photo2块photo项2) 中如何存取声音 1、 硬盘上c下有一个声音文件 2、 打开 新建一个块t_sound t_sound块上新建一个声音项,名为sound1 新建一按钮1,输入以下程序 BEGIN GO_ITEMsound1; READ_SOUND_FILEc,wave,sound1; PLAY_SOUNDsound1; END; 运行此程序,点击此按钮观察效果。 中,当用鼠标点击标签画布的某一“标签页”时,如何判断 点击的是哪一页 1.在级触发器中添加触发WHEN-TAB-PAGE-CHANGED 2.在此触发器中写如下代码 DECLARE canvas_idVARCHAR230;标签页ID BEGIN canvas_idGET_CANVAS_PROPERTY 标 签 画 布 名 ,topmost_tab_page; IFcanvas_id标签页1thengo_block块1;endif; IFcanvas_id标签页2thengo_block块2;endif; IFcanvas_id标签页3thengo_block块3;endif; cute_query; END; 中,常用快捷键有哪些 CTRLS保存 CTRLT编译文件 CTRLR运行 CTRLJ连接 F1调用帮助 F2布局编辑器 F4属性选项板 如何发布Developer/2000应用程序 中,点击按钮实现字段排序 为什么在触摸屏上,我的按纽不响应我的“按”动作 为什么我的FMX程序里没有Messageline 中,如何设置水平滚动条 中,触发子POST-CHANGE的作用 中,触发子WHEN-VALIDATE-ITEM的作用 中,触发子POST-QUERY的作用 怎样在中使用宏 在早期 FOXPRO 数据库编程中,经常用到宏代换功能,但在 S 中却没有此功能,象 BEGIN forIin16loop strItemNameb.lto_chari; copynull,strItemNmae; endloop; END; 对于NAME_IN的应用可能更多一些,笔者在做社保软件 时,作保险缴费录入时曾用它少写了许多代码。当然代码的减少 就义意味维护工作量的减少 结构 养老 块YLYJ(养老应缴) 项DWJTC(单位缴统筹),DWJZH(单位缴帐户),GRJF(个 人缴费) 块YLSJ(养老实缴) 项DWJTC(单位缴统筹),DWJZH(单位缴帐户),GRJF(个 人缴费) 工伤 块GSYJ(工伤应缴) 项DWJTC(单位缴统筹),DWJZH(单位缴帐户),GRJF(个 人缴费) 块GSSJ(工伤实缴) 项DWJTC(单位缴统筹),DWJZH(单位缴帐户),GRJF(个 人缴费) 医疗 块YILYJ(医疗应缴) 项DWJTC(单位缴统筹),DWJZH(单位缴帐户),GRJF(个 人缴费) 块YILSJ(医疗实缴) 项DWJTC(单位缴统筹),DWJZH(单位缴帐户),GRJF(个 人缴费) 三个块的结构相同,只是块名称不同,缴费时时行的操 作也一样,实缴名项不能大于应缴,不用NAME_IN时,只能写三 段程序,但用了NAME_IN后只用一段写一个函数就能达到目的。 如下 FUNCTIONFUN_JFPRE_BLOCK_NAME INVARCHARRETURNBOOLEANIS BEGIN ifname_inpre_block_name name_inpre_block_nameor name_inpre_block_name name_inpre_block_nameor name_inpre_block_name name_inpre_block_namethen message实缴大于应缴; returnfalse; endif; returntrue; END; 从上面的两个例子来看 NAME_IN 和 COPY 的应用能起到 其它编程语言的宏代换功能,代码的优化方面确实能起不少的 作用,减少了程序源代码的维护工作。 Oracle中s与Reports的集成 Oracle产品Developer2000中包括多种开发工具,其中在具 体工作时用得最多的是 s 和 Reports。s 是一个设计表 单的工具,利用它可以灵活方便地定义各种表单对象,以简化用 户在运行期对相关数据库的操作(查询、插入、删除和更新等); Reports 则是一个设计报表的工具,利用它可以按照用户的要求 方便地生成报表。 在Oracle应用系统中,大量的具有交互性的功能是由s 实现的。利用s所生成的表单模块可以彼此调用,实现业务 流程的控制并完成与数据库有关的复杂操作;而由Reports所设 计的报表模块往往当做最底层的功能被表单模块所调用。对于一 些 Oracle 用户来说,独立地用好 s 或 Reports 是没有问题 的,但他们却很少考虑如何使二者有机地结合起来,利用s 对数据操纵的灵活性,由s模块向Reports模块传送大量结 构化或非结构化的实时数据,减少(或避免)Reports 对数据库 的访问,从而高速地生成报表并保证报表数据与表单数据的一致 性。本文通过实例介绍一种利用s的封装例程RUN_PRODUCT 在 s 模块中集成 Reports 模块的方法,利用该方法可以把 s 和 Reports 有机地结合起来,减少不必要的操作,提高工 作效率。 RUN_PRODUCT例程 在 s 模块中调用 Reports 模块,最有效的方法是利用 s 的封装例程 RUN_PRODUCT。目前,很多程序开发人员在 s 模块中调用 Reports 模块时,或者没有采用这一例程,或 者虽然采用这一例程但并没有充分利用参数表来传递表单中现 成的数据,或者只是利用参数表来传递少量的文本参数(非结构 化数据)作为Reports中的查询条件,报表的数据仍然要从数据 库中查询得到,这样既增加了数据库服务器的负载,又增加了网 络的流量,而且报表生成的速度慢,丧失了数据的实时性与一致 性。因此,深入了解并熟练掌握参数表的使用方法便显得非常重 要。 在使用 RUN_PRODUCT之前要先建立参数表,并向参数表中 添加参数。RUN_PRODUCT的使用格式如下 RUN_PROCDUTREPORTS,report_name,SYNCHRONOUS,RUNT IME,FILESYSTEM,pl_id,NULL; 其中各参数含义如下 REPORTS说明被调模块是报表模块; report_name被调模块的完整路径名; SYNCHRONOUS说明被调模块以同步的通信方式运行(被 调模块退出之后主调模块才能继续执行,否则为ASYNCHRONOUS, 即异步方式); RUNTIME说明被调模块的执行方式为前台方式(否则为 BATCH,即后台方式); FILESYSTEM说明被调模块的存储位置是文件系统(否则 为DATABASE,即数据库系统); pl_id用户定义的参数表标识符。 使用参数表的要领 由s模块向Reports模块传递的数据可分为两类一类 是非结构化数据,即报表表头(表尾)的数据;另一类是结构化 数据,即报表表目的二维数据。在如图1所示的报表中,学年、 学期、班级编号、班级名称、专业名称、课程编号、课程名称、 学分、班级人数等,属于表头数据;而学号、姓名、性别、修读 性质、平时成绩、考试成绩、总评成绩、任课教师等属于表目数 据。 图1Reports模块执行情况 参数表中的参数有两种,文本参数(TEXT_PARAMETER)和数 据参数(DATA_PARAMETER)。文本参数是对字符型数据的引用, 数据参数是对记录组的引用。对于非结构化数据,可借文本参数 将数据加入参数表(注意文本参数只接受字符型数据,对于其 他类型的数据要通过 TO_CHAR函数先转化为字符型数据);而 对于结构化数据,则先要将数据存入记录组(RECORD_GROUP), 然后借数据参数才能将数据加入到参数表中。注意s 模块 的记录组中的各列和 Reports 模块中的查询(QUERY)对象的各 列在名称、类型和顺序上要完全一致。这里文本参数是字符串指 针,数据参数是记录组(结构数组)的指针,而参数表则是存储 上述指针的指针数组。 如果 RUN_PRODUCT的参数表中未加入与 Reports 模块中的 查询对象同名的数据参数,则Reports从数据库中查找与其模块 中的查询对象相匹配的数据;如果 RUN_PRODUCT的参数表中加 入了与Reports模块中的查询对象同名的数据参数,则Reports 并不从数据库中查找数据,而是以参数表中的同名数据参数所引 用的记录组作为其模块中的查询对象的数据源,在这种情况下, Reports 查询对象的 SELECT 语句所映射的数据集合是不起作用 的。 实现集成的具体方法 本文例子中用 s 模块来对学生的期末成绩进行管理, s模块运行如图2所示。 其中 标以单位、班级、课程、成绩的各个块对象间存在级联的 主从关系; 各个块对象中,有的项因不需要使用人员予以关注,故将 其定义为非显示项,未在画布(canvas)上显示,但这并不影响 对它们的引用,例如,班级块中的班级编号(BJBH),课程块中 的课程编号(KCBH)等; 标以课程的块对象是基于视图(view)而非基于表 (table)的; 画布上显示的项并非都是基表项(块对象所基于的表或视 图中的列),而是通过触发子从其他的表或视图中查询的,这也 不影响对它们的引用,例如,课程块中的名称(MC)和学分 (XF)等。 图2s模块运行情况 程序实现的步骤如下 在 Sqlplus 下创建一个与图 1 所示的表目一致的表或视 图REPT_001当做Reports模块的查询对象Q_001的虚拟数据源 CREATETABLEREPT_001/期末成绩表/ XHVARCHAR29,/学号/ XMVARCHAR210,/姓名/ XBVARCHAR22,/性别/ XDXZVARCHAR24,/修读性质/ PSCJNUMBER,/平时成绩/ KSCJNUMBER,/考试成绩/ ZPCJNUMBER,/总评成绩/ RKJSVARCHAR210/任课教师/; 注意该表仅供 Reports 定义查询对象 Q_001 之用(仅援引 其列名与类型),与整个应用系统的数据库结构无关,不需要向 该表插入任何数据(保持该表为空表),不存在数据的完整性和 一致性的问题。 在Reports中定义报表模块,源模块的名称为REP_001.rdf。 在该模块中,定义与表目数据相关的查询对象Q_001

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值