ورود

View Full Version : گزارش گیری از دو جدول مرتبط .



hossein2007
شنبه 05 خرداد 1386, 19:18 عصر
سلام
من با استفاده از مطالب دیگر تاپیک ها فهمیدم که چطور می شه یک شی دیتاست (با add new item) به برنامه ام اضافه کنم .بعد روی دیتاست کلیک کردم و چند جدول (با data table) توی اون قرار دادم .
بعد یک شی کریستال ریپورت به برنامه اضافه کردم و ازا database expert و project data و ado.net dataset رو انتخاب کردم.
بعد یک جدول رو اضافه کردم و تونستم با کد هایی که در crystal report viewer نوشتم (از قبیل connection string و query دلخواهم ) اطلاعات را در کریستال ریپورت ببینم .

اما مشکل انجا است که اگر اطلاعات دو جدول با فیلد مشترک ( که در یکی کلید اصلی و در دیگری کلید خارجی است) را بخواهیم نمایش دهیم این کار امکان پذیر نیست .
به عبارت بهتر اگه تمام فیلد های جدول sale رو بخواهیم نامیش میده ولی اگه فیلد name از جدول stuff رو اضافه کنیم هیچ رکوردی نمایش داده نمی شه.
واقعا مشکل عجیبیه.اگه ممکنه راهنمایی کنید.
با تشکر.


Dim Con As New OleDbConnection("provider = microsoft.jet.oledb.4.0;data source =" & path & "\bargh.mdb;Jet OLEDB:Database Password=abc")
Con.Open()
Dim oleAdapter1 As OleDbDataAdapter
Dim ds As New DataSet
Dim cr As New CrystalReport4

Dim str As String

str = "select stuff.name,sale.code,sale.sale_fac,sale.buyer_name ,sale.sale_day,sale.sale_month,sale.sale_year,sale .sale_number,sale.sale_price,sale.description from sale,stuff where sale.code = stuff.code"
oleAdapter1 = New OleDbDataAdapter(str, Con)
oleAdapter1.Fill(ds, "sale")
cr.SetDataSource(ds)
CrystalReportViewer1.ReportSource = cr

sm
دوشنبه 07 خرداد 1386, 08:19 صبح
توی کوئریتون عمدا از ضرب استفاده کردید؟ چرا از join استفاده نشده است؟
امتحان نکردم، شاید مشکل از همین باشه... با Join امتحان کنید.

موفق باشید

hossein2007
دوشنبه 07 خرداد 1386, 18:05 عصر
از راهنماییت ممنون.
اما مشکل رو پیدا کردم . من بایست تمام جداول رو توی دیتاست می گذاشتم.به صورت زیر:


oleAdapter1.Fill(ds, "sale")
oleAdapter1.Fill(ds, "stuff")
بازم تشکر می کنم.

hossein2007
دوشنبه 07 خرداد 1386, 21:15 عصر
فقط یه مشکل برای ایجاد relation بین اونها وجود داره.
من این کدها رو نوشتم:

oleAdapter1.Fill(ds, "sale")
oleAdapter1.Fill(ds, "stuff")

ds.Relations.Add("newrel", ds.Tables("sale").Columns("code"), ds.Tables("stuff").Columns("code"))و این error رو میده:

These columns don't currently have unique values.

فیلدهای جدول stuff

code
...(کلید جدول، code است.)


فیلدهای جدول sale

sale_fac
code
...(کلید جدول، sale_fac و code است.)

واقعا دچار مشکل شدم!!!! باید چکار کنم؟

sm
سه شنبه 08 خرداد 1386, 09:43 صبح
چه نیازی هست که توی برنامه Relationها رو مشخص کنین؟
این پیغام هم بخاطر اینه که توی جدول اصلی تون مقدار تکراری دارید... حتما باید کلید اصلی باشه

موفق باشید