السلام عليكم
أخواني الأفاضل في المرفق مثال بسيط عن مشكلتي في كود ترحيل محتويات التكست بوكس من الفورم إلى الكريستال ريبورت وطباعة التقرير تلقائياً بدون معاينة
أفيدوني جزاكم الله خيراً فقد تعلمت الكثير من خلال هذا المنتدى وأرغب بالمزيد
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
لو تقارير المايكروسوفت المدمجة مع الفيجوال ستوديو كان افدتك ،، الكريستال ريبورت برنامج خارجي عن الفيجوال لذلك ما اتعامل معه . في انتظار احد الاخوه ممن يتعامل مع الكريستال .
' الطباعة إلى الطابعة الإفتراضية مباشرة بدون معاينة
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
أخي 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
اخواني الأفاضل
لدي مشكلة في طباعة التقرير أعتقد أنها تتعلق بحجم الورق حيث أني حين أطبع بحجم A4 يظهر التقرير سواء كان اتجاه الطباعة أفقي Landscape أو عمودي Portrait
أما عند الطباعة بحجم أصغر من A4 يظهر التقرير فقط عندما تكون الطباعة باتجاه عمودي أما بالاتجاه الأفقي فلا يظهر نهائياً
وأنا أحتاج الطباعة مباشرة بالخيارين ولا أريد إظهار PrintDialog
استخدم الكود التالي دون جدوى