久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VB如何調(diào)用Crystal Reports

 狂嘯三聲 2007-08-13

VB如何調(diào)用Crystal Reports

shkingdee

在VB中利用Crystal ActiveX控件制作報(bào)表
在自行開發(fā)的應(yīng)用軟件中,,一般都需要制作報(bào)表。我們可以利用Crystal
Reports(也稱水晶報(bào)表)方式,,調(diào)用Print方法直接輸出,,通過其他(
TextBox等)控件輸出報(bào)表,使用OLE技術(shù)與Word和Excel連接輸出報(bào)表,。Crystal
Reports方式需要許多文件支持,,通常需要耗用更多的系統(tǒng)資源,但與其他方法
相比,,具有容易實(shí)現(xiàn),、功能強(qiáng)大、報(bào)表樣式豐富的特點(diǎn),。
  用Crystal ActiveX控件制作報(bào)表一般有兩種方法:
  1. 直接使用Crystal ActiveX控件生成報(bào)表,。
  2. 先用CRW32.EXE產(chǎn)生RPT報(bào)表文件,然后在控件中引用RPT文件,。
  常用報(bào)表大約有:列表式的報(bào)表,;帶有分類、匯總式的報(bào)表,;以及帶有各種
圖形,、圖表的報(bào)表。下面就這兩種方法舉例說明幾種報(bào)表的制作,。
  一,、 直接使用Crystal ActiveX控件生成報(bào)表
  使用Crystal ActiveX控件應(yīng)先建立數(shù)據(jù)庫,,Crystal ActiveX控件支持流行
的數(shù)據(jù)庫類型,,如:Access、xBase,、Paradox,。直接使用Crystal ActiveX 控件
只能制作簡單的列表式報(bào)表。
  1. 新建一個(gè)工程,,在窗體Form1上添加Data 控件,,Crystal ActiveX控件,
命令按鈕,。
  2. 在Data 控件上將DatabaseName 屬性設(shè)置為要生成報(bào)表的數(shù)據(jù)庫名稱,,
如Biblio.mdb。
  設(shè)置 RecordSource 屬性為數(shù)據(jù)庫中表名稱或SQL查詢語句,。這里我們?cè)O(shè)置
成表Authors,。
  3. 在Crystal ActiveX控件上設(shè)置 DataSource 屬性為Data1,設(shè)置
ReportSource 屬性為3,。
  ReportSource 屬性:
   0 - 使用RPT報(bào)表文件,;
   1 - 綁定到TrueGrid控件 ,;
   3 - Data 控件所有的 Fields。
  設(shè)置Destination屬性為0,。
  Destination 屬性:
   0 - 輸出到窗口,;
   1 - 輸出到打印機(jī);
   2 - 輸出到文件,;
   3 - 通過MAPI Email將報(bào)表發(fā)送到別處,;
   4 - 通過VIM Email將報(bào)表發(fā)送到別處。
   若使用屬性2,,需要設(shè)置PrintFileName,、
   PrintFileType等相關(guān)屬性。
   若使用屬性3,、4,,需要設(shè)置EMailToList、EMailCCList,、EMailMessage等相關(guān)屬性,。
   設(shè)置WindowState 屬性為2。
  WindowState 屬性:
   0 - 打印窗口正常方式,;
   1 - 打印窗口最小化,;
   2 - 打印窗口最大化。
  4. 對(duì)于報(bào)表的激活,,Crystal ActiveX 控件提供兩個(gè)途徑:屬性Action等
于1,;或者使用PrintReport方法。PrintReport方法可以返回錯(cuò)誤代碼,,以便于
進(jìn)行錯(cuò)誤處理,。
  在按鈕上增加代碼
   Private Sub Command1—Click()
   CrystalReport1.Action = 1
   End Sub
   代碼也可以寫成:
   Private Sub Command1—Click()
   Dim Result%
   On Error GoTo Err—handler
  Result% = CrystalReport1.PrintReport
   Err—handler: 
   Select Case Result%
   Case 20xxx:
   ′此處錯(cuò)誤處理
   End Select
   End Sub
  錯(cuò)誤處理,可參閱水晶報(bào)表CRW32.EXE幫助→DEVELOPER→The Crystal ActiveX
Control→Error Messages。該處提供詳細(xì)的錯(cuò)誤信息以及出錯(cuò)原因,。
  運(yùn)行程序,,單擊命令按鈕,就可預(yù)覽,、打印按列列表的報(bào)表了,。
  二、 使用RPT報(bào)表文件制作報(bào)表
  使用報(bào)表文件(*.RPT)可以制作前文所述的三種報(bào)表,。推薦使用這種方法制作
報(bào)表,。用這種方法時(shí),首先要制作一個(gè)報(bào)表文件,??梢韵扔脠?bào)表文件生成向?qū)Мa(chǎn)生
一個(gè)大概的輪廓來,然后再修改報(bào)表文件使其符合要求,。
  制作報(bào)表文件
  1. 運(yùn)行水晶報(bào)表CRW32.EXE,。
  在File→Options→Fonts中設(shè)置報(bào)表文件的標(biāo)題,、頁首、頁腳,、細(xì)目處的字型,。
  在File→Options→Fields中設(shè)置字串、數(shù)字,、貨幣,、日期、布爾型Fields的格式,。
  2. 單擊菜單File→New運(yùn)行報(bào)表文件生成向?qū)А?br>  3. 選取Standard標(biāo)準(zhǔn)格式,。
  Step1:Tables 單擊Data files,選取VB自帶的數(shù)據(jù)庫Biblio.mdb,,單擊Done按
鈕,,數(shù)據(jù)庫中表項(xiàng)出現(xiàn)在右邊列表框中,然后自動(dòng)進(jìn)入Step2,。
  Step2:Links 單擊Next>>按鈕,。
  Step3:Fields 報(bào)表文件可以使用數(shù)據(jù)庫表中的Fields,也可以使用數(shù)據(jù)庫表
Fields的運(yùn)算結(jié)果(Formula)作為報(bào)表文件的列,。我們先選取左邊Datebase Fields
列表框里Authors表中Au—ID,、Author、Year_born增加到右邊Report Fields列表
框中,,可以在Column Heading中修改Fields的標(biāo)題,。接下來要增加一個(gè)Formula,
單擊Formula按鈕,,給公式取名f1,,在Formula Text中輸入{Authors.Au_ID} + 10,
單擊Accept按鈕,,左邊Datebase Fields列表框中出現(xiàn)@f1,,把@f1添加到右邊Report
Fields列表框中,,然后單擊Next>>按鈕,。
  Step4:Sort 選擇Authors .Au—ID 排序并分組。排序次序和排序項(xiàng)可以在程序
里修改,。單擊Next>>按鈕,。
  Step5:Totle 選擇一個(gè)Field進(jìn)行統(tǒng)計(jì),例如:小計(jì),、合計(jì),、計(jì)算平均值、個(gè)數(shù)
等,。這里我們不做統(tǒng)計(jì),,可以將Totle Fields中的值全部移去,。
  Step6:Select 在這里我們可以篩選數(shù)據(jù)庫中的記錄,假如需要使Au_ID大于500
的記錄才出現(xiàn)在報(bào)表里,,我們可選擇Authors.Au—ID項(xiàng),,然后選擇is →greater than
→ 500。注意:記錄的選擇也可以在程序里修改,。單擊Next>>按鈕到下一步,。
  Step7:Style 選擇報(bào)表文件的樣式,這里我們選擇Table類型,。點(diǎn)擊圖片按鈕還
可以給報(bào)表加些圖片,,在Title后輸入報(bào)表標(biāo)題,至此報(bào)表初步制作完成,。單擊Preview
Report按鈕可以預(yù)覽報(bào)表了,。
  4.單擊Design標(biāo)簽進(jìn)入設(shè)計(jì)模式。在設(shè)計(jì)模式中我們可以做修改調(diào)整,,完成最終
的報(bào)表,。Click選擇一項(xiàng),Shift+ Click選擇多項(xiàng),。修改時(shí)應(yīng)充分利用鼠標(biāo)右鍵功能,。
最后將報(bào)表文件存為test.rpt。
  帶有圖表的報(bào)表文件制作步驟與上面所述相似,,在此不做詳細(xì)敘述,。
  報(bào)表文件制作完畢,我們就可以在Crystal ActiveX 控件中引用了,。
  在Crystal ActiveX 控件中引用報(bào)表文件
  1. 新建一個(gè)工程,,在窗體Form1上添加Crystal ActiveX 控件,命令按鈕,。
  2. 在Crystal ActiveX 控件上設(shè)置ReportSource 屬性為0,,設(shè)置ReportFileName
為制作完的報(bào)表文件test.rpt,設(shè)置WindowState 屬性為2,。
  3. 在按鈕上增加代碼:
  Private Sub Command1—Click()
   Dim Result%
   On Error GoTo Err—handler
   CrystalReport1.SortFields(0) = ″-{Authors.Au_ID}″
   ′將Authors.Au_ID按順序排列
   CrystalReport1.GroupSelectionFormula = ″{Authors.Au_ID} in 100 to 1000″
   ′篩選Authors.Au—ID為100至1000的記錄
   Result% = CrystalReport1.PrintReport
  Err—handler:
   Select Case Result%
   Case 20xxx:
   ′此處錯(cuò)誤處理
  End Select
  End Sub


例:
Private Sub Form_Load()
Dim capp As New CRAXDRT.Application
Dim crp As New CRAXDRT.Report
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Integer
If cn.State = adStateOpen Then cn.Close
With cn
.Provider = "MSDASQL.1"
.ConnectionString = "Persist Security Info=True;User ID=SA;Data Source=plans;Initial Catalog=plan"
.Open
End With
If rs.State = adStateOpen Then rs.Close
‘rs.Open "select * from apb where zdph like ‘14%‘ ", cn, adOpenKeyset, adLockOptimistic
Set crp = capp.OpenReport(App.Path & "\report1.rpt")
‘For i = 1 To crp.Database.Tables.Count
‘ If crp.Database.Tables.Item(i).Name = "ado" Then
‘ crp.Database.Tables(i).SetDataSource rs
‘ End If
‘Next i
‘crp.Database.SetDataSource rs
CRViewer1.ReportSource = crp
CRViewer1.ViewReport

End Sub

Private Sub Form_Resize()
CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth
End Sub

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多