PB提供了关于如何动态创建Datawindow的相关函数
transaction.SyntaxFromSQL ( sqlselect, presentation, err )
dwcontrol.Create ( string syntax {, string errorbuffer } )
关于这两个方法如何使用,这里就不再陈述了,帮助里面已经很详细了(使用帮助是很好的习惯).
例子1:动态创建有SQL的DW
说明:这个比较常用的方法,首先利用SQL得到DW的语法,然后用语法来创建DW
这过程跟创建可视化的DW,然后保存在PBL,在将这个保存的名字赋值给DW作为dataobject是同样的道理
string ls_sql = ""
string ls_syntax = ""
string ls_err = ""
// 初始化, SQL以oracle为例
// ls_sql = "select FIELDS from TABLE"
ls_sql = "select ‘’ as sID, '' as sName from dual"
// 创建syntax, 用ls_sql创建一个grid类型的DW
sqlca.syntaxFromSQL(ls_sql, "style(type=grid)", ls_err)
if len(ls_err) > 0 then
messageBox('Error', ‘Create DW syntax failed! ~r~n’ + ls_err)
return -1
end if
// 创建DW
ls_err = ‘’
dw_1.create(ls_syntax, ls_err)
if len(ls_err) > 0 then
messageBox('Error', ‘Create DW failed! ~r~n’ + ls_err)
return -1
end if
// 创建成功
messageBox('Success', 'Create dynamic DW with SQL successful!')
例子2:动态创建外部数据源的DW(没有SQL)
说明:外部数据源的DW没有SQL,但跟有SQL的DW相同的部分就是DW语法的table部分。
而创建DW的时候,利用syntax来创建就好了,SQL创建syntax就可以省略。
对于例如区域、显示、HTML、update等等属性, PB都有默认的设置。
所以无需用过份详细的syntax来创建DW,那部分将由PB帮助完成,我们只需要有table部分就可以了。
string ls_syntax = ""
string ls_err = ""
// 由SQL创建syntax部分省略
// 初始化syntax, release 9;表示PB9.0的例子
ls_syntax = "release 9;~r~n" +&
"table(" +&
" column=(type=number name=handle dbname=~"handle~" )~r~n" +&
" column=(type=char(255) name=sdata dbname=~"sdata~" )~r~n" +&
" column=(type=char(255) name=slabel dbname=~"slabel~" )~r~n" +&
")"
// 创建DW
ls_err = ‘’
dw_1.create(ls_syntax, ls_err)
if len(ls_err) > 0 then
messageBox('Error', ‘Create DW failed! ~r~n’ + ls_err)
return -1
end if
// 创建成功
messageBox('Success', 'Create dynamic DW without SQL successful!')
transaction.SyntaxFromSQL ( sqlselect, presentation, err )
dwcontrol.Create ( string syntax {, string errorbuffer } )
关于这两个方法如何使用,这里就不再陈述了,帮助里面已经很详细了(使用帮助是很好的习惯).
例子1:动态创建有SQL的DW
说明:这个比较常用的方法,首先利用SQL得到DW的语法,然后用语法来创建DW
这过程跟创建可视化的DW,然后保存在PBL,在将这个保存的名字赋值给DW作为dataobject是同样的道理
string ls_sql = ""
string ls_syntax = ""
string ls_err = ""
// 初始化, SQL以oracle为例
// ls_sql = "select FIELDS from TABLE"
ls_sql = "select ‘’ as sID, '' as sName from dual"
// 创建syntax, 用ls_sql创建一个grid类型的DW
sqlca.syntaxFromSQL(ls_sql, "style(type=grid)", ls_err)
if len(ls_err) > 0 then
messageBox('Error', ‘Create DW syntax failed! ~r~n’ + ls_err)
return -1
end if
// 创建DW
ls_err = ‘’
dw_1.create(ls_syntax, ls_err)
if len(ls_err) > 0 then
messageBox('Error', ‘Create DW failed! ~r~n’ + ls_err)
return -1
end if
// 创建成功
messageBox('Success', 'Create dynamic DW with SQL successful!')
例子2:动态创建外部数据源的DW(没有SQL)
说明:外部数据源的DW没有SQL,但跟有SQL的DW相同的部分就是DW语法的table部分。
而创建DW的时候,利用syntax来创建就好了,SQL创建syntax就可以省略。
对于例如区域、显示、HTML、update等等属性, PB都有默认的设置。
所以无需用过份详细的syntax来创建DW,那部分将由PB帮助完成,我们只需要有table部分就可以了。
string ls_syntax = ""
string ls_err = ""
// 由SQL创建syntax部分省略
// 初始化syntax, release 9;表示PB9.0的例子
ls_syntax = "release 9;~r~n" +&
"table(" +&
" column=(type=number name=handle dbname=~"handle~" )~r~n" +&
" column=(type=char(255) name=sdata dbname=~"sdata~" )~r~n" +&
" column=(type=char(255) name=slabel dbname=~"slabel~" )~r~n" +&
")"
// 创建DW
ls_err = ‘’
dw_1.create(ls_syntax, ls_err)
if len(ls_err) > 0 then
messageBox('Error', ‘Create DW failed! ~r~n’ + ls_err)
return -1
end if
// 创建成功
messageBox('Success', 'Create dynamic DW without SQL successful!')