ورود

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



MY DEAR DELPHI
دوشنبه 03 خرداد 1389, 21:05 عصر
سلام و خسته نباشید
برنامه ای که من الان دارم روش کار می کنم یک برنامه تعمیراتی برای یک اداره ای است . قسمتی از طراحی جدول های مربوط به این قسمت رو به این گونه طراحی کردم که : 1- جدولی شامل اطلاعات گروه تعمیرات(اطلاعات پرسنلی)
2- جدولی شامل اطلاعات سوابق تعمیراتی دستگاهها
3- جدولی هم که می شه گفت نقش رابط رو بازی می کنه به ازای هر تعمیرکاری که در اون کار نقش داشته رکوردی با مقدارهای : ID کار انجام شده و ID شخص تعمیرکار ثبت می شه .

الان در موقع گزارشگیری می خوام به این صورت گزارش بگیرم
.... شرح تعمیر انجام شده ... ..... .... مشخصات تعمیرکار

لطف کنید راهنمایی کنید چطور می شه نام همه اون تعمیرکارها رو که در رکوردهای مجزا ID اونها ثبت شده در یک ردیف به ازای اون کارآورد

حسین شهریاری
دوشنبه 03 خرداد 1389, 23:23 عصر
سلام

شما باید جدول واسط را با دو جدول دیگه Join کنین،اینطوری:


select Tsharh,PerName from Brtable INNER JOIN Personel On
(Brtable.PerID=Personel.PerID) INNER JOIN Tamerat On(Brtable.TamID=Tamerat.TamID)

با فرض اینکه Personel نقش جدول اطلاعات پرسنلی و Tamerat نقش جدول سوابق تعمیراتی و Brtable هم نقش جدول واسط را دارت باشد.
اگه بازم مشکلی بود دقیقا نام جداول بهمراه نام فیلدها را ذکر کنید تا بهتر بتونم کمکتون کنم.

موفق باشید

MY DEAR DELPHI
پنج شنبه 06 خرداد 1389, 20:14 عصر
جدول کارمندها بنام : EmployeeDetails هست و در یک جدول بنام JobSchedular سوابق تعمیراتی دستگاهها ذخیره می شود . جدولی که گفتم حالت رابط رو بازی می کنه دارای فیلدهای EmpID و JobSchedularID هست با این معنی که در این رکورد به ازای هر نفر که در یک کاری شرکت داشتند ID اون تعمیرکار به همراه ID اون کار در جدول BrokerJobSchedular ثبت
می شه.
اگه بخوام به ازای یک نفر گزارشگیری کنم خوب با Inner Join مشکلی ندارم ولی اگه بخوام بر اساس کار گزارش بگیرم باید نام همه تعمیرکارها به دنبال اون کار بیاد که تو این قسمتش مشکل دارم چون با Inner Join به ازای هر تعمیرکار اون کار را تکرار می کند .
امیدوارم تونسته باشم مشکلم را توضیح داده باشم

mehdimdp
پنج شنبه 06 خرداد 1389, 22:57 عصر
اگه بتونید یک نمونه از فایل جداولتون بذارین خیلی راحت تر میشه کمکتون کرد

MY DEAR DELPHI
چهارشنبه 12 خرداد 1389, 16:34 عصر
اگه بتونید یک نمونه از فایل جداولتون بذارین خیلی راحت تر میشه کمکتون کرد
ببینید دوستان نمی دونم کجای سوالم مبهم . الان کار برنامم فقط در این قسمتش مشکل داره .
خواهش می کنم کمک کنید تا این مشکل حل بشه

mehdimdp
چهارشنبه 12 خرداد 1389, 17:58 عصر
اگه بخوام به ازای یک نفر گزارشگیری کنم خوب با Inner Join مشکلی ندارم ولی اگه بخوام بر اساس کار گزارش بگیرم باید نام همه تعمیرکارها به دنبال اون کار بیاد که تو این قسمتش مشکل دارم چون با Inner Join به ازای هر تعمیرکار اون کار را تکرار می کند .
امیدوارم تونسته باشم مشکلم را توضیح داده باشم

کاملا ناواضح هست. حداقل برای من که نتونستم مشکل را بفهمم.

MY DEAR DELPHI
چهارشنبه 12 خرداد 1389, 18:22 عصر
کاملا ناواضح هست. حداقل برای من که نتونستم مشکل را بفهمم.

فرض کنید کاری با عنوان تعمیر دریچه توسط حسن و حسین انجام شده است . برنامه به این صورت اطلاعات رو ثبت می کند که ابتدا آن کار را در جدول JobSchedular ثبت می کند مثلا کلید اون کار 5 است . EmpID یا همان کلید پرسنل حسن هم 10 و حسین 12 می باشد . برنامه در جدول BrokerJobSchedular که هر رکورد آن دارای دو فیلد با عنوان EmpID و JobSchedularID است دو رکورد جدید ثبت می کند با مقادیر 5,10 و 5,12 .
یعنی به ازای هر تعمیرکار کد اون تعمیرکار و کد کار ثبت می شود .


امیدوارم تا اینجاش مشکل نداشته باشه

وقتی می خوام گزارش بگیرم اگه Inner Join کنم در گزارشگیری به این صورت عمل می شود
تعمیر دریچه ..... ... ... حسن
تعمیر دریچه ..... ... .... حسین

در حالیکه من می خواهم
تعمیر دریچه .... ..... ..... حسن - حسین
گزارشگیری بشه. یعنی در آخر معلوم بشه که چه کسایی در اون تعمیر شرکت داشتند

mehdimdp
چهارشنبه 12 خرداد 1389, 22:43 عصر
خوشبختاه الان صورت سئوالو تازه فهمیدم.
و تنها جوابم اینه که فکر نمی کنم با کوئری بتونی جواب بگیری (حداقل در اکسس) که در این صورت میشه با دلفی یه حلقه گذاشت و حسن و حسین ها رو توی یک memo یا گیریدی چیزی add کنی.
البته اینها نظر من بود. شاید دوستان حرفه ای بتونند کمک بهتری ارائه کنند.

MY DEAR DELPHI
پنج شنبه 13 خرداد 1389, 08:21 صبح
خوشبختاه الان صورت سئوالو تازه فهمیدم.
و تنها جوابم اینه که فکر نمی کنم با کوئری بتونی جواب بگیری (حداقل در اکسس) که در این صورت میشه با دلفی یه حلقه گذاشت و حسن و حسین ها رو توی یک memo یا گیریدی چیزی add کنی.
البته اینها نظر من بود. شاید دوستان حرفه ای بتونند کمک بهتری ارائه کنند.

دوست عزیز
روشی که شما گفتید در 2 حالت ممکن نیست اول اینکه بخوای گزارش را چاپ کنی و دوم تعداد رکوردهای گزارشگیری زیاد باشه چون تصور کن می خواهیم از تعمیرات یکسال گزارش بگیریم اون وقت چقدر باید منتظر باشیم تا گزارشی که قابل چاپ نیست را درست کنیم

MY DEAR DELPHI
جمعه 14 خرداد 1389, 17:09 عصر
دوستان فکر کنم مشکل از این حادتر هم در این سایت راه حلی برش پیدا شده است.
حالا شما لطف کنید برای این مشکل من هم راهی پیدا کنید

mehdimdp
شنبه 15 خرداد 1389, 00:26 صبح
تنها کاری که میتونم براتون بکنم اینه که به شما پیشنهاد بدم که صورت سئوالتون رو ویرایش کنید (و یا یک پست جدید ایجاد کنید)و متن موجود در پست شماره 7 رو جایگزین کنید. اینطوری اعضاء حرفه ای با یک نگاه متوجه صورت سئوالتون میشند.
شاید هم اگر سئوالتون رو در بخش اکسس و یا sql server ایجاد کنید به جوابی برسید.

MY DEAR DELPHI
یک شنبه 16 خرداد 1389, 22:21 عصر
تنها کاری که میتونم براتون بکنم اینه که به شما پیشنهاد بدم که صورت سئوالتون رو ویرایش کنید (و یا یک پست جدید ایجاد کنید)و متن موجود در پست شماره 7 رو جایگزین کنید. اینطوری اعضاء حرفه ای با یک نگاه متوجه صورت سئوالتون میشند.
شاید هم اگر سئوالتون رو در بخش اکسس و یا sql server ایجاد کنید به جوابی برسید.
ولی من فکر می کنم مشکل من اینطوری حل نمی شه
تا اینجاش 138 نفر این پست رو خوندن به قول شما می تونستن با یک نگاه متوجه سوال بشن
چی می شه اگه یک مقدار تشکر گرفتن و اضافه کردن ستاره کاربری مشکل تر بشه
من که یک هفته می شه کارم لنگه این مشکل هستش ولی هیچ کدوم از اعضا حرفه ای افتخار ندادن
واقعا دستتون درد نکنه