ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 537|ตอบกลับ: 0

[VB.NET] การแสดงผลภาพลงใน ActiveReports ด้วยวิธีการ UnBound Data

[คัดลอกลิงก์]

311

กระทู้

502

โพสต์

6056

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6056



การแสดงผลภาพลงใน ActiveReports ด้วยวิธีการ UnBound Data หรือการไม่ผูกฟิลด์ข้อมูลใดๆเข้ากับ Control จะทำให้เกิดความยืดหยุ่นในการปรับแต่งใช้งาน เช่น ในฐานข้อมูลจะเก็บเฉพาะชื่อไฟล์ภาพเท่านั้น แล้วใช้พาธ (Path) ในการนำภาพมาแสดงผลลงใน PictureBox โค้ดชุดนี้แอดมินได้ตัดส่วน Detail ออกไป แต่จะใช้เหตุการณ์ FetchData หรือการเรียกข้อมูลมาแสดงผลใหม่แทนเท่านั้น ...


Design Time (AR Designer)


Add References ...

มาดูโค้ดฉบับเต็มกันเถอะ ... (ฟอร์มหลัก)
  1. Imports DataDynamics.ActiveReports.Export.Pdf

  2. Public Class frmAR6PrintImage

  3.     Private Sub btnPreview_Click(sender As System.Object, e As System.EventArgs) Handles btnPreview.Click
  4.         '// ประกาศตัวแปร rpt จากหน้ารายงาน ActiveReports
  5.         Dim rpt As New NewActiveReport1
  6.         '// สั่งรัน
  7.         rpt.Run()
  8.         Me.Viewer1.ReportViewer.Zoom = 1    '(100%)
  9.         '// แสดงผลรายงานเอกสาร
  10.         Me.Viewer1.Document = rpt.Document
  11.     End Sub

  12.     Private Sub btnExportPDF_Click(sender As System.Object, e As System.EventArgs) Handles btnExportPDF.Click
  13.         '// Add Reference: ActiveReports.PdfExport.DLL เข้ามาก่อน
  14.         '// ประกาศตัวแปร rpt จากหน้ารายงาน ActiveReports
  15.         Dim rpt As New NewActiveReport1
  16.         rpt.Run()
  17.         Me.Viewer1.Document = rpt.Document
  18.         '//
  19.         Dim pdf As New DataDynamics.ActiveReports.Export.Pdf.PdfExport()
  20.         Dim dlgSaveFile As New SaveFileDialog()
  21.         With dlgSaveFile
  22.             .Filter = "PDF|*.pdf"
  23.             .Title = "Export report to PDF File"
  24.             .DefaultExt = "pdf"
  25.             .InitialDirectory = MyPath(Application.StartupPath)
  26.             .RestoreDirectory = True
  27.         End With
  28.         If dlgSaveFile.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  29.             pdf.Export(Me.Viewer1.Document, dlgSaveFile.FileName)
  30.             '// แสดงผลไฟล์ PDF ด้วย Default PDF Reader.
  31.             Process.Start(dlgSaveFile.FileName)
  32.         End If
  33.     End Sub

  34.     Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
  35.         Me.Close()
  36.     End Sub

  37.     Private Sub frmAR6PrintImage_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  38.         Me.Dispose()
  39.         GC.SuppressFinalize(Me)
  40.         Application.Exit()
  41.     End Sub
  42. End Class
คัดลอกไปที่คลิปบอร์ด

โค้ดในส่วนของ ActiveReports (NewActiveReport1.vb)
  1. Imports System.Data.OleDb
  2. Imports DataDynamics.ActiveReports
  3. Imports DataDynamics.ActiveReports.Document

  4. Public Class NewActiveReport1

  5.     '// พาธกำหนดตำแหน่งไฟล์ภาพ
  6.     Private strPathImages As String = MyPath(Application.StartupPath) & "Images"

  7.     ' / --------------------------------------------------------------------------------
  8.     '// Start Here.
  9.     ' / --------------------------------------------------------------------------------
  10.     Private Sub NewActiveReport1_ReportStart(sender As Object, e As System.EventArgs) Handles Me.ReportStart
  11.         '/ การตั้งค่าหน้ากระดาษ
  12.         With PageSettings
  13.             '/ หน่วยวัดเป็นนิ้ว แต่ใช้การแปลงหน่วยด้วย CmToInch เข้าช่วย หากเราถนัดหน่วยวัด ซม.
  14.             .Margins.Left = CmToInch(0.75) '// แปลงค่า 1.0 ซม. เป็นนิ้ว
  15.             .Margins.Right = CmToInch(0.5)
  16.             .Margins.Top = CmToInch(1.0)
  17.             .Margins.Bottom = CmToInch(0.2)
  18.             '/ ตั้งค่ากระดาษแนวตั้ง
  19.             .Orientation = PageOrientation.Portrait
  20.             '/ กระดาษขนาด A4
  21.             .PaperKind = Drawing.Printing.PaperKind.A4
  22.         End With

  23.         '// เคลียร์ค่าก่อนการพิมพ์
  24.         txtFullName.Text = ""
  25.         txtNickName.Text = ""
  26.         txtPositionName.Text = ""
  27.         txtDepartmentName.Text = ""
  28.         Picture1.SizeMode = SizeModes.Stretch

  29.     End Sub

  30.     ' / --------------------------------------------------------------------------------
  31.     '// Add the report's fields collection. (First time only.)
  32.     ' / --------------------------------------------------------------------------------
  33.     Private Sub NewActiveReport1_DataInitialize(sender As Object, e As System.EventArgs) Handles Me.DataInitialize
  34.         '// เริ่มต้นการเชื่อมต่อฐานข้อมูล
  35.         Try
  36.             '// modDataBase.vb
  37.             Call ConnectDataBase()
  38.             '// ทำการ Query ฟิลด์ข้อมูลที่ต้องการมาแสดงผล
  39.             strSQL = _
  40.                 " SELECT EmployeePK, EmployeeID, Fullname, Nickname, PictureName, tblPosition.PositionName, tblDepartment.DepartmentName " & _
  41.                 " FROM tblDepartment INNER JOIN (tblPosition INNER JOIN tblEmployee ON tblPosition.PositionPK = tblEmployee.PositionFK) ON tblDepartment.DepartmentPK = tblEmployee.DepartmentFK " & _
  42.                 " ORDER BY EmployeePK, FullName ASC "
  43.             '// Open connection and create DataReader.     
  44.             If Conn.State = ConnectionState.Closed Then Conn.Open()
  45.             Cmd = New OleDbCommand(strSQL, Conn)
  46.             DR = Cmd.ExecuteReader()
  47.         Catch ex As Exception
  48.             MessageBox.Show(ex.Message)
  49.         End Try
  50.     End Sub

  51.     ' / --------------------------------------------------------------------------------
  52.     '// Retrieve information to populate the report fields.
  53.     ' / --------------------------------------------------------------------------------
  54.     Private Sub NewActiveReport1_FetchData(sender As Object, eArgs As DataDynamics.ActiveReports.ActiveReport.FetchEventArgs) Handles Me.FetchData
  55.         Try
  56.             DR.Read()
  57.             '// นำข้อมูลมาผูกเข้ากับฟิลด์ที่เรากำหนดบน ActiveReports
  58.             txtFullName.Text = DR("FullName")
  59.             txtNickName.Text = DR("NickName")
  60.             txtPositionName.Text = DR("PositionName")
  61.             txtDepartmentName.Text = DR("DepartmentName")
  62.             Picture1.Image = Image.FromFile(strPathImages & DR("PictureName"))
  63.             '// ยังไม่หมดข้อมูล End Of File = เท็จ ...
  64.             '// กระโดดไปพิมพ์ที่ Detail1_Format อีกครั้ง แต่ Detail1_Format ไม่มี มันจะเด้งกลับมาหาโปรแกรมย่อยของตัวเองอีกที
  65.             eArgs.EOF = False

  66.         Catch ex As Exception
  67.             '// แสดงว่าหมดข้อมูลแล้ว นั่นคือสิ้นสุดการพิมพ์
  68.             eArgs.EOF = True
  69.         End Try
  70.     End Sub

  71.     Private Sub NewActiveReport1_ReportEnd(sender As Object, e As System.EventArgs) Handles Me.ReportEnd
  72.         DR.Close()
  73.         Conn.Close()
  74.     End Sub

  75. End Class
คัดลอกไปที่คลิปบอร์ด

โค้ดในส่วนของโมดูลการเชื่อมต่อฐานข้อมูล (modDataBase.vb)
  1. Imports System.Data.OleDb
  2. Imports Microsoft.VisualBasic

  3. Module modDataBase
  4.     '// Declare variable one time but use many times.
  5.     Public Conn As OleDbConnection
  6.     Public Cmd As OleDbCommand
  7.     'Public DS As DataSet
  8.     Public DR As OleDbDataReader
  9.     'Public DA As OleDbDataAdapter
  10.     Public strSQL As String '// Major SQL
  11.     'Public strStmt As String    '// Minor SQL

  12.     '// Data Path
  13.     Public strPathData As String = MyPath(Application.StartupPath) & "Data"
  14.     '// Images Path
  15.     'Public strPathImages As String = MyPath(Application.StartupPath) & "Images"

  16.     Public Sub ConnectDataBase()
  17.         Dim strConn As String = _
  18.             "Provider = Microsoft.ACE.OLEDB.12.0;" & _
  19.             "Data Source = " & strPathData & "Employee.accdb;"
  20.         Try
  21.             Conn = New OleDb.OleDbConnection(strConn)
  22.         Catch ex As Exception
  23.             MessageBox.Show(ex.Message)
  24.         End Try
  25.     End Sub

  26.     ' / --------------------------------------------------------------------------------
  27.     ' / Get my project path
  28.     ' / AppPath = C:\My Project\bin\debug
  29.     ' / Replace "\bin\debug" with ""
  30.     ' / Return : C:\My Project\
  31.     Function MyPath(AppPath As String) As String
  32.         '/ Return Value
  33.         MyPath = AppPath.ToLower.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "")
  34.         '// If not found folder then put the \ (BackSlash) at the end.
  35.         If Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
  36.     End Function
  37. End Module
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดฉบับเต็ม VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-4-28 17:35 , Processed in 0.234201 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้