Anda akan menemukan selanjutnya prosedur yang saya gunakan (saya menyederhanakannya dengan cepat, menekan objek kita sendiri dan variabel global). Prosedur ini memungkinkan untuk mengarahkan laporan dari koneksi asli yang digunakan pada waktu pengembangan ke server SQL aktif. Itu ditulis dalam VB dan menggunakan 2 objek utama:
- Objek laporan asli dibuka melalui instance laporan kristal
- Koneksi ADODB menjadi koneksi aktif (disebut P_currentConnection) ke server SQL saat ini
Fungsi ini (bisa juga sub) dipanggil sebelum melihat/mencetak objek laporan di aplikasi. Ini dapat digunakan saat mendistribusikan laporan di antara basis data yang direplikasi di mana pengguna, bergantung pada lokasinya, terhubung ke server/basis data yang berbeda.
Public Function connectReportToDatabase( _
P_report As CRAXDRT.Report)
Dim table As CRAXDRT.DatabaseTable, _
For Each table In P_report.Database.tables
If table.DllName <> "crdb_ado.dll" Then
table.DllName = "crdb_ado.dll"
End If
table.ConnectionProperties.DeleteAll
table.ConnectionProperties.Add "Provider", P_currentConnection.Provider
table.ConnectionProperties.Add "Data source", P_currentConnection.Properties("Data source").Value
table.ConnectionProperties.Add "Database", P_currentConnection.DefaultDatabase
table.ConnectionProperties.Add "Integrated security", P_currentConnection.Properties("Integrated security").Value
table.ConnectionProperties.Add "Persist Security Info", P_currentConnection.Properties("Persist Security Info").Value
table.ConnectionProperties.Add "Initial Catalog", P_currentConnection.Properties("Initial Catalog").Value
table.SetTableLocation table.location, "", P_currentConnection.ConnectionString
table.TestConnectivity
Next table
Itu bisa dipanggil dengan prosedur seperti:
Dim crystal As CRAXDRT.Application, _
m_report as CRAXDRT.report
Set crystal = New CRAXDRT.Application
Set m_rapport = crystal.OpenReport(nameOfTheReport & ".rpt")
connectreportToDatabase(m_report)
Jika laporan Anda menyertakan sublaporan, Anda mungkin juga harus mengarahkannya ke koneksi aktif. Dalam hal ini, Anda harus menelusuri semua objek dalam laporan Anda, memeriksa yang merupakan jenis laporan dan mengarahkannya ke koneksi baru. Saya yakin Anda akan senang menambahkan baris tambahan yang sesuai ke prosedur asli ini.