[ تمّ الحل ] : تساؤل حول الطباعة من خلال جدولين بقاعدة البيانات - عبد العزيز البسكري - 23-03-20
السّلام عليكم و رحمة الله و بركاته
إخواني الأكارم .. أرجو المساعدة لحل هذه الإشكالية بارك الله فيكم و لكم مقدما
لديّ جدولين اثنين بقاعدة البيانات
جدول رأس الفاتورة TBL_INVOICES_VENTE
جدول بيانات الفاتورة TBL_INVOICES_VENTE_DETAILS
الرابط المشترك بينهما هو الحقل : INVOICES_VENTE_Code و INVOICES_VENTE_DETAILS_Code
المشكلة أثناء إختيار كود الفاتورة بالتاكست بوكس رقم 2
عند الطباعة تظهر بيانات تفاصيل الفاتورة مكرّرة
حاولت بالعديد من الأكواد لكن بدون فائدة
هذا هو الكود المستخدم للطباعة
كود :
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
If Me.TextBox2.Text = vbNullString Then
MessageBox.Show("الرّجاء .. كتابة كود الفاتورة", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Else
Cursor.Current = Cursors.WaitCursor
Dim AzizCrystal 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\Crystal1.Rpt"
AzizCrystal.Load(MyReportPath)
With crConnectionInfo
.ServerName = Application.StartupPath & "\MARKETING.Mdb"
.DatabaseName = Application.StartupPath & "\MARKETING.Mdb"
.UserID = "Admin"
.Password = "AZERTY987654"
End With
CrTables = AzizCrystal.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 Ds As DataSet = New DataSet()
Dim Facture_Code As String = Me.TextBox2.Text
If Conne_2020.State = ConnectionState.Closed Then
Conne_2020.Open()
End If
Dim Sql As String = "SELECT TBL_INVOICES_VENTE_DETAILS.INVOICES_VENTE_DETAILS_Code, TBL_INVOICES_VENTE_DETAILS.INVOICES_VENTE_DETAILS_Items_Code, TBL_INVOICES_VENTE_DETAILS.INVOICES_VENTE_DETAILS_Items_Name, TBL_INVOICES_VENTE_DETAILS.INVOICES_VENTE_DETAILS_Quantite, TBL_INVOICES_VENTE_DETAILS.INVOICES_VENTE_DETAILS_Price, TBL_INVOICES_VENTE_DETAILS.INVOICES_VENTE_DETAILS_Total, TBL_INVOICES_VENTE.INVOICES_VENTE_Code,TBL_INVOICES_VENTE.INVOICES_VENTE_Date,TBL_INVOICES_VENTE.INVOICES_VENTE_Customers_Name,TBL_INVOICES_VENTE.INVOICES_VENTE_Total,TBL_INVOICES_VENTE.INVOICES_VENTE_Total_Arabic,TBL_INVOICES_VENTE.INVOICES_VENTE_Total_Quantite From TBL_INVOICES_VENTE, TBL_INVOICES_VENTE_DETAILS Where TBL_INVOICES_VENTE.INVOICES_VENTE_Code=@Pcode"
Dim cmd As New OleDbCommand(Sql, Conne_2020)
cmd.Parameters.AddWithValue("@Pcode", Facture_Code)
Ds.Clear()
Dim Da As New OleDbDataAdapter(cmd)
Da.Fill(Ds, "TBL_INVOICES_VENTE")
Da.Fill(Ds, "TBL_INVOICES_VENTE_DETAILS")
Dim Dt = Ds.Tables(0)
If Dt.Rows.Count = 0 Then
MessageBox.Show("لم يتم العثور على بيانات لعرضها في التّقرير", "طباعة التقرير", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Cursor.Current = Cursors.Default
Exit Sub
Else
AzizCrystal.SetDataSource(Ds)
Dim Frm As New FrmPrinting
Frm.CrystalReportViewer1.ReportSource = AzizCrystal
Frm.CrystalReportViewer1.Zoom(100%)
Frm.CrystalReportViewer1.Refresh()
Frm.ShowDialog()
End If
If Conne_2020.State = ConnectionState.Open Then Conne_2020.Close()
AzizCrystal.Close()
AzizCrystal.Dispose()
Catch ex As Exception
MessageBox.Show("خطأ غير متوقّع في عمليّة جلب البيانات", "طباعة التقرير")
End Try
End If
End Sub
RE: تساؤل حول الطباعة من خلال جدولين بقاعدة البيانات - عبد العزيز البسكري - 23-03-20
لا ما عندي أخي الكريم .. أصلا أول مرة أسمع به
بارك الله فيك على نية المساعدة
RE: تساؤل حول الطباعة من خلال جدولين بقاعدة البيانات - عبد العزيز البسكري - 23-03-20
السّلام عليكم و رحمة الله و بركاته
للأسف أخي الكريم
"خطأ غير متوقّع في عمليّة جلب البيانات"
الكود المستعمل رقم 1 :
كود :
Dim Facture_Code As String = Me.TextBox2.Text
If Me.TextBox2.Text = vbNullString Then
XtraMessageBox.Show("الرّجاء .. إختيار كود فاتورة المبيعات", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Else
Cursor.Current = Cursors.WaitCursor
Dim AzizCrystal 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\Crystal1.Rpt"
AzizCrystal.Load(MyReportPath)
With crConnectionInfo
.ServerName = Application.StartupPath & "\MARKETING.Mdb"
.DatabaseName = Application.StartupPath & "\MARKETING.Mdb"
.UserID = "Admin"
.Password = "AZERTY987654"
End With
CrTables = AzizCrystal.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 As New OleDb.OleDbDataAdapter("SELECT INVOICES_VENTE_Code,INVOICES_VENTE_Date,INVOICES_VENTE_Customers_Name,INVOICES_VENTE_Total,INVOICES_VENTE_Total_Arabic,INVOICES_VENTE_Total_Quantite,INVOICES_VENTE_DETAILS_Code,INVOICES_VENTE_DETAILS_Items_Code,INVOICES_VENTE_DETAILS_Items_Name,INVOICES_VENTE_DETAILS_Quantite,INVOICES_VENTE_DETAILS_Price,INVOICES_VENTE_DETAILS_Total From TBL_INVOICES_VENTE INNER JOIN TBL_INVOICES_VENTE_DETAILS ON INVOICES_VENTE_DETAILS_Code = INVOICES_VENTE_Code Where INVOICES_VENTE_Code = '" & Facture_Code & "'", Conne_2020)
Dim Ds As DataSet = New DataSet()
Adp.Fill(Ds, "TBL_INVOICES_VENTE")
Adp.Fill(Ds, "TBL_INVOICES_VENTE_DETAILS")
Dim Dt = Ds.Tables(0)
If Dt.Rows.Count = 0 Then
XtraMessageBox.Show("لم يتم العثور على بيانات لعرضها في التّقرير", "طباعة التقرير", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Cursor.Current = Cursors.Default
Exit Sub
Else
AzizCrystal.SetDataSource(Ds)
Dim Frm As New FrmPrinting
Frm.CrystalReportViewer1.ReportSource = AzizCrystal
Frm.CrystalReportViewer1.Zoom(100%)
Frm.CrystalReportViewer1.Refresh()
Frm.ShowDialog()
End If
If Conne_2020.State = ConnectionState.Open Then Conne_2020.Close()
AzizCrystal.Close()
AzizCrystal.Dispose()
Catch ex As Exception
XtraMessageBox.Show("خطأ غير متوقّع في عمليّة جلب البيانات", "طباعة التقرير")
End Try
End If
الكود المستعمل رقم 2 :
كود :
If Me.TextBox2.Text = vbNullString Then
XtraMessageBox.Show("الرّجاء .. إختيار كود فاتورة المبيعات", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Else
Cursor.Current = Cursors.WaitCursor
Dim AzizCrystal 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\Crystal1.Rpt"
AzizCrystal.Load(MyReportPath)
With crConnectionInfo
.ServerName = Application.StartupPath & "\MARKETING.Mdb"
.DatabaseName = Application.StartupPath & "\MARKETING.Mdb"
.UserID = "Admin"
.Password = "AZERTY987654"
End With
CrTables = AzizCrystal.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 Ds As DataSet = New DataSet()
Dim Facture_Code As String = Me.TextBox2.Text
If Conne_2020.State = ConnectionState.Closed Then
Conne_2020.Open()
End If
Dim Sql As String = "SELECT INVOICES_VENTE_Code,INVOICES_VENTE_Date,INVOICES_VENTE_Customers_Name,INVOICES_VENTE_Total,INVOICES_VENTE_Total_Arabic,INVOICES_VENTE_Total_Quantite,INVOICES_VENTE_DETAILS_Code,INVOICES_VENTE_DETAILS_Items_Code,INVOICES_VENTE_DETAILS_Items_Name,INVOICES_VENTE_DETAILS_Quantite,INVOICES_VENTE_DETAILS_Price,INVOICES_VENTE_DETAILS_Total From TBL_INVOICES_VENTE INNER JOIN TBL_INVOICES_VENTE_DETAILS ON INVOICES_VENTE_DETAILS_Code = INVOICES_VENTE_Code Where INVOICES_VENTE_Code = @Pcode"
Dim cmd As New OleDbCommand(Sql, Conne_2020)
cmd.Parameters.AddWithValue("@Pcode", Facture_Code)
Ds.Clear()
Dim Da As New OleDbDataAdapter(cmd)
Da.Fill(Ds, "TBL_INVOICES_VENTE")
Da.Fill(Ds, "TBL_INVOICES_VENTE_DETAILS")
Dim Dt = Ds.Tables(0)
If Dt.Rows.Count = 0 Then
XtraMessageBox.Show("لم يتم العثور على بيانات لعرضها في التّقرير", "طباعة التقرير", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Cursor.Current = Cursors.Default
Exit Sub
Else
AzizCrystal.SetDataSource(Ds)
Dim Frm As New FrmPrinting
Frm.CrystalReportViewer1.ReportSource = AzizCrystal
Frm.CrystalReportViewer1.Zoom(100%)
Frm.CrystalReportViewer1.Refresh()
Frm.ShowDialog()
End If
If Conne_2020.State = ConnectionState.Open Then Conne_2020.Close()
AzizCrystal.Close()
AzizCrystal.Dispose()
Catch ex As Exception
XtraMessageBox.Show("خطأ غير متوقّع في عمليّة جلب البيانات", "طباعة التقرير")
End Try
End If
سواء بالكود رقم 1 أو بالكود رقم 2 .. نفس رسالة الخطأ
تحياتي
RE: تساؤل حول الطباعة من خلال جدولين بقاعدة البيانات - عبد العزيز البسكري - 23-03-20
السّلام عليكم و رحمة الله و بركاته
عملت أخي الكريم مثال صغير بنفس المعلومات و بنفس المعطيات .. لتقريب الإشكالية
بارك الله فيك و لك مقدما و جزاك خير الجزاء إن شاء الله
تحياتي
RE: تساؤل حول الطباعة من خلال جدولين بقاعدة البيانات - عبد العزيز البسكري - 24-03-20
السّلام عليكم و رحمة الله و بركاته
تسلم أخي الكريم و سلم يمينك و دينك
مثال يشتغل تمام التمام و ما به أي خلل
لكن يا سيّدي الكريم .. فقط
أريد التعديل على المثال المرفق مثلما هو .. الله يبارك فيك .. طبعا لو كان بالإمكان عمل ذلك
لأنّه بصراحة لا أحب طريقة الداتاسيت Xsd
تحياتي واحتراماتي
RE: تساؤل حول الطباعة من خلال جدولين بقاعدة البيانات - عبد العزيز البسكري - 24-03-20
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك أخي الكريم و جزاك خير الجزاء و أحسن إليك مثلما أحسنت لي بهذه المتابعة الطيّبة .. عسى الله أن يزيدها بموازين حسناتك إن شاء الله
ما قصّرت صدقني .. و بكل أمانة
المشكلة أخي الكريم أنّك استعملت و أخذت البيانات من جدول واحد و ليس مثل ما هو موجود بقاعدة بياناتي المرفقة
بعد البحث وجدت أنّ الإشكالية لها العديد من التساؤلات و بكل المنتديات
وجدت الحل المؤقت لكنه لم يرقْ لي صراحة
فاتورة المبيعات من الأمور الحسّاسة و لا ينفع معها .. التحايل
الفورميلا .. طبعًا تتغيّر حسب حقل من الحقول الموجودة
هذا مع الكريستال ريبورت .. أكيد يوجد شيء ناقص بالأكواد رغم أنّي عملت View بال Sql Server و حوّلت الأكواد .. لكن لا حياة لمن تنادي
الحل المباشر بدون أي لف أو دوران .. بدون أي التباسات أو تعقيدات
وجدته مع تقارير الديف إكسبرس و الحمد لله
أو ربّما نجد الحل عند السادة أساتذتنا الأكارم إن شاء الله
تحياتي واحتراماتي
RE: تساؤل حول الطباعة من خلال جدولين بقاعدة البيانات - 351028 - 24-03-20
(24-03-20, 02:39 PM)عبد العزيز البسكري كتب : السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك أخي الكريم و جزاك خير الجزاء و أحسن إليك مثلما أحسنت لي بهذه المتابعة الطيّبة .. عسى الله أن يزيدها بموازين حسناتك إن شاء الله
ما قصّرت صدقني .. و بكل أمانة
المشكلة أخي الكريم أنّك استعملت و أخذت البيانات من جدول واحد و ليس مثل ما هو موجود بقاعدة بياناتي المرفقة
بعد البحث وجدت أنّ الإشكالية لها العديد من التساؤلات و بكل المنتديات
وجدت الحل المؤقت لكنه لم يرقْ لي صراحة
فاتورة المبيعات من الأمور الحسّاسة و لا ينفع معها .. التحايل
الفورميلا .. طبعًا تتغيّر حسب حقل من الحقول الموجودة
هذا مع الكريستال ريبورت .. أكيد يوجد شيء ناقص بالأكواد رغم أنّي عملت View بال Sql Server و حوّلت الأكواد .. لكن لا حياة لمن تنادي
الحل المباشر بدون أي لف أو دوران .. بدون أي التباسات أو تعقيدات
وجدته مع تقارير الديف إكسبرس و الحمد لله
أو ربّما نجد الحل عند السادة أساتذتنا الأكارم إن شاء الله
تحياتي واحتراماتي
PHP كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If Me.TextBox1.Text = vbNullString Then MessageBox.Show("الرّجاء .. إختيار كود فاتورة المبيعات", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Else Cursor.Current = Cursors.WaitCursor Dim AzizCrystal 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\Crystal1.Rpt" AzizCrystal.Load(MyReportPath) With crConnectionInfo .ServerName = Application.StartupPath & "\MARKETING.Mdb" .DatabaseName = Application.StartupPath & "\MARKETING.Mdb" .UserID = "Admin" .Password = "AZERTY987654" End With CrTables = AzizCrystal.Database.Tables For Each CrTable In CrTables crtableLogoninfo = CrTable.LogOnInfo crtableLogoninfo.ConnectionInfo = crConnectionInfo CrTable.ApplyLogOnInfo(crtableLogoninfo) Next
Dim Ds As New DataSet Dim Facture_Code As String = Me.TextBox1.Text
Dim sqlINVOICES_VENTE As String = "SELECT INVOICES_VENTE_Code,INVOICES_VENTE_Date,INVOICES_VENTE_Customers_Name,INVOICES_VENTE_Total,INVOICES_VENTE_Total_Arabic,INVOICES_VENTE_Total_Quantite From TBL_INVOICES_VENTE Where INVOICES_VENTE_Code = @Pcode" Dim Da_INVOICES_VENTE As New OleDbDataAdapter(sqlINVOICES_VENTE, Conne_2020) Da_INVOICES_VENTE.SelectCommand.Parameters.AddWithValue("@Pcode", Facture_Code) Da_INVOICES_VENTE.Fill(Ds, "TBL_INVOICES_VENTE")
Dim sqlINVOICES_VENTE_DETAILS As String = "SELECT INVOICES_VENTE_DETAILS_Code,INVOICES_VENTE_DETAILS_Items_Code,INVOICES_VENTE_DETAILS_Items_Name,INVOICES_VENTE_DETAILS_Quantite,INVOICES_VENTE_DETAILS_Price,INVOICES_VENTE_DETAILS_Total From TBL_INVOICES_VENTE_DETAILS Where INVOICES_VENTE_DETAILS_Code = @Pcode" Dim Da_INVOICES_VENTE_DETAILS As New OleDbDataAdapter(sqlINVOICES_VENTE_DETAILS, Conne_2020) Da_INVOICES_VENTE_DETAILS.SelectCommand.Parameters.AddWithValue("@Pcode", Facture_Code) Da_INVOICES_VENTE_DETAILS.Fill(Ds, "TBL_INVOICES_VENTE_DETAILS")
If Ds.Tables(0).Rows.Count = 0 Then MessageBox.Show("لم يتم العثور على بيانات لعرضها في التّقرير", "طباعة التقرير", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Cursor.Current = Cursors.Default Exit Sub Else AzizCrystal.SetDataSource(Ds) Dim Frm As New FrmPrinting Frm.CrystalReportViewer1.ReportSource = AzizCrystal Frm.CrystalReportViewer1.Zoom(100%) Frm.CrystalReportViewer1.Refresh() Frm.ShowDialog() End If AzizCrystal.Close() AzizCrystal.Dispose() Catch ex As Exception 'MessageBox.Show("خطأ غير متوقّع في عمليّة جلب البيانات", "طباعة التقرير") MessageBox.Show(ex.Message, "طباعة التقرير") End Try End If
End Sub
RE: تساؤل حول الطباعة من خلال جدولين بقاعدة البيانات - عبد العزيز البسكري - 24-03-20
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك و جزاك خير الجزاء و زادك من علمه و فضله و نفع بك الاسلام و المسلمين
الآن كلّه شغّال 10 على عشرة .. و هذا ما كنت أبحث عنه بتمامه و كماله
تحياتي و تقييماتي
|