VB数据库.报表问题,高手请进……

robin_xin_xin 2002-04-20 11:16:18
在VB中,如何才能动态的生成报表,打印报表?
我的接口是:ADO
数据库是SQL SERVER

急用,谢谢!
...全文
30 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
52694 2002-05-18
  • 打赏
  • 举报
回复
作个记号
robin_xin_xin 2002-04-22
  • 打赏
  • 举报
回复
glite(zgq) ,nebular(星云)
谢谢你们提供的资料,你们帮了我的大忙,
真的很谢谢你们!
glite 2002-04-20
  • 打赏
  • 举报
回复
有错,重写!
只能打印Datagrid
首先在报表设计器上放足够多的控件
1.在页标头中放足够多的Label(99个)
将页标头命名为 Head
以Label0.Label1.....Label99这样命名
2.在页细节中放足够多的Text(99个)
将页细节命名为 Bord
以Text0.Text1.....Text99这样命名

public Print_Custon(byval grid as datagrid,byval rs as adodb.recordset)
dim xs as double
dim countwidth as double
dim colwidth as double
dim i as long
dim j as long

for i = 0 to grid.columns.count - 1
countwidth =grid.columns(i).width +countwidth
next i
xs = countwidth /567/你的报表的宽度 '(把Datagrid的各个列的宽度累计并且换算成厘米,而xs则是你的datagrid和报表的比例)
with Report
for i = 0 to grid.columns.count-1
.section("Head").control("Label" & i).caption=grid.columns(i).caption
.section("Head").control("Label" & i).visible=grid.columns(i).visible
.section("Bord").control("Text" & i).visible=grid.columns(i).visible
if grid.columns(i).visible and grid.columns(i).width >0 then
'如果有未显示的列或列的宽度<0则不显示
j = i
.section("Head").control("Label" & i).left=colwidth
.section("Bord").control("Text" & i).left=colwidth
.section("Head").control("Label" & i).width=grid.columns(i).width / xs
.section("Bord").control("Text" & i).width=grid.columns(i).width / xs
.section("Bord").control("Text" & i).datafield=grid.columns(i).datafield
colwidth = colwidth +.section("Head").control("Label" & i).width
else
'如果有未显示的列或列的宽度<0则把它对应的TEXT的数据字段赋值为前面显示的列的数据字段
.section("Bord").control("Text" & i).datafield=grid.columns(j).datafield
end if

next i
for i = grid.columns.count to 99 把余下的LABEL和TEXT取消显示
.section("Head").control("Label" & i).visible=false
.section("Bord").control("Text" & i).visible=false
.section("Bord").control("Text" & i)).datafield=grid.columns(j).datafield
next i
set .datasource =rs
.show
end with
glite 2002-04-20
  • 打赏
  • 举报
回复
只能打印Datagrid
首先在报表设计器上放足够多的控件
1.在页标头中放足够多的Label
将页标头命名为 Head
以Label0.Label1.....Label99这样命名
2.在页细节中放足够多的Text
将页细节命名为 Bord
以Text0.Text1.....Text99这样命名

public Print_Custon(byval grid as datagrid,byval rs as adodb.recordset)
dim xs as double
dim countwidth as double
dim colwidth as double
dim i as long
dim j as long

for i = 0 to grid.columns.count - 1
countwidth =grid.columns(i).width +countwidth
next i
xs = countwidth /567/你的报表的宽度 '(把Datagrid的各个列的宽度累计并且换算成厘米,而xs则是你的datagrid和报表的比例)
with Report
for i = 0 to grid.columns.count-1
.section("Head").control("Label" & i).caption=grid.columns(i).caption
.section("Head").control("Label" & i).visible=grid.columns(i).visible
.section("Bord").control("Text" & i).visible=grid.columns(i).visible
if grid.columns(i).visible and grid.columns(i).width >0 then
'如果有未显示的列或列的宽度<0则不显示
j = i
.section("Head").control("Label" & i).left=colwidth
.section("Bord").control("Text" & i).left=colwidth
.section("Head").control("Label" & i).width=grid.columns(i).width / xs
.section("Bord").control("Text" & i).width=grid.columns(i).width / xs
.section("Bord").control("Text" & i).datafield=grid.columns(i).datafield
colwidth = colwidth +.section("Head").control("Label" & i).width
else
'如果有未显示的列或列的宽度<0则把它对应的TEXT的数据字段赋值为前面显示的列的数据字段
.section("Bord").control("Text" & i).datafield=grid.columns(j).datafield
end if

next i
set .datasource =rs
.show
end with

glite 2002-04-20
  • 打赏
  • 举报
回复
写一段代码给你
可能有部分错误,主要是记不住,因为在网吧
nebular 2002-04-20
  • 打赏
  • 举报
回复
看你的动态要求是什么,如果比较复杂,就不要用DATAREPORT。
关于DATAREPORT,看看下面的贴了。
http://www.csdn.net/Expert/TopicView1.asp?id=656545
http://www.csdn.net/expert/topic/654/654745.xml?temp=.4889337
daryl715 2002-04-20
  • 打赏
  • 举报
回复
关注
pzt 2002-04-20
  • 打赏
  • 举报
回复
请高手指教 怎样把数据导入报表中

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧