السلام عليكم
أخواني الأفاضل في المرفق مثال بسيط عن مشكلتي في كود ترحيل محتويات التكست بوكس من الفورم إلى الكريستال ريبورت وطباعة التقرير تلقائياً بدون معاينة
أفيدوني جزاكم الله خيراً فقد تعلمت الكثير من خلال هذا المنتدى وأرغب بالمزيد
لو تقارير المايكروسوفت المدمجة مع الفيجوال ستوديو كان افدتك ،، الكريستال ريبورت برنامج خارجي عن الفيجوال لذلك ما اتعامل معه . في انتظار احد الاخوه ممن يتعامل مع الكريستال .
اخي حريف برمجة لم أفهم قصدك لكن الكريستال ريبورت الذي استخدمه هو من داخل الفيجوال
على كل حال شكرا جزيلا على اهتمامك اخي العزيز
.....
منقول مع تعديل بسيط ليناسب طلبك
الطباعة إلى الطابعة الإفتراضية مباشرة بدون معاينة
كود :
' الطباعة إلى الطابعة الإفتراضية مباشرة بدون معاينة
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' إستخدام التقرير
Using myreport As New CrystalReport1
' تمرير قيمة إلى التقرير
myreport.SetParameterValue("Amount", TextBox1.Text)
' إرسال إلى الطابعة
myreport.PrintToPrinter(1, True, 0, 0)
End Using
End Sub
منقول مع تعديل بسيط ليناسب طلبك
الطباعة إلى الطابعة المختارة من نافذة حوار الطباعة مباشرة بدون معاينة
كود :
' الطباعة إلى الطابعة المختارة من نافذة حوار الطباعة مباشرة بدون معاينة
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' إستخدام التقرير
Using myreport As New CrystalReport1
' تمرير قيمة إلى التقرير
myreport.SetParameterValue("Amount", TextBox1.Text)
' إستخدام مربع حوار الطباعة
Using ptr As New PrintDialog
ptr.UseEXDialog = True ' لابد من هذا السطر ليظهر مربع حوار الطباعة
If ptr.ShowDialog = Windows.Forms.DialogResult.OK Then
myreport.PrintOptions.PrinterName = ptr.PrinterSettings.PrinterName
' إرسال إلى الطابعة
myreport.PrintToPrinter(1, True, 0, 0)
End If
End Using
End Using
End Sub
.....
بارك الله فيك أخي العزيز فعلا مميز
هل يمكن تفريغ التقرير من البيانات المرسلة إليه بكود واحد
أخي vbnet أخواني الأعزاء
كان طلبي السابق يتعلق بطباعة التقرير مباشرة بدون معاينته إلا أن العميل يريد رؤية التقرير قبل الطباعة
فهل لي بمساعدتكم جزاكم الله خيراً حيث أني قليل خبرة في موضوع التقارير كفاكم الله شرها
في المرفق مثال بسيط للتطبيق
.....
منقول مع تعديل بسيط ليناسب طلبك
كود :
' جدول البيانات هذا يفترض أن يحتوي بيانات ناتج استعلام ما
Dim myDataTable As New DataTable
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'---------------------------------------------------------
' إما أن يكون جدول البيانات تمت تعبئة مسبقاً
' أو أن يتم هنا استدعاد إجراء لتعبئة جدول البيانات بناتج استعلام ما
'---------------------------------------------------------
' إنشاء فورم المعاينة برمجياً
Using frmPreview As New Form
'---------------------------------------------------------
' تعديل خصائص فورم المعاينة ------------------------------
' وضع عنوان للفورم
frmPreview.Text = "معاينة"
' جعل واجهة الفورم من اليمين لليسار
frmPreview.RightToLeftLayout = True
frmPreview.RightToLeft = Windows.Forms.RightToLeft.Yes
' تحديد حجم الفورم
frmPreview.Size = New Size(700, 500)
'' جعل الفورم بكامل الشاشة
'frmPreview.WindowState = FormWindowState.Maximized
' تحديد مكان ظهور الفورم في منتصف الشاشة
frmPreview.StartPosition = FormStartPosition.CenterScreen
'---------------------------------------------------------
' إستخدام التقرير
Using myreport As New CrystalReport1
' ربط جدول البيانات بالتقرير
' يجب أن يكون قبل تمرير قيم للتقرير
myreport.SetDataSource(myDataTable)
'---------------------------------------------------------
' تمرير كل القيم المطلوبة إلى التقرير حتى لو كانت فارغة
myreport.SetParameterValue("Amount", TextBox1.Text)
'myreport.SetParameterValue("Description", TextBox2.Text)
'---------------------------------------------------------
' إنشاء عارض التقارير برمجياً
Using myCRptViewer As New CrystalDecisions.Windows.Forms.CrystalReportViewer
' جعل أداة عارض التقارير أحد أدوات فورم المعاينة
myCRptViewer.Parent = frmPreview
' جعل أداة عرض التقرير بكامل الفورم
myCRptViewer.Dock = DockStyle.Fill
' إخفاء بعض أدوات عارض التقارير التي لا نحتاجها
myCRptViewer.DisplayGroupTree = False
myCRptViewer.ShowCloseButton = False
myCRptViewer.ShowExportButton = False
myCRptViewer.ShowGroupTreeButton = False
myCRptViewer.ShowRefreshButton = False
myCRptViewer.ShowTextSearchButton = False
' ربط التقرير بعارض التقارير
myCRptViewer.ReportSource = myreport
' وضع الزووم للصفحة داخل أداة عارض التقارير
' 1 = Page Width بعرض الصفحة
' 2 = Whole Page بكامل الصفحة
myCRptViewer.Zoom(2)
' عرض فورم المعاينة
frmPreview.ShowDialog()
End Using
End Using
End Using
End Sub
.....
راااااائع أخي vbnet كالعادة
لكن كيف يمكن التحكم بخصائص هذا الفورم الجديد frmPreview ( طوله، عرضه، مكان ظهوره، عنوانه .....إلخ)
تقبل مني كل الشكر والامتنان
اخواني الأفاضل
لدي مشكلة في طباعة التقرير أعتقد أنها تتعلق بحجم الورق حيث أني حين أطبع بحجم A4 يظهر التقرير سواء كان اتجاه الطباعة أفقي Landscape أو عمودي Portrait
أما عند الطباعة بحجم أصغر من A4 يظهر التقرير فقط عندما تكون الطباعة باتجاه عمودي أما بالاتجاه الأفقي فلا يظهر نهائياً
وأنا أحتاج الطباعة مباشرة بالخيارين ولا أريد إظهار PrintDialog
استخدم الكود التالي دون جدوى
كود :
MyRep.PrintOptions.PaperOrientation = PaperOrientation.Portrait
Or
MyRep.PrintOptions.PaperOrientation = PaperOrientation.Landscape
أفيدوني جزاكم الله ألف خير