منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ (/showthread.php?tid=17623)



Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ - newvbdev - 11-10-16

السلام عليكم ورحمة الله وبركاته

تحية طيبة إليكم..،

سؤالى بسيط وهو كيف أقوم بعرض حقل من جدول آخر فى الكريستال ريبورت
مثال: الجدولين التاليين:

MOVEMENTS
ID
Product_ID
Quantity
Price

PRODUCTS
ID
Name

وما أود عرضه هو:
Movement.ID / Product.Name / Quantity / Price

كود :
   Private Sub CrystalReport_Viewer_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim cmd1 As New SqlCommand("SELECT Movements.*, Products.* FROM Movements LEFT OUTER JOIN Products ON Movements.ProductID = Products.ID", sqlconnstring)
       adapter.SelectCommand = cmd1
       adapter.Fill(ds, "Table1")

       Dim objRpt As New CrystalReport_Invoice
       objRpt.SetDataSource(ds.Tables("Table1"))
       CrystalReportViewer1.ReportSource = objRpt
       CrystalReportViewer1.Refresh()
   End Sub


رغم عمل Linked بشاشة Database Expert وضبط Link Options لتكون LEFT OUTER JOIN + Enforce Both
ولكن Product.Name يظهر فارغاً وباقى البيانات سليمة !!!!!


مع خالص إمتنانى فى مساعدتى لحل هذه المشكلة


RE: Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ - ممدوح - 11-10-16

وعليكم السلام ورحمة الله وبركاته

إذا كان الاسم Product_ID صحيحا فغريب أن يعمل الاستعلام من الأساس
لأنه في الكود ذكرت ان اسمه ProductID

جرب هذا التعديل على أساس أن الاسم الصحيح Product_ID
كود :
   Private Sub CrystalReport_Viewer_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim da As New SqlDataAdapter("SELECT Products.*, Movements.* FROM Movements LEFT OUTER JOIN Products ON Movements.Product_ID = Products.ID", sqlconnstring)
       Dim dt As New DataTable
       da.Fill(dt)

       Dim objRpt As New CrystalReport_Invoice
       objRpt.SetDataSource(dt)
       CrystalReportViewer1.ReportSource = objRpt
       CrystalReportViewer1.Refresh()
   End Sub

أيضا تأكد من صحة تصميم التقرير فقد تكون المشكلة فيه


RE: Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ - newvbdev - 11-10-16

شكراً جزيلاً لرد حضرتك, وأنا كنت كاتب مثال فقط بدلاً من نقل كل المدخلات اللى عندى
أنا عملت مثال صحيح دلوقتى بكود مطابق:
كود :
Imports System.Data
Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Public Class Form1
   Dim ds As New DataSet
   Dim adapter As New SqlDataAdapter

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
       Dim sqlconnstring As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & Application.StartupPath & "\114a.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
       sqlconnstring.Open()

       Dim cmd1 As New SqlCommand("SELECT Movements.ID, Movements.Product_ID, Movements.Quantity, Movements.Price, Products.ID, Products.Name FROM Movements LEFT OUTER JOIN Products ON Movements.Product_ID = Products.ID", sqlconnstring)
        
        adapter.SelectCommand = cmd1
       adapter.Fill(ds, "Table1")

       Dim objRpt As New CrystalReport1
       objRpt.SetDataSource(ds.Tables("Table1"))
       CrystalReportViewer1.ReportSource = objRpt
       CrystalReportViewer1.Refresh()
   End Sub
End Class

المرفقات بها صورة توضح التفاصيل الكاملة


RE: Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ - ممدوح - 12-10-16

أهلا بك

إذا المشكلة في طريقة الربط في التقرير

ممكن ترفق ملف التقرير
وإن أمكن نسخة من ملف قاعدة البيانات mdf ان لم يكن فيها ما يمنع

وتحل إن شاء الله


RE: Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ - newvbdev - 12-10-16

شكراً أستاذ ممدوح

أرفقت مجلد المشروع كاملاً (وهو مثال للربط) وبه قاعدة البيانات وملف الكريستال


RE: Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ - ممدوح - 12-10-16

لم أتعامل مع الكريستال ريبورت بجدولين ولكن هذا ما توصلت له

تم تعديل خصائص الأعمدة خصوصا ID
تم عمل View1 في قاعدة البيانات
ثم أضفتها للداتاسيت التي في المشروع _114aDataSet.xsd
ثم ربطت View1 بتقرير الكريستال ريبورت CrystalReport عن طريق Database Expert

قاعدة البيانات والتقرير المعدله في المرفقات




RE: Crystal Reports: كيف يتم ربط حقل من جدول آخر؟ - newvbdev - 12-10-16

أنا عاجز عن الشكر حضرتك
القاعدة والكريستال اللى بعتهم نسخ أحدث فلم يعملوا معى، ولكن أنا اتبعت الخطوات اللى إنت كتبتها والكود يعمل الآن بكفاءة

ولكن أكيد Linked فى Database Epert ليها طريقة أيضاً وخصوصاً إن فيها عناصر Join كاملة


شكراً جزيلاً أستاذ ممدوح Shy