تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] Crystal Reports: كيف يتم ربط حقل من جدول آخر؟
#1
Question 
السلام عليكم ورحمة الله وبركاته

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

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

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 يظهر فارغاً وباقى البيانات سليمة !!!!!


مع خالص إمتنانى فى مساعدتى لحل هذه المشكلة
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

إذا كان الاسم 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

أيضا تأكد من صحة تصميم التقرير فقد تكون المشكلة فيه
الرد }}}
تم الشكر بواسطة:
#3
شكراً جزيلاً لرد حضرتك, وأنا كنت كاتب مثال فقط بدلاً من نقل كل المدخلات اللى عندى
أنا عملت مثال صحيح دلوقتى بكود مطابق:
كود :
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

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


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#4
أهلا بك

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

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

وتحل إن شاء الله
الرد }}}
تم الشكر بواسطة:
#5
شكراً أستاذ ممدوح

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


الملفات المرفقة
.rar   Crystal_Reports_JOIN.rar (الحجم : 314.91 ك ب / التحميلات : 89)
الرد }}}
تم الشكر بواسطة:
#6
لم أتعامل مع الكريستال ريبورت بجدولين ولكن هذا ما توصلت له

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

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



الملفات المرفقة
.rar   Crystal_Reports.rar (الحجم : 116.87 ك ب / التحميلات : 85)
الرد }}}
تم الشكر بواسطة:
#7
Thumbs Up 
أنا عاجز عن الشكر حضرتك
القاعدة والكريستال اللى بعتهم نسخ أحدث فلم يعملوا معى، ولكن أنا اتبعت الخطوات اللى إنت كتبتها والكود يعمل الآن بكفاءة

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


شكراً جزيلاً أستاذ ممدوح Shy
الرد }}}
تم الشكر بواسطة:



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


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