21-02-20, 08:01 PM
(آخر تعديل لهذه المشاركة : 21-02-20, 10:11 PM {2} بواسطة عبد العزيز البسكري.)
السّلام عليكم و رحمة الله و بركاته
إخواني الأفاضل .. جمعة مباركة للجميع
عسى أن تكونوا كلّكم بتمام الصحّة و العافية و راحة البال
رغبة منّي في وضع كود الطباعة بالموديل و أستعمله في العديد من المرّات بجميع الفورمات دون الحاجة إلى كتابته كل مرّة بالفورم و أكتفي فقط باستدعائه ..
كود :
Public Sub Globale_Crystal_Print_Preview_Report(ByVal Sql_String As String, ByVal Report_Name As String, ByVal Table_Name As String)
Cursor.Current = Cursors.WaitCursor
Dim Rpt As New ReportDocument
Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
Dim CrTables As Tables
Try
Dim MyReportPath As String = Application.StartupPath & "\FolderReport\" & Report_Name & ".Rpt"
Rpt.Load(MyReportPath)
With crConnectionInfo
.ServerName = Application.StartupPath & "\ABDELAZIZ.Mdb"
.DatabaseName = Application.StartupPath & "\ABDELAZIZ.Mdb"
.UserID = "Admin"
.Password = "XZ987654SW"
End With
CrTables = Rpt.Database.Tables
For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next
If Conne_2020.State = ConnectionState.Closed Then Conne_2020.Open()
Dim Adp = New OleDb.OleDbDataAdapter(Sql_String, Conne_2020)
Dim Ds As DataSet = New DataSet()
Adp.Fill(Ds, Table_Name)
Dim Dt = Ds.Tables(0)
If Dt.Rows.Count = 0 Then
XtraMessageBox.Show("لم يتم العثور على بيانات لعرضها في التّقرير", "طباعة التقرير", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Cursor.Current = Cursors.Default
Exit Sub
Else
Rpt.SetDataSource(Ds)
Dim Frm As New FrmCrystalPrinting
Frm.CrystalReportViewer1.ReportSource = Rpt
Frm.CrystalReportViewer1.Zoom(100%)
Frm.CrystalReportViewer1.Refresh()
Frm.ShowDialog()
End If
If Conne_2020.State = ConnectionState.Open Then Conne_2020.Close()
Rpt.Close()
Rpt.Dispose()
Catch ex As Exception
XtraMessageBox.Show("خطأ غير متوقّع في عمليّة جلب البيانات", "طباعة التقرير")
End Try
End Subكود الإستدعاء و الطباعة ..
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Call Globale_Crystal_Print_Preview_Report("SELECT * From TBL_STUDENT", "Crystal1", "TBL_STUDENT")
End Subإلى هنا .. الأمور تسير على أحسن وجه .. و بدون أي إلتباسات
المشكلة إخواني الأعزّاء ..
أحيانا أحتاج لإضافة عناوين خاصّة بتمرير قيمة تاكست بكس من الفورم إلى صفحة التّقرير
بواسطة كود تمرير القيم إلى التّقرير
كود :
Dim Text1 As CrystalDecisions.CrystalReports.Engine.TextObject = Rpt.Section2.ReportObjects("Text1")
Text1.Text = Me.TextBox1.Text
Dim Text2 As CrystalDecisions.CrystalReports.Engine.TextObject = Rpt.Section2.ReportObjects("Text2")
Text2.Text = Me.TextBox2.Textعلى أساس Text1 و Text2 هي من نوع TextObject الخاصة بالكريستال ريبورت
طبعا من المفروض بالطباعة العادية من خلال الفورم .. يكون الكود بهذا الشكل ..
كود :
If Dt.Rows.Count = 0 Then
XtraMessageBox.Show("لم يتم العثور على بيانات لعرضها في التّقرير", "طباعة التقرير", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Cursor.Current = Cursors.Default
Exit Sub
Else
Rpt.SetDataSource(Ds)
Dim Text1 As CrystalDecisions.CrystalReports.Engine.TextObject = Rpt.Section2.ReportObjects("Text1")
Text1.Text = Me.TextBox1.Text
Dim Text2 As CrystalDecisions.CrystalReports.Engine.TextObject = Rpt.Section2.ReportObjects("Text2")
Text2.Text = Me.TextBox2.Text
Dim Frm As New FrmCrystalPrinting
Frm.CrystalReportViewer1.ReportSource = Rpt
Frm.CrystalReportViewer1.Zoom(100%)
Frm.CrystalReportViewer1.Refresh()
Frm.ShowDialog()ما أطلبه .. فضل و كرم و إحسان منكم هو ..
كيف أدمج هذيْن السطريْن أعلاه و أضيفهما على كود الطباعة بالموديل و أتحكم بتسميات التاكسات بوكس التي أريد إضفة قيمها لصفحة الكريستال ريبورت
بارك الله فيكم و لكم و جزاكم خير الجزاء مقدما
تحياتي واحتراماتي
قناتنا على اليوتوب
