Digital Note

Grab a coffe, take a seat, maybe listen to some music and relax by reading our digital daily diary. We want to share our minds and know how with you and the whole world!

Blog phones

Merubah Setting Connection String Crystal Report pada VB .Net

Program VB .Net yang menggunakan Crystal Report (CR) yang dibuat di komputer lokal akan menemukan kendala saat program tersebut didistribusikan (diinstall dikomputer yang menggunakan database yang berbeda) karena ConnectionString yang dipergunakan pasti berbeda. Berikut source code untuk mengatasi masalah tersebut.

Mengganti CR ConnectionString pada VB
Note : Struktur tabel harus sama!!!

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myReport As New worldsales_northwind() '<-- lihat source code di bawah 
CrystalReportViewer1.ReportSource = myReport 
myReport.Load() 
Dim myDBConnectionInfo As New CrystalDecisions.Shared.ConnectionInfo() 
With myDBConnectionInfo 
.ServerName = "localhost" 
.DatabaseName = "Northwind" 
.UserID = "sa" 
.Password = "" 
End With
End Sub

Mengganti source melalui VB tanpa tergantung pada CR

Dim crtableLogoninfos As New TableLogOnInfos()
Dim crtableLogoninfo As New TableLogOnInfo()
Dim crConnectionInfo As New ConnectionInfo()
Dim CrTables As Tables
Dim CrTable As Table

'Declare ReportDocument object and load your existing report
'Make sure that you give the correct path for the document else it will give exception
Dim crReportDocument As New ReportDocument()
crReportDocument.Load("C:\MyApp\Crystal\Crystal\WorldSalesReport.rpt")
CrystalReportViewer1.ReportSource = crReportDocument

CrTables = crReportDocument.Database.Tables

Dim crLoc As String
crLoc = txtDb.ToString & ".dbo"

For Each CrTable In CrTables

crtableLogoninfo = CrTable.LogOnInfo
'Read MachineName\InstanceName,Database details from User interface
'and load them into crConnectionInfo object
crConnectionInfo.ServerName = txtMac.Text
crConnectionInfo.DatabaseName = txtDb.Text
crConnectionInfo.IntegratedSecurity = True
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
CrTable.Location.Substring(CrTable.Location.LastIndexOf(".") + 1)

Next

crReportDocument.ReportOptions.EnableSaveDataWithReport = False
'Refresh the ReportViewer Object
CrystalReportViewer1.RefreshReport()
'Bind the ReportDocument to ReportViewer Object
CrystalReportViewer1.ReportSource = crReportDocument

Dari Sumber lain : http://vb.net-informations.com/crystal-report/vb.net_crystal_report_load_dynamically.htm

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class Form1
  Private Sub Button1_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles Button1.Click
      Dim cryRpt As New ReportDocument
      Dim crtableLogoninfos As New TableLogOnInfos
      Dim crtableLogoninfo As New TableLogOnInfo
      Dim crConnectionInfo As New ConnectionInfo
      Dim CrTables As Tables
Dim CrTable As Table
cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt")

With crConnectionInfo
.ServerName = "YOUR SERVER NAME"
.DatabaseName = "YOUR DATABASE NAME"
.UserID = "YOUR DATABASE USERNAME"
.Password = "YOUR DATABASE PASSWORD"
End With

CrTables = cryRpt.Database.Tables
For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next

CrystalReportViewer1.ReportSource = cryRpt
CrystalReportViewer1.Refresh()
End Sub
End Class

 

Tags: ,

Trackback from your site.

Leave a comment