這個(gè)專業(yè)我也學(xué)得不是很好,用書上得例子吧。
在達(dá)坂城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營(yíng)銷,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),達(dá)坂城網(wǎng)站建設(shè)費(fèi)用合理。
某公司盡力需要了解公司在全國(guó)各地得銷售情況,設(shè)計(jì)一個(gè)水晶報(bào)表。統(tǒng)計(jì)個(gè)地區(qū)得銷售總額和全國(guó)總額
準(zhǔn)備工作
用 SQL server 2000 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)company 在該數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)表Sales.用于儲(chǔ)存區(qū)域銷售數(shù)據(jù)
在表Sales 中添加若干條記錄
設(shè)計(jì)報(bào)表
打開(kāi) Visual Studio.NET創(chuàng)建名為 Salesreport得 WINDOWS應(yīng)用程序 將Form1.cs 名更改為 frmSalesReport.cs
frmSalesReport窗體得屬性設(shè)置里。 吧 frmSalesReport.cs得Text屬性更改為"區(qū)域銷售報(bào)表"
把NAME屬性更改為frmSalesReport。
在 VisualStudio.NET 菜單中選擇 項(xiàng)目添加新項(xiàng)。在"添加新項(xiàng)"窗口得“類別”區(qū)域擴(kuò)展 “本地項(xiàng)目項(xiàng)”,選擇數(shù)據(jù),在"模板"區(qū)域選擇"數(shù)據(jù)集" 在"名稱"那將Dataset1.xsd改名 SalesDetaset.xsd
單擊"打開(kāi)" 將生成一個(gè)新得結(jié)構(gòu)文件 SalesDataset.xsd 該文件將顯示在 ADO.NET數(shù)據(jù)集設(shè)計(jì)器中。
這是我寫的一個(gè)例子,Ddh是查詢用的,你可以不要,如果數(shù)據(jù)多的話,考慮分頁(yè)
調(diào)用:
call caigoudd(printer,"0001") '打印
也可以用圖片框顯示
call caigoudd(picture1,"0001") '顯示
Sub CaiGoudd(Obj As Object, ByVal Ddh As String) '打印采購(gòu)單
Dim Shang As Integer, Zhuo As Integer '邊距
Dim Cangmin As String, Addr As String, Tel As String, Fax As String
Dim Hen As Single, Su As Single, Hh As Single, Hh1 As Single, Beisu As Single, Ss As Single, mm As Single
Dim Gongfa As String
Dim i As Integer, nn As Integer, Rsnum As Integer
Dim Rs As New ADODB.Recordset '采購(gòu)信息
Dim RS1 As New ADODB.Recordset '供方信息
Dim sqlStr As String
Set Cn = New ADODB.Connection
Cn.CursorLocation = adUseClient
Cn.Open cnStr
sqlStr = "select * from cgjl where 訂單號(hào)碼 like '" Ddh "'"
Rs.Open sqlStr, Cn, adOpenStatic, adLockReadOnly
If Rs.EOF Then
MsgBox "訂單號(hào)碼不存在,請(qǐng)教對(duì)!", , "注意"
Rs.Close
Cn.Close
Exit Sub
End If
Rsnum = Rs.RecordCount
If Rsnum 6 Then
MsgBox "采購(gòu)物品大于6條,請(qǐng)用不同的訂單號(hào)。", , "注意"
Rs.Close
Cn.Close
Exit Sub
End If
sqlStr = "select * from gfxx where 供方簡(jiǎn)稱 like '" Rs.Fields("供方名稱") "'"
RS1.Open sqlStr, Cn '供方資料
If RS1.EOF Then
MsgBox "供方信息不存在,請(qǐng)?zhí)砑?", , "注意"
Rs.Close
RS1.Close
Cn.Close
Exit Sub
End If
Ddh = "NO: " Ddh
Cangmin = "電器有限公司"
Addr = "浙江省"
Tel = "222222222"
Fax = "222222222"
With Obj
.ScaleMode = 6 '度量單位為mm
mm = .ScaleWidth / 210 '210是A4紙的寬度,mm是顯示倍數(shù)
Shang = 25 * mm
Zhuo = 15 * mm
nn = 12 * mm
Beisu = (Obj.ScaleWidth - 2 * Zhuo) / nn
.DrawWidth = IIf(TypeName(Obj) = "Printer", 7, 1) '線寬度
.FontName = "楷體_GB2312"
.FontSize = 20 * mm
'打印表頭
Hen = .ScaleWidth
Su = .ScaleHeight
.CurrentX = (.ScaleWidth - .TextWidth(Cangmin)) / 2 '居中
.CurrentY = Shang
Obj.Print Cangmin
.CurrentX = (.ScaleWidth - .TextWidth("采購(gòu)訂單")) / 2
.CurrentY = .CurrentY + 3 * mm
Obj.Print "采購(gòu)訂單"
.FontName = "宋體"
.FontSize = 14 * mm
.CurrentY = .CurrentY + 3 * mm
.CurrentX = Zhuo
Obj.Print " RHF7.4-07A";
.CurrentX = Hen - .TextWidth(Ddh) - Zhuo - 3 * mm
Obj.Print Ddh
'畫表格
Hh = Zhuo '表格左上角坐標(biāo)
Ss = .CurrentY + 3 * mm
For i = 0 To 9
Obj.Line (Hh, Ss + i * nn)-(Hen - Zhuo, Ss + i * nn) '橫線
Next
Obj.Line (Hh, Ss + 12.5 * nn)-(Hen - Zhuo, Ss + 12.5 * nn)
Obj.Line (Hh, Ss + 18 * nn)-(Hen - Zhuo, Ss + 18 * nn)
Obj.Line (Hh, Ss)-(Hh, Ss + 18 * nn) '豎線
Obj.Line (Hen - Zhuo, Ss)-(Hen - Zhuo, Ss + 18 * nn)
Obj.Line (Hh + nn, Ss + 2 * nn)-(Hh + nn, Ss + 9 * nn)
Obj.Line (Hh + 3.5 * nn, Ss)-(Hh + 3.5 * nn, Ss + 9 * nn)
Obj.Line (Hh + 7 * nn, Ss + 2 * nn)-(Hh + 7 * nn, Ss + 9 * nn)
Obj.Line (Hh + 8 * nn, Ss + 2 * nn)-(Hh + 8 * nn, Ss + 9 * nn)
Obj.Line (Hh + 9.5 * nn, Ss + 2 * nn)-(Hh + 9.5 * nn, Ss + 9 * nn)
Obj.Line (Hh + 11.5 * nn, Ss + 2 * nn)-(Hh + 11.5 * nn, Ss + 9 * nn)
Obj.Line (Hen / 2, Ss + 12.5 * nn)-(Hen / 2, Ss + 18 * nn)
'填數(shù)據(jù)
Hh1 = (nn - .TextHeight("供")) / 2
.CurrentX = Hh + (3.5 * nn - .TextWidth("供方單位")) / 2
.CurrentY = Ss + Hh1
Obj.Print "供方單位";
.CurrentX = Hh + 3.5 * nn + ((Beisu - 3.5) * nn - .TextWidth(RS1.Fields("供方全稱") "")) / 2
Obj.Print RS1.Fields("供方全稱") ""
.CurrentX = Hh + (3.5 * nn - .TextWidth("傳真號(hào)碼")) / 2
.CurrentY = Ss + nn + Hh1
Obj.Print "傳真號(hào)碼";
.CurrentX = Hh + 3.5 * nn + ((Beisu - 3.5) * nn - .TextWidth(RS1.Fields("傳真") "")) / 2
Obj.Print RS1.Fields("傳真") ""
.CurrentX = Hh + (nn - .TextWidth("序號(hào)")) / 2
.CurrentY = Ss + 2 * nn + Hh1
Obj.Print "序號(hào)";
.CurrentX = Hh + nn + (2.5 * nn - .TextWidth("品 名")) / 2
Obj.Print "品 名";
.CurrentX = Hh + 3.5 * nn + (3.5 * nn - .TextWidth("規(guī)格型號(hào)")) / 2
Obj.Print "型號(hào)規(guī)格";
.CurrentX = Hh + 7 * nn + (nn - .TextWidth("單位")) / 2
Obj.Print "單位";
.CurrentX = Hh + 8 * nn + (1.5 * nn - .TextWidth("數(shù)量")) / 2
Obj.Print "數(shù)量";
.CurrentX = Hh + 9.5 * nn + (2 * nn - .TextWidth("交貨日期")) / 2
Obj.Print "交貨日期";
.CurrentX = Hh + 11.5 * nn + ((Beisu - 11.5) * nn - .TextWidth("備 注")) / 2
Obj.Print "備 注"
.FontSize = 12 * mm
Hh1 = (nn - .TextHeight("供")) / 2
For i = 1 To Rsnum
.CurrentX = Hh + (nn - .TextWidth(Format(i))) / 2
.CurrentY = Ss + (2 + i) * nn + Hh1
Obj.Print Format(i);
.CurrentX = Hh + nn + (2.5 * nn - .TextWidth(Rs.Fields("產(chǎn)品名稱"))) / 2
Obj.Print Rs.Fields("產(chǎn)品名稱");
.CurrentX = Hh + 3.5 * nn + (3.5 * nn - .TextWidth(Rs.Fields("規(guī)格型號(hào)"))) / 2
Obj.Print Rs.Fields("規(guī)格型號(hào)");
.CurrentX = Hh + 7 * nn + (nn - .TextWidth(Rs.Fields("單位"))) / 2
Obj.Print Rs.Fields("單位");
.CurrentX = Hh + 8 * nn + (1.5 * nn - .TextWidth(Format(Rs.Fields("采購(gòu)數(shù)量")))) / 2
Obj.Print Format(Rs.Fields("采購(gòu)數(shù)量"));
.CurrentX = Hh + 9.5 * nn + (2 * nn - .TextWidth(Rs.Fields("交貨日期"))) / 2
Obj.Print Rs.Fields("交貨日期");
.CurrentX = Hh + 11.5 * nn + ((Beisu - 11.5) * nn - .TextWidth(Rs.Fields("備注"))) / 2
Obj.Print Rs.Fields("備注")
Rs.MoveNext
Next
Rs.Close
RS1.Close
Cn.Close
.CurrentY = Ss + 9 * nn
Obj.Print
.CurrentX = Hh + 3 * mm
Obj.Print "注:"
Obj.Print
.CurrentX = Hh + 3 * mm
Obj.Print "1. 因供方產(chǎn)品質(zhì)量問(wèn)題引起的客戶索賠及未按時(shí)交貨引起的經(jīng)濟(jì)損失由供方承擔(dān)。"
Obj.Print
.CurrentX = Hh + 3 * mm
Obj.Print "2. 接到采購(gòu)單后請(qǐng)速蓋章回簽,如兩天內(nèi)不回簽視同交貨期默認(rèn)。"
Obj.Print
.CurrentX = Hh + 3 * mm
Obj.Print "3. 價(jià)格:"
.FontSize = 14 * mm
.CurrentY = Ss + 12.5 * nn
Obj.Print
.CurrentX = Hh + 3 * mm
Obj.Print "需方單位(章)";
.CurrentX = .ScaleWidth / 2 + 3 * mm
Obj.Print "供方單位(章)"
Obj.Print
.CurrentX = Hh + 3 * mm
Obj.Print " "; Cangmin
.CurrentY = .CurrentY + 0.5 * .TextHeight("A")
.CurrentX = Hh + 3 * mm
.FontSize = 12 * mm
Obj.Print "地 址:"; Left(Addr, 11)
.CurrentY = .CurrentY + 0.5 * .TextHeight("A")
.CurrentX = Hh + 3 * mm
Obj.Print " "; Right(Addr, 8)
.CurrentY = .CurrentY + 0.5 * .TextHeight("A")
.CurrentX = Hh + 3 * mm
Obj.Print "電 話:"; Tel
.CurrentY = .CurrentY + 0.5 * .TextHeight("A")
.CurrentX = Hh + 3 * mm
Obj.Print "傳 真:"; Fax
.CurrentY = .CurrentY + 0.5 * .TextHeight("A")
.CurrentX = Hh + 3 * mm
Obj.Print "聯(lián)系人:"
Obj.Print
.CurrentX = .ScaleWidth / 2 - .TextWidth(Format(Date, "yyyy年mm月dd日 "))
Obj.Print Format(Date, "yyyy年mm月dd日");
.CurrentX = .ScaleWidth - Zhuo - .TextWidth("年 月 日 ")
Obj.Print "年 月 日"
If TypeName(Obj) = "Printer" Then
.EndDoc
End If
End With
End Sub
核心代碼:Requery方法!
也可以直接使用ADODB.Recordset!不使用DataEnvironment!例:
...
public adoRecordsetX as ADODB.Recordset
...
Private Sub DataReport_Initialize()
adoRecordsetX.Requery
Set DataReport1.DataSource = adoRecordsetX '設(shè)置 DataReport 的數(shù)據(jù)源
...
'綁定某字段
Me.Sections.Item("Section1").Controls.Item("text1").DataField=adoRecordsetX.Fields.Item(0).Name
...
End Sub
wuxiaoqiang的意見(jiàn):
在你們有關(guān)上述問(wèn)題的回答,我想再增加一種更簡(jiǎn)單的解決辦法。
1.在datareport 報(bào)表中設(shè)置datamember和datasource為空。
2.將以前綁定的RptTextBox的datamember設(shè)為空,保留原來(lái)的datafield.
3.在打印操作中增加以下代碼:
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" + App.path + "\finance.mdb" + ";"
Set tb = New Recordset
tb.Open "select * from dailyfeeprint", db, adOpenStatic, adLockOptimistic
With tb
.AddNew
![工號(hào)] = Combo1(0).Text
![姓名] = txtFields(0).Text
![交費(fèi)日期] = txtFields(1).Text
.........
.Update
End With
Set data1.Recordset = tb
Set datareport1.DataSource = data1
datareport1.Show
datareport1.PrintReport
在VB中,右鍵點(diǎn)擊右面工程視圖中的工程圖標(biāo),點(diǎn)選其中的添加-Data
Environment(
即建立一個(gè)數(shù)據(jù)環(huán)境),再點(diǎn)添加-Data
Report
(即建立一個(gè)報(bào)表)。一般來(lái)說(shuō)VB自帶的報(bào)表已能滿足使用要求,如果需要功能更加強(qiáng)大的報(bào)表控件,可以選擇水晶報(bào)表控件CrystalReport或TrueDBGrid。
CrystalReportViewer
dataset 定義數(shù)據(jù)源
.rpt 文件描述具體報(bào)表樣式
再加一個(gè)調(diào)用報(bào)表的FORM,就可以實(shí)現(xiàn)簡(jiǎn)單的報(bào)表功能
Option Explicit
dim Report as New Cystal1
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
'調(diào)用水晶報(bào)表時(shí)置鼠標(biāo)為沙漏狀 CRViewer91.ReportSource = Report '該語(yǔ)句的賦值將在后面被修改
CRViewer91.ViewReport
Screen.MousePointer = vbDefault '調(diào)用水晶報(bào)表完成后置鼠標(biāo)為默認(rèn)形狀
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub
本文標(biāo)題:vb.net如何做報(bào)表,vb報(bào)表設(shè)計(jì)器教程
網(wǎng)站網(wǎng)址:http://sd-ha.com/article2/dsspgic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站內(nèi)鏈、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)