PDA

View Full Version : سوال: استفاده از Biniding Source برای نوشتن برنامه ای با چند ارتباط یک به چند



jafarpalideh
یک شنبه 20 تیر 1395, 10:10 صبح
با سلام به همه ی دوستان .
بنده میخوام با استفاده از Bining Source و دیاگرامی که در زیر میزارمش فرمهام رو بنویسم .

141354

حالا چندتا سوال ؟
1 - آیا طراحی من درسته ؟ چون من یه جدول رنگ دارم که توش رنگهام رو تعریف میکنم . و یه جدول مشتری دارم که مشتریهام رو تعریف میکنم . و یه جدول ظرف دارم که امکان داره توش از 6 تا از اون رنگها و آی دی مشتری استفاده کنم
2 - چطور میتونم با استفاده از بایندینگ سورس برنامه رو بنویسم .

Mahmoud.Afrad
دوشنبه 21 تیر 1395, 08:07 صبح
چند ارتباط یک به چند بین دو جدول معنی نداره. همون ارتباط یک به چند هست.
در فرض سوال، شما به یک جدول ظرف نیاز دارید که در اینصورت جدول ظرف با جدول رنگ رابطه یک به چند داره که نیاز به جدول واسطه هست.
در صورتی هم که هر مشتری میتونه چند ظرف رو خریداری کنه که همینطور هم هست، پس جدول مشتری با جدول ظرف یک رابطه یک به چند داره. برای این رابطه نیاز به یک موجودیت واسط(جدول فاکتور) دارید، البته برای هدر فاکتور و اقلام فاکتور هر کدام یک جدول مجزا نیاز دارید.

jafarpalideh
دوشنبه 21 تیر 1395, 12:51 عصر
با سلام .


جدول ظرف با جدول رنگ رابطه یک به چند داره
منظورتون اینه که جدول رنگ با جدول ظرف رابطه یک به چند داره ؟درسته ؟


هر مشتری میتونه چند ظرف رو خریداری کنه که همینطور هم هست
نه اینطور نیست . هر ظرف دقیقا واسه یه مشتریه .

از اینها که بگذریم میشه با خواسته های من یه روش اصولی و درست رو به من نشون بدید که بتونم با Binding Source کارم رو راحت پیش ببرم .

jafarpalideh
دوشنبه 21 تیر 1395, 15:22 عصر
بنده واسه استفاده از Binding Source هصلا مشکلی ندارم . ولی فقط این مورد 6 تا رنگ تویه یه جدول دیگه و اینکه اون رنگ فقط یکبار تعریف میشه مشکل دارم .
اگه دوستان طراحی اصولی رو بگن بنده کارم راه میفته .
فقط با این فرض که از اون 6 تا رنگ امکان داره فقط 3 تا رنگ اسفاده بشه و الباقیش خالی بمونه و اینکه هر مظروف دقیقا واسه یه مشتری هستش .
منتظر راهنماییهای دوستان هستم .

Mahmoud.Afrad
دوشنبه 21 تیر 1395, 16:51 عصر
جدول tblmazrof باید یک ستون برای کلید رنگ داشته باشه. یک جدول واسط نیاز دارید برای ذخیره اینکه هر ظرف چه رنگ هایی داره.

مشخص کنید چه ویژگی هایی از موجودیت باید ذخیره بشن. در صورتی که اون ویژگی یک حالت بیشتر نداشت در جدول موجودیت یک ستون باید ایجاد بشه برای اون ویژگی. اگر تعداد بیشتر از یک حالت برای اون ویژگی ممکن باشه، در اینصورت یک جدول واسط نیاز دارید.

یک توضیح بدید چه موجودیتهایی دارید و قراره چه چیزهایی ذخیره بشن.

jafarpalideh
دوشنبه 21 تیر 1395, 17:10 عصر
چیزی که من لازم دارم دقیقا مثل دیاگرام بالاس .
1 - یه جدول رنگ دارم که انواع رنگهام رو توش تعریف میکنم . (کد رنگ - نام رنگ)
2 - یه جدول مشتری دارم که مشتریهام رو توش تعریف میکنم .(کد مشتری - نام مشتری )
3 - یه جدول ظرف دارم که یک مظروف دقیقا مختص یک مشتری هست و اون ظرف امکان داره بین یک تا شش رنگ رو بگیره .(کد ظرف - نام ظرف - کد مشتری - رنگها)

reza_ali202000
سه شنبه 22 تیر 1395, 00:42 صبح
سلام دوست عزیز
نحوه طراحیتون باید به این شکل باشه که: هر ظرف میتونه از یک تا چند رنگ تشکیل شده باشه. پس باید ظرف با زیر مجموعه هاش دو جدول مجزا در نظر گرفته بشه.
وقتی این مشکل حل شد و دیتابیستون استاندارد شد اونموقع برید سراغ مرحله بعد.
مرحله بعد با یه درگ کردن به راحتی قابل حله(البته اگه بخواید از طریق ویزاردی پیش برید).
141396

jafarpalideh
سه شنبه 22 تیر 1395, 12:46 عصر
با تشکر از دوست خوبم reza_ali202000 (http://barnamenevis.org/member.php?62953-reza_ali202000)
بنده طبق گفته ی شما طراحی دیتابیس رو عوض کردم .

141415
بنده واسه وارد کردن مشتری و رنگ و مظروف مشکلی ندارم ولی دوتا مشکل دارم .

1- چطور میتونم 6 تا کمبوباکس ویزاردی تویه فرم بزارم و توسط Binding Source یکجا با توجه به نوع ظرف یک یا دو یا .... شش تا رنگ رو بفرستم تویه جدول TblMazroofFoot ?
2- کوئری که من میزنم اینطور جواب میده :


چطور میتونم کوئری بزنم که فقط نام مظروف و نام مشتری و تمامیه رنگهارو تویه یک سطر بیاره ؟

jafarpalideh
سه شنبه 22 تیر 1395, 12:59 عصر
پست بالا عکس مورد 2 آپلودنشد که اینجا میزارم .

reza_ali202000
سه شنبه 22 تیر 1395, 13:15 عصر
با تشکر از دوست خوبم reza_ali202000 (http://barnamenevis.org/member.php?62953-reza_ali202000)
بنده طبق گفته ی شما طراحی دیتابیس رو عوض کردم .

141415
بنده واسه وارد کردن مشتری و رنگ و مظروف مشکلی ندارم ولی دوتا مشکل دارم .

1- چطور میتونم 6 تا کمبوباکس ویزاردی تویه فرم بزارم و توسط Binding Source یکجا با توجه به نوع ظرف یک یا دو یا .... شش تا رنگ رو بفرستم تویه جدول TblMazroofFoot ?
2- کوئری که من میزنم اینطور جواب میده :


چطور میتونم کوئری بزنم که فقط نام مظروف و نام مشتری و تمامیه رنگهارو تویه یک سطر بیاره ؟

فرم طراحی تون تقریبا به این شکل میشه:
141421

واسه ثبت اشخاص و رنگ که فکر نمیکنم مشکلی داشته باشید.
برا ثبت ظرف هم میتونید از دیتاگرید ویو کمک بگیرید. حالا با اضاف کردن رنگ میتونید رنگها رو اضاف کنید. (بعد میتونید روی ظاهرش کار کنید و قشنگش کنیید).

برا اینکه بتونید توی یه سطر تمام رنگها رو بیارید از دستور pivot در sql میتونید استفاده کنید. ولی پیشنهاد میکنم به صورت فاکتوری که لیستی هست نمایش بدید.

jafarpalideh
سه شنبه 22 تیر 1395, 13:53 عصر
واسه ثبت ظرف هم مشکلی ندارم . ولی اون رنگهای ظرف یکم من رو گیج کرده . میتونی بیشتر توضیح بدی ؟

و اینکه Pivot کوئری زیر چطوری میشه ؟



SELECT dbo.TblCustomer.CustomerName, dbo.TblMazrofHed.MazrofName, dbo.TblColor.ColorName
FROM dbo.TblColor INNER JOIN
dbo.TblMazrofFoot ON dbo.TblColor.ColorId = dbo.TblMazrofFoot.ColorId INNER JOIN
dbo.TblMazrofHed ON dbo.TblMazrofFoot.MazrofId = dbo.TblMazrofHed.MazrofId INNER JOIN
dbo.TblCustomer ON dbo.TblMazrofHed.CustomerId = dbo.TblCustomer.CustomerId