最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

水晶報表中如何動態(tài)加載圖片(圖片文件版本及數(shù)據(jù)庫版本)

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 07:32:46
文檔

水晶報表中如何動態(tài)加載圖片(圖片文件版本及數(shù)據(jù)庫版本)

水晶報表中如何動態(tài)加載圖片(圖片文件版本及數(shù)據(jù)庫版本):Step1:數(shù)據(jù)庫文件版本 如果你在數(shù)據(jù)庫中采用了二進制字段存儲圖片文件 微軟 Access 里這些字段叫作 OLE 字段,而Oracle和SQL Server把它們稱作 BLOB (二進制大型對象) 字段 那么在報表上顯示出來就非常之簡單 因為之前我沒有做過類的顯示圖片文件的報表,等
推薦度:
導(dǎo)讀水晶報表中如何動態(tài)加載圖片(圖片文件版本及數(shù)據(jù)庫版本):Step1:數(shù)據(jù)庫文件版本 如果你在數(shù)據(jù)庫中采用了二進制字段存儲圖片文件 微軟 Access 里這些字段叫作 OLE 字段,而Oracle和SQL Server把它們稱作 BLOB (二進制大型對象) 字段 那么在報表上顯示出來就非常之簡單 因為之前我沒有做過類的顯示圖片文件的報表,等

Step1:數(shù)據(jù)庫文件版本 如果你在數(shù)據(jù)庫中采用了二進制字段存儲圖片文件 微軟 Access 里這些字段叫作 OLE 字段,而Oracle和SQL Server把它們稱作 BLOB (二進制大型對象) 字段 那么在報表上顯示出來就非常之簡單 因為之前我沒有做過類的顯示圖片文件的報表,等

Step1:數(shù)據(jù)庫文件版本

如果你在數(shù)據(jù)庫中采用了二進制字段存儲圖片文件
微軟 Access 里這些字段叫作 OLE 字段,而Oracle和SQL Server把它們稱作 BLOB (二進制大型對象) 字段
那么在報表上顯示出來就非常之簡單
因為之前我沒有做過類似的顯示圖片文件的報表,等我做出來之后,我自己都樂了
其實對這種二進制形式來說,跟普通的字段是一樣的,拖到模板上就行了,呵呵

Setp2:下面我們來做一下加載磁盤上的圖片的程序

其實有了上次《在水晶報表中實現(xiàn)任意選擇指定字段顯示》的實踐,這次的思路就很明了了
就是先創(chuàng)建一個跟數(shù)據(jù)庫版本一致的報表,當(dāng)然是使用人見人愛的Ado.Net的方式
自己構(gòu)造一個DataSet,把本地圖片讀成二進制流寫進去
然后將這個DataSet推給報表就行了


我使用了水晶報表自己帶的示例數(shù)據(jù)庫里面的"雇員表"

看一下結(jié)構(gòu),主要是看一下各字段的格式,因為我們在創(chuàng)建DataSet的時候進行對應(yīng)

特別注意下那個圖片字段的格式,在VB.Net里我們可以用Byte來與之呼應(yīng)

模板文件如下,沒啥特別


代碼如下,有詳盡注釋。

1'*************************************************************************
2'**模 塊 名:CR_DynLoadPics
3'
4'**創(chuàng) 建 人: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 窗體設(shè)計器生成的代碼#Region " Windows 窗體設(shè)計器生成的代碼 "
20
21 Public Sub New()Sub New()
22 MyBase.New()
23
24 '該調(diào)用是 Windows 窗體設(shè)計器所必需的。
25 InitializeComponent()
26
27 '在 InitializeComponent() 調(diào)用之后添加任何初始化
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 窗體設(shè)計器所必需的
42 Private components As System.ComponentModel.IContainer
43
44 '注意: 以下過程是 Windows 窗體設(shè)計器所必需的
45 '可以使用 Windows 窗體設(shè)計器修改此過程。
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的定義可以查看對應(yīng)的報表類
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 '構(gòu)造一個表,對應(yīng)xsd文件
119 myDataSet.Tables.Add("雇員")
120 '構(gòu)造表結(jié)構(gòu),可以只構(gòu)造部分字段
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 '寫入數(shù)據(jù)
127 '注意此處沒有進行校驗
128 PicPath = TextBox1.Text & "\"
129 '寫數(shù)據(jù)行(分別用了3種圖片格式)
130 '提示:
131 ' 在這里你就可以使用你的數(shù)據(jù)庫中保存的文件路徑了
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 '**函 數(shù) 名: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中增加一個數(shù)據(jù)行
156 ' 該過程的主要是封裝根據(jù)文件名提取本地文件寫入到DataSet中
157 '**全局變量:
158 '**調(diào)用模塊:
159 '**作 者:Babyt(阿泰)
160 '**日 期:2005-04-21
161 '**修 改 人:
162 '**日 期:
163

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

水晶報表中如何動態(tài)加載圖片(圖片文件版本及數(shù)據(jù)庫版本)

水晶報表中如何動態(tài)加載圖片(圖片文件版本及數(shù)據(jù)庫版本):Step1:數(shù)據(jù)庫文件版本 如果你在數(shù)據(jù)庫中采用了二進制字段存儲圖片文件 微軟 Access 里這些字段叫作 OLE 字段,而Oracle和SQL Server把它們稱作 BLOB (二進制大型對象) 字段 那么在報表上顯示出來就非常之簡單 因為之前我沒有做過類的顯示圖片文件的報表,等
推薦度:
標簽: 圖片 文件 文檔
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top