在PB中动态修改数据窗口DW的SQL语句方法注意事项

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

在PB中动态修改数据窗口DW的SQL语句方法注意事项数据库应用程序通常进行一项确定的工作,在编写和编译时就可以确定完整的SQL语句,但是在编译时不能确定SQL语句的具体格式和参数时,只能在程序运行过程中构造SQL语句,需要使用动态SQL语句。以Format4动态SQL语句为例,使用格式如下:DECLARECursor|ProcedureDYNAMICCURSOR|PROCEDUREFORDynamicStagingArea;PREPAREDynamicStagingAreaFROMSQLStatement{USINGTransactionObject};DESCRIBEDynamicStagingAreaINTODynamicDescriptionArea;OPENDYNAMICCursor|ProcedureUSINGDESCRIPTORDynamicDescriptionArea};EXECUTEDYNAMICCursor|ProcedureUSINGDESCRIPTORDynamicDescriptionArea;FETCHCursor|ProcedureUSINGDESCRIPTORDynamicDescriptionArea;CLOSECursor|Procedure;----在使用动态SQL语句时,需准备DynamicStagingArea对象(全局对象SQLSA)和DynamicDescriptionArea对象(全局对象SQLDA)。定义游标或过程,读取PREPARE语句中的SQL语句以及语句中说明的参数和类型,执行FETCH语句后,调用相关的函数逐条读取并处理检索结果。----动态SQL语句虽然解能够在程序运行过程中构造SQL语句,但在实际应用中较少使用。若SELECT语句的结果序列一定,可以通过重新指定DataWindow对象的SELECT语句的方法,达到动态修改SQL语句的功能。运用时首先用Describe函数读取DataWindow对象的SELECT语句,用Replace等函数修改出符合要求的SELECT语句,并且可以增加检索条件,再用SetSQLSelect函数为DataWindow控件指定修改后的SELECT语句。----程序代码:stringsql_string,sql_newlongstart_pos=1stringold_str//select语句中需要替换的字符串stringnew_str//替换字符串,可以是结构相同的表名dw_1.settransobject(sqlca)sql_string=dw_1.Describe(DataWindow.Table.Select)//Findthefirstoccurrenceofold_str.start_pos=Pos(sql_string,old_str,start_pos)//Onlyentertheloopifyoufindold_str.DOWHILEstart_pos0//Replaceold_strwithnew_str.sql_string=Replace(sql_string,start_pos,&Len(old_str),new_str)//Findthenextoccurrenceofold_str.start_pos=Pos(sql_string,old_str,&start_pos+Len(new_str))LOOPsql_new=sql_string+where……//增加where字句//判断setsqlselect函数调用是否成功,不成功则返回if(dw_1.setsqlselect(sql_new)=-1)thenmessagebox(错误,不能修改SQL语句!,Exclamation!)returnendifdw_1.settransobject(sqlca)dw_1.retrieve()----使用SetSQLSelect有一定的要求和限制,更改后的SELECT语句在结构上必须与原先的语句匹配,在执行SetSQLSelect函数之前必须用SetTrans或SetTransObject函数设置DataWindow控件的内部事务对象。另外,DataWindow对象的数据源必须是一个不带参数的SELECT语句,如果需要使用检索参数,可以在程序代码中修改SQLSelect语句。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功