09-02-23, 08:38 PM
السلام عليكم
الكود التالي يقوم بطباعة شهادات الطلاب الى ملف PDF بشكل جماعي من تقرير ReportViewer (أي أن جميع المخرجات تكون داخل ملف واحد) لكي يسهل علي طباعتها بعد ذلك بكبسة زر واحدة من ملف ال PDF عوضا عن طباعة كل شهادة بتغيير قيمة combobox من الفورم في كل مرة.
المشكلة الوحيدة أن هناك بعض حقول (Parameters) في الشهادة غير مرتبطة بال Dataset ولا يتم طباعتها إلا للشهادة الحالية وتوزع على بقية الشهادات التي يفترض أن يأخذ كل طالب قيم ال Parameters الخاصة به ، ولكن هذا لا يحدث حيث تأخذ كل الشهادات قيم ال Parameters الخاصة بالشهادة الحالية اما الحقول المرتبطة بال Dataset فتتغير لكل طالب بدون أي مشاكل . مع انني عندما أختار طالب من ال Combobox تتغير جميع القيم بما فيها حقول ال Parameters
أرجوا ان تكون المشكلة واضحة
ودمتم بخير
ملاحظة : هذا الكود لا يعمل إلا بعد تثبيت الملحق iTextSharp وتضمين المكتبات iTextSharp.text و iTextSharp.text.pdf
الكود التالي يقوم بطباعة شهادات الطلاب الى ملف PDF بشكل جماعي من تقرير ReportViewer (أي أن جميع المخرجات تكون داخل ملف واحد) لكي يسهل علي طباعتها بعد ذلك بكبسة زر واحدة من ملف ال PDF عوضا عن طباعة كل شهادة بتغيير قيمة combobox من الفورم في كل مرة.
المشكلة الوحيدة أن هناك بعض حقول (Parameters) في الشهادة غير مرتبطة بال Dataset ولا يتم طباعتها إلا للشهادة الحالية وتوزع على بقية الشهادات التي يفترض أن يأخذ كل طالب قيم ال Parameters الخاصة به ، ولكن هذا لا يحدث حيث تأخذ كل الشهادات قيم ال Parameters الخاصة بالشهادة الحالية اما الحقول المرتبطة بال Dataset فتتغير لكل طالب بدون أي مشاكل . مع انني عندما أختار طالب من ال Combobox تتغير جميع القيم بما فيها حقول ال Parameters
أرجوا ان تكون المشكلة واضحة
ودمتم بخير
ملاحظة : هذا الكود لا يعمل إلا بعد تثبيت الملحق iTextSharp وتضمين المكتبات iTextSharp.text و iTextSharp.text.pdf
كود :
Private Sub PrintAll_Click(sender As Object, e As EventArgs)
Me.Cursor = Cursors.WaitCursor
Me.DataSet1.DataTable1.Clear()
Me.DataTable1TableAdapter.Fill(Me.DataSet1.DataTable1)
Dim outputFile As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "AllStudents.pdf")
Dim document As New Document
Dim pdfCopy As PdfCopy = New PdfCopy(document, New FileStream(outputFile, FileMode.Create))
document.Open()
Dim customersCopy As DataSet1.DataTable1DataTable = DataSet1.DataTable1.Copy()
For Each row As DataRow In customersCopy.Rows
Me.DataTable1TableAdapter.Search_ID(Me.DataSet1.DataTable1, row("ID").ToString())
Me.ReportViewer1.RefreshReport()
Dim pdfRenderBytes As Byte() = ReportViewer1.LocalReport.Render("PDF")
Dim reader As New PdfReader(pdfRenderBytes)
For i As Integer = 1 To reader.NumberOfPages
pdfCopy.AddPage(pdfCopy.GetImportedPage(reader, i))
Next
reader.Close()
Next
document.Close()
Process.Start(outputFile)
Me.Cursor = Cursors.Default
End Sub