请帮找一下错误

hbin_apple 2009-12-17 07:04:09
我打算在数据报表中只显示一个记录的数据,label7用来显示该记录的number字段。代码如下:
Private Sub DataReport_Initialize()
Set DataReport3.Sections("section1").Controls("label7").Caption = chaxun.Adodc1.Recordset.Fields("number").Value
End Sub
调试显示:“下标越界”。
请问错在哪里?
...全文
115 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbin_apple 2009-12-22
  • 打赏
  • 举报
回复
好的,谢谢!
vbman2003 2009-12-21
  • 打赏
  • 举报
回复
刚才试了下,用不着PropertyBag,直接:
Set DataReport3.Sections("Section1").Controls("Image1").Picture _
= chaxun.Picture2.Image

不过边框问题不是小问题,不太好解决...
hbin_apple 2009-12-21
  • 打赏
  • 举报
回复
太感谢了,终于能用了。可是还有一个小问题想麻烦一下您。
就是原来的picture2中的图像,是用pointpicture复制下来的,因为照片有横片和竖片,所以图像框我取的是方框。拷到数据报表时,连带两边或上下的灰条一块显示出来。怎样能删除两块灰条呢?我把picture2的属性autosize改为ture也不行。

vbman2003 2009-12-21
  • 打赏
  • 举报
回复
可以用PropertyBag对象,比如自己写一个过程:


Public Sub ImageLoadPicture(pPictureBox As PictureBox)
Dim Bag As PropertyBag
Set Bag = New PropertyBag
Bag.WriteProperty "Image", pPictureBox.Image
Set DataReport3.Sections("Section1").Controls("Image1").Picture _
= Bag.ReadProperty("Image")
Set Bag = Nothing
End Sub

'报表中这样调用:
call ImageLoadPicture(chaxun.Picture2)
hbin_apple 2009-12-20
  • 打赏
  • 举报
回复
谢谢帮忙,我现在已经能打印单个记录的其他字段了,但是图像字段还不行。我有一个窗口(chaxun)是显示这个记录的所有字段,包括图像也已经显示在picture2图像框中。我想使用如下代码将图像加载到数据报表中:
DataReport3.Sections("section1").Controls("image1").PaintPicture chaxun.Picture2.Picture
显示“对象不支持该属性或方法”,
还有什么别的方法吗?
波导终结者 2009-12-19
  • 打赏
  • 举报
回复
我觉得你Adodc里面可能根本没东西,先把它直接绑定在控件上看看有没有内容
vbman2003 2009-12-19
  • 打赏
  • 举报
回复
提示无效数据源,好象许多时候是没有返回记录集...
vbman2003 2009-12-19
  • 打赏
  • 举报
回复
只这行代码看不出问题,应该是其它问题...
hbin_apple 2009-12-19
  • 打赏
  • 举报
回复
我改了,如下:
DataReport3.Sections("Section1").Controls("Label7").Caption = "number"
还是显示:无效数据源
我是打印当前记录,label1显示字段名“number”,label7显示number的值。要怎样写才对?
vbman2003 2009-12-19
  • 打赏
  • 举报
回复
可以直接用字段名称:
DataReport3.Sections("Section1").Controls("Label7").Caption = "number"
hbin_apple 2009-12-19
  • 打赏
  • 举报
回复
我去掉SET了,如下:
Private Sub DataReport_Initialize()
DataReport3.Sections("Section1").Controls("Label7").Caption = chaxun.Adodc1.Recordset.Fields("number").Value
End Sub
可调试时又显示:无效数据源
这又是哪里的问题啊?
vbman2003 2009-12-19
  • 打赏
  • 举报
回复
实例化对象才用set,给Caption属性赋值,去掉set...
vbman2003 2009-12-19
  • 打赏
  • 举报
回复
简单示例:

'Form1的代码
Private Sub Command1_Click()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Sql As String
Dim i As Long

DataReport1.Orientation = rptOrientLandscape

'连接数据库(Access)
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0 ;" & _
"Data Source=" & App.Path & "\db1.mdb;" & _
"Persist Security Info=False"

'打开记录集
Set rs = New ADODB.Recordset
Sql = "select id,uname,age from tb where id = " & Text1.Text 'SQL返回一条记录(比如ID唯一)
rs.Open Sql, cn, adOpenKeyset, adLockOptimistic

'设置text的DataField控件属性
For i = 0 To rs.Fields.Count - 1
'细节中添加了与记录集字段相同数量的reptext控件
DataReport1.Sections("Section1").Controls.Item(i + 1).DataField = rs.Fields(i).Name
Next i

'设置报表数据源
Set DataReport1.DataSource = rs
DataReport1.Show

End Sub
hbin_apple 2009-12-19
  • 打赏
  • 举报
回复
我想问一下,怎样才能让数据报表只打印一条记录?比如根据当前记录号选择一条纪录,应怎么写代码?在哪里写?
hbin_apple 2009-12-18
  • 打赏
  • 举报
回复
我没有用数组啊!
我改了一下,代码为:
Private Sub DataReport_Initialize()
Set DataReport3.Sections("section2").Controls("label7").Caption = chaxun.Adodc1.Recordset.Fields("number").Value
End Sub
显示:要求对象
这又是怎么回事啊?
孤独剑_LPZ 2009-12-17
  • 打赏
  • 举报
回复
DataReport_Initialize里是DataReport,
Set DataReport3...里是DataReport3,为什么不一致
下标越界是指数组的下标越界了,查一下用了哪个数组

1,216

社区成员

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

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