PDA

View Full Version : ارسال دو جدول همزمان به گزارش



mahsa.admin
سه شنبه 22 فروردین 1391, 00:32 صبح
با سلام خدمت دوستان
من دوتا تاپیک مشابه این تاپیک دیدم ولی متاسفانه مشکل من حل نشد از دوستان خوهاش میکنم بندرو راهنمایی کنند
من دوتا جدول دارم که اطلاعات انها با هم فرق دارن و کلید مشترک هم ندارن
از طرفی امکان ایجاد یک کورئری و اتصال کلید اصلی ونهایتا تبدیل ان به یک جدول هم ندارم
حالا چگونه این دوتا جدول به گزارش پاس بدم به طوری که داخل گزارش اطلاعات هردوتا جدول همزمان داشته باشم یعنی اطلاعات درجای خودش بشیند
من از این روش استفاده کردم ولی در هر بار یکی از جدوال به داخل گزارش پاس داده میشود




Public Function sql()
Dim ad As New SqlClient.SqlDataAdapter("select * from f", cnnstring)
Dim dt As New DataTable
ad.Fill(dt)
Dim ad1 As New SqlClient.SqlDataAdapter("select * from h", cnnstring)
Dim dt1 As New DataTable
ad1.Fill(dt1)
Return???????

End Function
حالا این فانکشن به گزارش پاس میدم جای علامت ؟؟؟ چه چیری باید باشد که هردوتا جدول وداشته باشم
ایا راه حل دیگری دارد

moory1364
سه شنبه 22 فروردین 1391, 01:30 صبح
شما از Relationships استفاده کردید درسته ؟
بس بهتر هستش ی viwes برای 2 تا جدولت استفاده کنی از اون استفاده کنی هیچ مشکلی نداری اینجوری منم همچین مشکلی داشتم

http://up.vbiran.ir/images/yzhw49irkunlxq3vnid.jpg (http://up.vbiran.ir/)

hamed68
سه شنبه 22 فروردین 1391, 02:05 صبح
سلام دوست عزیز


جداول شما نرمال سازی نشده که این مشکل پیش اومده پیشنهاد میکنم قبل از ادامه کار حتما اینکار انجام بدید.





Dim da As New SqlDataAdapter("select *from f,h", "Data Source=HAMED-PC\SQLEXPRESS;Initial Catalog=Dana85177000;Integrated Security=True")
Dim dt As New DataTable
da.Fill(dt)
return dt

mahsa.admin
سه شنبه 22 فروردین 1391, 07:49 صبح
با تشکر از شما
Dim ad AsNew SqlClient.SqlDataAdapter("select * from f,h", cnnstring)
Dim dt AsNew DataTable
ad.Fill(dt)
Return dt
این حالت اطلاعا دوتا جدول به ریپورت میبرد ولی مشکل اینجاست مثل کوئری عمل میکند یعنی مثلا اگر ستا ردیف در جدول اف داشته باشم وسه تا سطر در جدول اچ در گزارش 9 تا سطر میاید مثل شکل زیر
در حالی که من مد نظرم فقط سه سطر برای یک جدول و سه سطر دیگر برای جدول دیگر هست

hamed68
سه شنبه 22 فروردین 1391, 10:33 صبح
دوست گلم لیست فیلدهای 2 جدول بنویسید که بهتر بتونم راهنمایی کنم.

SELECT * FROM h inner join f GROUP BY name

دستور بالا براساس name رکورد ها را گروه بندی میکنه و رکورد های تکراری حذف میشه و یا میتونید

SELECT DISTINCT name FROM h inner join f

این دستور باعث میشه سطر های منحصر به فرد فیلد name نمایش داده بشه

فرید نجفلو
سه شنبه 22 فروردین 1391, 11:33 صبح
دوست عزیز اگه در قسمت طراحی گزارش شما دو تا جدول دارید یعنی دو جدول f و h و با اونه طراحی کرید می تونید باز دو جدول رو جداگانه به گزارش بفرستید:

Public Function sql() As Dataset
Dim ad As New SqlClient.SqlDataAdapter("select * from f", cnnstring)
Dim ds As New Dataset
ad.Fill(ds,"f")
Dim ad1 As New SqlClient.SqlDataAdapter("select * from h", cnnstring)
ad1.Fill(ds,"h")
Return dt
End Function

mahsa.admin
سه شنبه 22 فروردین 1391, 13:34 عصر
با تشکر از شما
اقا فرید من کد شما رو با حذف dt استفاده کرد به شکل زیر ولی هیچ اطلاعاتی رو نمایش نمیده
Public Function sql() As DataSet
Dim ad As New SqlClient.SqlDataAdapter("select * from f", cnnstring)
Dim ds As New DataSet
ad.Fill(ds, "f")
Dim ad1 As New SqlClient.SqlDataAdapter("select * from h", cnnstring)
ad1.Fill(ds, "h")
Return ds
End Function

Hybrid
سه شنبه 22 فروردین 1391, 13:38 عصر
سلام ، شما اسم جدول ها رو تغییر دادین ؟؟؟

اون f و h اسم جدول های فرضی هستند شما اونا رو به اسم جداول اصلی خودتون تغییر بدین.

mahsa.admin
سه شنبه 22 فروردین 1391, 14:17 عصر
بله این که از بدیهیات هست بله این کارو کردم
به نظر شما
Dim ds1 As New DataSet
نباید تعریف کنم
انوقت
Return چی میشه

Hybrid
سه شنبه 22 فروردین 1391, 14:50 عصر
بله این که از بدیهیات هست بله این کارو کردم
به نظر شما
Dim ds1 AsNew DataSet
نباید تعریف کنم
انوقت
Return چی میشه


داخل Solution Explorer اسم dataset تون چیه ؟ باید اسم اون dataset رو به جای این dataset قرار بدین ، مثلا اگه اسم dataset داخل برنامتون ssDataset هست باید اینجوری بنویسید :

dim ds1 as new ssdataset