تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طباعة قائمة combobox الى ملف PDF
#1
السلام عليكم 
الكود التالي يقوم بطباعة شهادات الطلاب الى ملف 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
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته
--
بشكل عام التقارير تتكون من ثلاث مناطق : 
- الترويسة (ترويسة بأول صفحة من التقرير وترويسة لكل صفحة).
- التذييل (تذييل لكل صفحة وتذييل بخر صفحة للتقرير).
- عرض التقرير (وهي المنطقة ما بين الترويسة والتذييل).

أي بيانات تضعها ضمن الترويسة أو التذييل سيأخذها التقرير مرة واحدة وسوف تتكرر.
وأي بيانات تضعها ضمن عرض التقرير فلن تتكرر ، وسيتم سردها بحسب جملة الاستعلام التي زودت بها التقرير.

المشكلة التي تتحدث عنها توضح أن هناك خطأ بتصميم التقرير،،
مما سبق يعني : عليك أن تجعل البيانات التي لا تريد تكرارها ضمن عرض التقرير وليس في( الترويسة والتذييل).


--
أحببت أن ألفت انتباهك لهذه النقطة،، 
فهذا ما أعرفه وربما غيري يستطيع افادتك أكثر مني..
أعتذر أني لم أستطع أن أفيدك أكثر من ذلك.


--
طريقة آخرى للحل  : 
تصور أنك تبني قالب ضمن داتاتيبل .. تضع فيه كل البيانات التي تريدها لكل طالب ضمن سطر(سجل) واحد.، ثم الطالب الذي يليه ضمن السجل الثاني.
وتجعل هذا الجدول الافتراضي مصدراً لهذا التقرير، سيكون عندها الأمر أبسط..
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة:
#3
(09-02-23, 08:38 PM)Tajaldeen كتب : السلام عليكم 
الكود التالي يقوم بطباعة شهادات الطلاب الى ملف 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

(09-02-23, 09:40 PM)Taha Okla كتب : السلام عليكم ورحمة الله وبركاته
--
بشكل عام التقارير تتكون من ثلاث مناطق : 
- الترويسة (ترويسة بأول صفحة من التقرير وترويسة لكل صفحة).
- التذييل (تذييل لكل صفحة وتذييل بخر صفحة للتقرير).
- عرض التقرير (وهي المنطقة ما بين الترويسة والتذييل).

أي بيانات تضعها ضمن الترويسة أو التذييل سيأخذها التقرير مرة واحدة وسوف تتكرر.
وأي بيانات تضعها ضمن عرض التقرير فلن تتكرر ، وسيتم سردها بحسب جملة الاستعلام التي زودت بها التقرير.

المشكلة التي تتحدث عنها توضح أن هناك خطأ بتصميم التقرير،،
مما سبق يعني : عليك أن تجعل البيانات التي لا تريد تكرارها ضمن عرض التقرير وليس في( الترويسة والتذييل).


--
أحببت أن ألفت انتباهك لهذه النقطة،، 
فهذا ما أعرفه وربما غيري يستطيع افادتك أكثر مني..
أعتذر أني لم أستطع أن أفيدك أكثر من ذلك.


--
طريقة آخرى للحل  : 
تصور أنك تبني قالب ضمن داتاتيبل .. تضع فيه كل البيانات التي تريدها لكل طالب ضمن سطر(سجل) واحد.، ثم الطالب الذي يليه ضمن السجل الثاني.
وتجعل هذا الجدول الافتراضي مصدراً لهذا التقرير، سيكون عندها الأمر أبسط..

هل توصلت للحل؟؟؟
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تحميل قائمة فيديوهات كاملة من اليوتيوب dr.programming 1 164 06-12-25, 02:26 AM
آخر رد: princelovelorn
  كيف يتم عرض جدول من قائمة listbox في داتاقريدفيو ahmedfa71 5 883 04-09-25, 02:59 PM
آخر رد: ahmedfa71
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,868 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  [سؤال] اريد طباعة تقرير ريبورت فيو مباشرة فور عرض التقرير mh66 1 565 22-03-25, 09:59 AM
آخر رد: mh66
  طريقة طباعة ملف pdf بقاعدة بيانات sql heem1986 0 529 25-02-25, 09:31 AM
آخر رد: heem1986
  [VB.NET] طلب كود vba اكسل يقوم بنسخ خلية من قائمة ثم لصقها في خلية اخرى Faisal_kg 0 374 25-10-24, 09:13 PM
آخر رد: Faisal_kg
  طباعة تقرير كرستال DOX.1 7 2,267 14-10-24, 06:59 AM
آخر رد: am000er
  كيف أضيف المواد في ComboBox إلى ComboBox آخر في فورم آخر F.H.M 13 889 25-09-24, 11:05 PM
آخر رد: Taha Okla
  طباعة تقرير بطول وعرض معين (التقرير عبارة عن سطر) atefkhalf2004 7 641 15-07-24, 01:53 AM
آخر رد: atefkhalf2004
  طباعة report viewer دون فتح نافذة الطابعات atefkhalf2004 6 694 18-06-24, 02:35 PM
آخر رد: atefkhalf2004

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم