最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

水晶报表中如何动态加载图片(图片文件版本及数据库版本)

来源:懂视网 责编:小采 时间:2020-11-09 07:32:46
文档

水晶报表中如何动态加载图片(图片文件版本及数据库版本)

水晶报表中如何动态加载图片(图片文件版本及数据库版本):Step1:数据库文件版本 如果你在数据库中采用了二进制字段存储图片文件 微软 Access 里这些字段叫作 OLE 字段,而Oracle和SQL Server把它们称作 BLOB (二进制大型对象) 字段 那么在报表上显示出来就非常之简单 因为之前我没有做过类的显示图片文件的报表,等
推荐度:
导读水晶报表中如何动态加载图片(图片文件版本及数据库版本):Step1:数据库文件版本 如果你在数据库中采用了二进制字段存储图片文件 微软 Access 里这些字段叫作 OLE 字段,而Oracle和SQL Server把它们称作 BLOB (二进制大型对象) 字段 那么在报表上显示出来就非常之简单 因为之前我没有做过类的显示图片文件的报表,等

Step1:数据库文件版本 如果你在数据库中采用了二进制字段存储图片文件 微软 Access 里这些字段叫作 OLE 字段,而Oracle和SQL Server把它们称作 BLOB (二进制大型对象) 字段 那么在报表上显示出来就非常之简单 因为之前我没有做过类的显示图片文件的报表,等

Step1:数据库文件版本

如果你在数据库中采用了二进制字段存储图片文件
微软 Access 里这些字段叫作 OLE 字段,而Oracle和SQL Server把它们称作 BLOB (二进制大型对象) 字段
那么在报表上显示出来就非常之简单
因为之前我没有做过类似的显示图片文件的报表,等我做出来之后,我自己都乐了
其实对这种二进制形式来说,跟普通的字段是一样的,拖到模板上就行了,呵呵

Setp2:下面我们来做一下加载磁盘上的图片的程序

其实有了上次《在水晶报表中实现任意选择指定字段显示》的实践,这次的思路就很明了了
就是先创建一个跟数据库版本一致的报表,当然是使用人见人爱的Ado.Net的方式
自己构造一个DataSet,把本地图片读成二进制流写进去
然后将这个DataSet推给报表就行了


我使用了水晶报表自己带的示例数据库里面的"雇员表"

看一下结构,主要是看一下各字段的格式,因为我们在创建DataSet的时候进行对应

特别注意下那个图片字段的格式,在VB.Net里我们可以用Byte来与之呼应

模板文件如下,没啥特别


代码如下,有详尽注释。

1'*************************************************************************
2'**模 块 名:CR_DynLoadPics
3'
4'**创 建 人:Babyt(阿泰) http://www.cnblogs.com/babyt
5'**日 期:2005-04-21
6'**修 改 人:
7'**日 期:
8'**描 述:从本地磁盘获取图片文件进行显示
9' 本程序为原型程序,未进行完整保护
10'**版 本:V1.0.0
11'*************************************************************************
12
13Imports System.Data
14'注意此处IO的加入是为了读取图片文件
15Imports System.IO
16Public Class Form1Class Form1
17 Inherits System.Windows.Forms.Form
18
19Windows 窗体设计器生成的代码#Region " Windows 窗体设计器生成的代码 "
20
21 Public Sub New()Sub New()
22 MyBase.New()
23
24 '该调用是 Windows 窗体设计器所必需的。
25 InitializeComponent()
26
27 '在 InitializeComponent() 调用之后添加任何初始化
28
29 End Sub
30
31 '窗体重写 dispose 以清理组件列表。
32 Protected Overloads Overrides Sub Dispose()Sub Dispose(ByVal disposing As Boolean)
33 If disposing Then
34 If Not (components Is Nothing) Then
35 components.Dispose()
36 End If
37 End If
38 MyBase.Dispose(disposing)
39 End Sub
40
41 'Windows 窗体设计器所必需的
42 Private components As System.ComponentModel.IContainer
43
44 '注意: 以下过程是 Windows 窗体设计器所必需的
45 '可以使用 Windows 窗体设计器修改此过程。
46 '不要使用代码编辑器修改它。
47 Friend WithEvents Button1 As System.Windows.Forms.Button
48 Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
49 Friend WithEvents CrystalReportViewer1 As CrystalDecisions.Windows.Forms.CrystalReportViewer
50 Friend WithEvents Label1 As System.Windows.Forms.Label
51 Private Sub InitializeComponent()Sub InitializeComponent()
52 Me.Button1 = New System.Windows.Forms.Button
53 Me.TextBox1 = New System.Windows.Forms.TextBox
54 Me.CrystalReportViewer1 = New CrystalDecisions.Windows.Forms.CrystalReportViewer
55 Me.Label1 = New System.Windows.Forms.Label
56 Me.SuspendLayout()
57 '
58 'Button1
59 '
60 Me.Button1.Location = New System.Drawing.Point(520, 40)
61 Me.Button1.Name = "Button1"
62 Me.Button1.TabIndex = 0
63 Me.Button1.Text = "生成报表"
64 '
65 'TextBox1
66 '
67 Me.TextBox1.Location = New System.Drawing.Point(40, 40)
68 Me.TextBox1.Name = "TextBox1"
69 Me.TextBox1.Size = New System.Drawing.Size(392, 21)
70 Me.TextBox1.TabIndex = 1
71 Me.TextBox1.Text = "E:\myNet\CR_DynLoadPics\Pics"
72 '
73 'CrystalReportViewer1
74 '
75 Me.CrystalReportViewer1.ActiveViewIndex = -1
76 Me.CrystalReportViewer1.AutoScroll = True
77 Me.CrystalReportViewer1.DisplayBackgroundEdge = False
78 Me.CrystalReportViewer1.DisplayGroupTree = False
79 Me.CrystalReportViewer1.Location = New System.Drawing.Point(24, 80)
80 Me.CrystalReportViewer1.Name = "CrystalReportViewer1"
81 Me.CrystalReportViewer1.ReportSource = Nothing
82 Me.CrystalReportViewer1.Size = New System.Drawing.Size(616, 320)
83 Me.CrystalReportViewer1.TabIndex = 2
84 '
85 'Label1
86 '
87 Me.Label1.Location = New System.Drawing.Point(40, 8)
88 Me.Label1.Name = "Label1"
89 Me.Label1.Size = New System.Drawing.Size(432, 23)
90 Me.Label1.TabIndex = 3
91 Me.Label1.Text = "请正确输入图片文件所在的目录,最后面不要带\,此处未进行校验!"
92 '
93 'Form1
94 '
95 Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
96 Me.ClientSize = New System.Drawing.Size(664, 429)
97 Me.Controls.Add(Me.Label1)
98 Me.Controls.Add(Me.CrystalReportViewer1)
99 Me.Controls.Add(Me.TextBox1)
100 Me.Controls.Add(Me.Button1)
101 Me.Name = "Form1"
102 Me.Text = "Form1"
103 Me.ResumeLayout(False)
104
105 End Sub
106
107#End Region
108
109 Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
110 '查看CrystalReport1的定义可以查看对应的报表类
111 Dim crReportDocument As New CrystalReport1
112 Dim myDataSet As New DataSet
113 Dim PicPath As String
114 Dim myColume As System.Data.DataColumn
115 Dim myRow As DataRow
116
117 '---------------------------------------------------------------------
118 '构造一个表,对应xsd文件
119 myDataSet.Tables.Add("雇员")
120 '构造表结构,可以只构造部分字段
121 myDataSet.Tables(0).Columns.Add("姓", System.Type.GetType("System.String"))
122 myDataSet.Tables(0).Columns.Add("名", System.Type.GetType("System.String"))
123 myDataSet.Tables(0).Columns.Add("雇员照片", System.Type.GetType("System.Byte[]"))
124
125 '---------------------------------------------------------------------
126 '写入数据
127 '注意此处没有进行校验
128 PicPath = TextBox1.Text & "\"
129 '写数据行(分别用了3种图片格式)
130 '提示:
131 ' 在这里你就可以使用你的数据库中保存的文件路径了
132 ' 用你的DataSet来填充这个将推给报表的DataSet
133 ' 如:
134 AddOneRow(myDataSet.Tables(0), "Babyt", "JPG文件", PicPath & "BBT_042105_04.jpg")
135 AddOneRow(myDataSet.Tables(0), "FaceSun", "Gif文件", PicPath & "Image49.gif")
136 AddOneRow(myDataSet.Tables(0), "张", "Gif文件", PicPath & "Image5.gif")
137 AddOneRow(myDataSet.Tables(0), "王", "JPG文件", PicPath & "1.jpg")
138 AddOneRow(myDataSet.Tables(0), "燕子", "JPG文件", PicPath & "2.jpg")
139 AddOneRow(myDataSet.Tables(0), "Cnblogs.com/babyt", "BMP文件", PicPath & "Coup30.bmp")
140
141 '将这个DataSet推给报表
142 crReportDocument.SetDataSource(myDataSet)
143
144 ''将报表传递给浏览器
145 CrystalReportViewer1.ReportSource = crReportDocument
146 End Sub
147 '*************************************************************************
148 '**函 数 名:AddOneRow
149 '**输 入:
150 ' ByRef tbl As DataTable 要操作的表,注意是Byref
151 ' ByVal c1 As String 第一个字段的值
152 ' ByVal c1 As String 第二个字段的值
153 ' ByVal c1 As String 第三个字段的值,注意传入的是完整的图片文件名
154 '**输 出:无
155 '**功能描述: 在DataTable中增加一个数据行
156 ' 该过程的主要是封装根据文件名提取本地文件写入到DataSet中
157 '**全局变量:
158 '**调用模块:
159 '**作 者:Babyt(阿泰)
160 '**日 期:2005-04-21
161 '**修 改 人:
162 '**日 期:
163

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

水晶报表中如何动态加载图片(图片文件版本及数据库版本)

水晶报表中如何动态加载图片(图片文件版本及数据库版本):Step1:数据库文件版本 如果你在数据库中采用了二进制字段存储图片文件 微软 Access 里这些字段叫作 OLE 字段,而Oracle和SQL Server把它们称作 BLOB (二进制大型对象) 字段 那么在报表上显示出来就非常之简单 因为之前我没有做过类的显示图片文件的报表,等
推荐度:
标签: 图片 文件 文档
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top