pb怎么动态调用后台存储过程,并且显示到datawindow中

时间:2022-05-13 16:23:00
pb怎么动态调用后台sqlserever 数据库的存储过程,并且显示到datawindow中~~~~~~~~~~~

12 个解决方案

#1


在创建DW 对象向导的选择数据源那步,选择Stored Procedure ....

#2


用stored procedure 的话,当存储过程改变的话怎么通过代码改变??
例如:1.调用存储过程A,通过stored procedure 显示结果;
   2.现要换调用存储过程B,怎么通过该datawindow 显示结果
      3.就是要在同一个窗口中,调用不同的存储过程,并且在同一个datawindow中显示结果


#3


楼主可以参照我下面收藏的内容

利用pb数据窗口和存储过程创建动态报表的模板程序,使用这个模板后不再需要在前台编写任何代码,只需要写好存储过程和配置好相关信息即可,这样pb程序中报表都可以直接用模板来完成显示,而不用写任何的代码和窗口;以下列出这个功能的思路,
 

/*============创建动态报表用的保存存储过程相关信息的表============
create table up_create_report(up_name varchar(80) not null)
go
create table up_argument_list(            --存储过程参数表
up_name varchar(80) not null,
argu_xh integer not null,
argu_name varchar(30) not null,

argu_name_display varchar(50) null,
argu_type varchar(30) not null default 'varchar(30),
is_use varchar(1) not null default '1',
primary key(up_name,argu_xh)
go
===================用来被调用的存储过程==============
create          procedure up_test_select2
as 

select no '编码',code '号码',in_date '日期',price '进价' from code
go

*/

/*=========数据窗口创建和数据检索
String   ls_create,   ls_err  ,ls_sql
ls_sql = trim(sle_1.text)
if ls_sql ='' or isnull(ls_sql) then return
ls_sql = "1 exec up_test_select_main;1 @child_pro ='"  + ls_sql +"'"
ls_create   =   sqlca.SYntaxfromsql(ls_sql,   "style(type=grid)",  ls_err)   
If   len(ls_err)   >   0   Then   
MessageBox("sql",   ls_err)   
Return   
End   If   
 
dw_1.create(ls_create,   ls_err)   
If   len(ls_err)   >   0   Then   
MessageBox("create",   ls_err)   
Return   
End   If   

//:修改数据窗口的列标题和内容的外观(颜色,是否突出显示,是否奇偶行颜色区分等)
 
dw_1.SetTransObject(sqlca)   
dw_1.Retrieve()   
*/

#4


ls_newsyntax = sqlca.syntaxfromsql(as_sql ,'style(type=grid)',ls_errsyntaxfromSQL)

中的as_sql 可以是:
"exec P_report_*******"

#6


引用 3 楼 newease 的回复:
 ls_sql = "1 exec up_test_select_main;1 @child_pro ='" + ls_sql +"'"

@child_pro是不是指存储过程的参数,要是参数有多个怎么做,能说明吗
up_test_select_main是指存储过程吗

#7


up!!!!

#8


还有个补充的问题:
在通过存储过程获得的datawindow数据,怎么再进一步的多条件查询????

#9


用dw_1.setfilter("列名 like'%"+b+"%'")的筛选方法,无法达到动态报表,不知道怎么获取存储过程结果的各各列名~~~~好通过通用的多条件查询进行查找~~筛选~~~~

#10


问题解决了~~谢谢各位了~~~

#11


sdfdsfd

#12


问题怎么解决的 使用什么办法

#1


在创建DW 对象向导的选择数据源那步,选择Stored Procedure ....

#2


用stored procedure 的话,当存储过程改变的话怎么通过代码改变??
例如:1.调用存储过程A,通过stored procedure 显示结果;
   2.现要换调用存储过程B,怎么通过该datawindow 显示结果
      3.就是要在同一个窗口中,调用不同的存储过程,并且在同一个datawindow中显示结果


#3


楼主可以参照我下面收藏的内容

利用pb数据窗口和存储过程创建动态报表的模板程序,使用这个模板后不再需要在前台编写任何代码,只需要写好存储过程和配置好相关信息即可,这样pb程序中报表都可以直接用模板来完成显示,而不用写任何的代码和窗口;以下列出这个功能的思路,
 

/*============创建动态报表用的保存存储过程相关信息的表============
create table up_create_report(up_name varchar(80) not null)
go
create table up_argument_list(            --存储过程参数表
up_name varchar(80) not null,
argu_xh integer not null,
argu_name varchar(30) not null,

argu_name_display varchar(50) null,
argu_type varchar(30) not null default 'varchar(30),
is_use varchar(1) not null default '1',
primary key(up_name,argu_xh)
go
===================用来被调用的存储过程==============
create          procedure up_test_select2
as 

select no '编码',code '号码',in_date '日期',price '进价' from code
go

*/

/*=========数据窗口创建和数据检索
String   ls_create,   ls_err  ,ls_sql
ls_sql = trim(sle_1.text)
if ls_sql ='' or isnull(ls_sql) then return
ls_sql = "1 exec up_test_select_main;1 @child_pro ='"  + ls_sql +"'"
ls_create   =   sqlca.SYntaxfromsql(ls_sql,   "style(type=grid)",  ls_err)   
If   len(ls_err)   >   0   Then   
MessageBox("sql",   ls_err)   
Return   
End   If   
 
dw_1.create(ls_create,   ls_err)   
If   len(ls_err)   >   0   Then   
MessageBox("create",   ls_err)   
Return   
End   If   

//:修改数据窗口的列标题和内容的外观(颜色,是否突出显示,是否奇偶行颜色区分等)
 
dw_1.SetTransObject(sqlca)   
dw_1.Retrieve()   
*/

#4


ls_newsyntax = sqlca.syntaxfromsql(as_sql ,'style(type=grid)',ls_errsyntaxfromSQL)

中的as_sql 可以是:
"exec P_report_*******"

#5


#6


引用 3 楼 newease 的回复:
 ls_sql = "1 exec up_test_select_main;1 @child_pro ='" + ls_sql +"'"

@child_pro是不是指存储过程的参数,要是参数有多个怎么做,能说明吗
up_test_select_main是指存储过程吗

#7


up!!!!

#8


还有个补充的问题:
在通过存储过程获得的datawindow数据,怎么再进一步的多条件查询????

#9


用dw_1.setfilter("列名 like'%"+b+"%'")的筛选方法,无法达到动态报表,不知道怎么获取存储过程结果的各各列名~~~~好通过通用的多条件查询进行查找~~筛选~~~~

#10


问题解决了~~谢谢各位了~~~

#11


sdfdsfd

#12


问题怎么解决的 使用什么办法