join سه جدول با دستورات سی شارپ و نمایش اطلاعات در دیتا گریدویو
با سلام
ما دستور join رو در SQL می نویسیم و جواب می گیریم، اما تو برنامه که داریم با سی شارپ کار میکنیم، نمی دونیم این دستور رو چطور به کار ببریم.
البته برنامه ما با دستورات LINQ نوشته شده.
ما می خوایم اطلاعات join شده رو هم در دیتاگریدویو نمایش بده.
لطفا راهنمایی بفرمایید
14 پاسخ
این کدی که تو تصویر هست با استفاده از راهنمایی شماست.
ما جداول رو در dataclass و dataset هم تنظیم کردیم.
بازهم جداول رو نمی شناسه
باسلام
ممنونم آقای عادلی
ما داخل dataset رو چک کردیم و همه جداولی که لازم بود رو گذاشتیم و دستور join رو همونطور که در تصویر میبینید نوشتیم، تو تابع.
فکر کنم دستور نشون دادن در دیتاگریدویو مشکل داره، چون تو دیتاگریدویو نمایش نمیده!
باید چیزی رو به دیتاگرید bind کنیم؟
یا باید datatable بسازیم؟
لطفا راهنمایی کنید.
با سپاس فراوان
شما این تصویرو ببینید. مشکل ما کجاست که نام جداول رو نمی شناسه؟
ممنون
باتشکر از راهنماییتون
ما تو نرم افزار فروشگاهیمون میخوایم یه کد کالا داشته باشیم که نمایانگر شماره انبار و شماره مجموعه کالا باشه.
مثلا اگه شماره انبارپوشاک 1000 باشه و سه مجموعه مردانه و زنانه و بچگانه داشته باشه واز مجموعه پیراهن مردانه اولین کالای ثبت شده پیراهن مردانه XL باشه، میخوایم کد کالا مثلا 100011 باشه.یعنی از انبار پوشاک،مجموعه مردانه و پیراهن مردانه XL هست.
حالا برای تولید این کد از چه الگوریتمی استفاده کنیم؟
کد شما تقریبا درست هست فقط اسم جداول به شکل گفته شده آورده نخواهد شد و شما باید از آداپتر مربوط به هر جدول استفاده کنید یعنی به جای این که مثلا بنویسید new kalasباید بنویسید
new hopeDatasetTableAdapters.KalasTableAdapter().GetData()
برای بقیه جدول ها هم باید این کار را بکنید
سلام به شما دوست عزیز
به روش زیر عمل کنید.
var list = (from m in new table1
join f in new table2 on m.Id equals f.FId
join d in new table3 on f.DId equals d.ID
where d.rank == 1 && m.FactorId == 32
select
new
{
d.ID,
d.name,
m.Price,
f.DateInsert,
Rid = f.Id
}).Distinct()
.ToList();
دوست عزیز مشکلی که کد شما داره اینه که یه تکست به عنوان کوئری نوشتید و می خواهید که اون رو به داخل گرید بدید این کار اشتباهه. شما توی اول سوال گفتید که می خواهید از linq استفاده کنید.
اما الان کوئری نوشتید و می خواهید مستقیم به دیتابیس کوئری بزنید. اگر قصد دارید که از linq استفاده کنید به همون روشی که گفتم کار می کنه. ولی اگر قصد دارید به روش دوم کار کنید باید به صورت Ado به دیتابیس کانکشن بزندی و یک dataTable پر کنید و بعد از اون از دیتاتیبل برای گرید استفاده کنید.
شما این تصویرو ببینید. مشکل ما کجاست که نام جداول رو نمی شناسه؟
ممنون
خیلی خیلی ممنون
درست شد
ما از روشی که با linq فرمودید استفاده کردیم، dataset رو هم درست کردیم، اما باز هم نام جداول رو نمیشناسه.
واسه همین از کوئری استفاده کردیم
لطفا این سوال را در یک تاپیک جدید بپرسید تا اگر مشکل برای دیگران نیز وجود دارد نیز حل شود.
سلام آقای عادلی
شما لطف کردین و کد مربوط به join سه جدول رو گذاشتین، حالا باید این کد رو در تابع بنویسیم؟
اگه بخوایم حاصل join سه جدول رو در دیتاگریدویو نمایش بدیم چه دستوری باید به کار ببریم؟
ممنون از راهنماییتون
این که توی تابع بنویسید یا نه بستگی به ساختار برنامه شما داره و یه چیز اختیاریه
ولی برای این که توی دیتاگرید نشون بدید کد زیر رو بنویسید
datagrid.DataSource=list;
دقت کنید که حاصل join توی یه متغیر به نام list قرار داده شده.
شما فایل .xsd خودتون رو باز کنید ببینید این جدول ها رو داخل اون دارید یا خیر. اگر ندارید به اون اضافه کنید