<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
在实际应用中,经常需要根据用户需求来动态创建数据窗,一般方法是这样的。在一个window中加入一个数据窗控件,如dw_new,但是该数据窗没有dataobject,(空白的)就可以用以下语法来创建:dw_new.create(ls_syntax,ls_error)//创建语法,错误信息ls_syntax可以用以下三种方法来形成:一、动态由sql语法创建://连接到pb的example数据库stringls_sql,ls_syntax,ls_errorls_syntax='select*fromdepartment'ls_syntax=sqlca.SyntaxFromSQL(ls_sql,'style(type=grid)',ls_error)iflen(ls_error)>0thenmessagebox('Error','SyntaxFromSQLError:~r'+ls_error)elsedw_new.create(ls_syntax,ls_error)iflen(ls_error)>0thenMessageBox("Error","Createhavetheseerrors:~r"+ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endifendif二、由另一个数据窗的syntax来创建stringls_syntax,ls_errorls_syntax=dw_test.describe('datawindow.syntax')dw_new.create(ls_syntax,ls_error)ifls_error<>''thenmessagebox('CreateError',ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endif三、读取psr文件来创建样例stringls_syntax,ls_error,ls_retls_ret=char(13)+char(10)//回车键intli_fileNumlongli_lengthli_FileNum=FileOpen("efef.psr",Streammode!,read!,shared!,Replace!)//以下是pb5的代码ifli_filenum>0thenFileSeek(li_FileNum,158,FromBeginning!)li_length=fileRead(li_filenum,ls_syntax)endiffileclose(li_filenum)ifli_length=0thenreturnls_syntax="release5;"+ls_ret+ls_syntax//截掉ls_syntax中的数据部分,5.0以"sparse(names="dept_name?)"作为参考位置//6.0以html(作为参考位置longpos1,pos2pos1=pos(ls_syntax,'sparse(names="',1)pos2=pos(ls_syntax,'"',pos1+16)ls_syntax=left(ls_syntax,pos1)+mid(ls_syntax,pos1+1,pos2-pos1+1)dw_New.create(ls_syntax,ls_error)ifls_error<>''thenmessagebox('CreateError',ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endif//pb6,pb7的代码可以参照pb5自己写,只是文件头和数据窗结束标记不同而已。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
动态数据窗创建原理及
实现作者:流方主页:http://liulee.myrice.com
在实际应用中,经常需要根据用户需求来动态创建数据窗,一般方法是这样的。在一个window中加入一个数据窗控件,如dw_new,但是该数据窗没有dataobject,(空白的)就可以用以下语法来创建:dw_new.create(ls_syntax,ls_error)//创建语法,错误信息ls_syntax可以用以下三种方法来形成:一、动态由sql语法创建://连接到pb的example数据库stringls_sql,ls_syntax,ls_errorls_syntax='select*fromdepartment'ls_syntax=sqlca.SyntaxFromSQL(ls_sql,'style(type=grid)',ls_error)iflen(ls_error)>0thenmessagebox('Error','SyntaxFromSQLError:~r'+ls_error)elsedw_new.create(ls_syntax,ls_error)iflen(ls_error)>0thenMessageBox("Error","Createhavetheseerrors:~r"+ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endifendif二、由另一个数据窗的syntax来创建stringls_syntax,ls_errorls_syntax=dw_test.describe('datawindow.syntax')dw_new.create(ls_syntax,ls_error)ifls_error<>''thenmessagebox('CreateError',ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endif三、读取psr文件来创建样例stringls_syntax,ls_error,ls_retls_ret=char(13)+char(10)//回车键intli_fileNumlongli_lengthli_FileNum=FileOpen("efef.psr",Streammode!,read!,shared!,Replace!)//以下是pb5的代码ifli_filenum>0thenFileSeek(li_FileNum,158,FromBeginning!)li_length=fileRead(li_filenum,ls_syntax)endiffileclose(li_filenum)ifli_length=0thenreturnls_syntax="release5;"+ls_ret+ls_syntax//截掉ls_syntax中的数据部分,5.0以"sparse(names="dept_name?)"作为参考位置//6.0以html(作为参考位置longpos1,pos2pos1=pos(ls_syntax,'sparse(names="',1)pos2=pos(ls_syntax,'"',pos1+16)ls_syntax=left(ls_syntax,pos1)+mid(ls_syntax,pos1+1,pos2-pos1+1)dw_New.create(ls_syntax,ls_error)ifls_error<>''thenmessagebox('CreateError',ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endif//pb6,pb7的代码可以参照pb5自己写,只是文件头和数据窗结束标记不同而已。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>