PDA

View Full Version : تکرار داده ها در کوئری



Ali_Fallah
یک شنبه 04 دی 1384, 07:52 صبح
سلام
میخواهم در یک کوئری داد ه های 3 تیبل را باهم داشته باشم .
( 2 تیبل به یک تیبل بصورت یک به چند ارتباط دارند. )
و میخواهم طراحی کوئری بصورتی باشد که دادها تکرار نشوند.
چون برنامه ای که من طراحی کردم در کوئری اطلاعات تکرار می شوند.
لطفاً راهنمائیم کنید.

haddadi2
دوشنبه 05 دی 1384, 09:25 صبح
نوع ارتباط جداول را تغییر بده

شاپرک
دوشنبه 05 دی 1384, 11:12 صبح
گروه بندی کن

a_r_shariati
دوشنبه 05 دی 1384, 22:10 عصر
دوست عزیز با توجه به نوع ارتباطها تکرار اسامی پرسنل در کوئری لاجرم انجام میشود.دقیقا چه چیزی از کوئری میخواهی؟

Ali_Fallah
سه شنبه 06 دی 1384, 09:30 صبح
فرض کنید شخصی دو بار اعزام داشته و یک باز آموزش،اگر دقت کرده باشید در کوئری نیز تعداد دفعات آموزش را نیز دو بار تکرار کرده است. یعنی اگر شخصی به هر تعدادی اعزام داشته باشد آموزش را نیز به همان تعداد تکرار کرده و نشان می دهد.

شاپرک
سه شنبه 06 دی 1384, 10:21 صبح
گروه بندی =Group by

Ali_Fallah
سه شنبه 06 دی 1384, 10:32 صبح
شاپرک جان سلام .
اگر زحمتی نیست بیشتر توضیح داده یا فایل ضمیمه را اصلاح نمائید.

شاپرک
سه شنبه 06 دی 1384, 12:48 عصر
ببین این کمکت میکنه

Ali_Fallah
چهارشنبه 07 دی 1384, 11:45 صبح
شاپرک عزیز سلام
با تشکر از شما
اگر دقت کرده باشی فقط یک رکورد را بر میگرداند-- FIRST
میخواهم اطلاعات هر 3 تیبل در یک کوئری جمع شده بدن اینکه یک رکورد را 2 بار یا بیشتر تکرار نماید.
اگر برنامه را نگاه کرده باشی من یک رکورد فقط یک بار وارد کرده ام ولی در کوئری 2 بار یا بیشتر خود بخود تکرار شده است.

شاپرک
چهارشنبه 07 دی 1384, 12:10 عصر
خوب این که نمیشه چون اطلاعاتشون باهم فرق دارن مثلا نفر اول نام بیمارستان و تاریخ هاشون فرق داره

Ali_Fallah
چهارشنبه 07 دی 1384, 16:26 عصر
پس راهش چیست ؟
من میخواهم برنامه طوری باشه که اگر بعنوان مثال پرونده شخصی خواسته شد تمام اطلاعات آن را بتوان با کلیک یک دکمه پرینت گرفت یعنی تمام اطلاعات مربوط به یک شخص را از تمامی تیبلها در یک گزارش
جمع آوری کرده و بدون تکرار رکودها (مثل نمونه برنامه )در گزارش نشان دهد.
البته منظور من از طرح سؤال نیز به این خاطر بود ه است.
فکر کردم که ابتداء می بایست از طریق کوئری اقدام به این کار کرد.

a_r_shariati
چهارشنبه 07 دی 1384, 17:59 عصر
شما باید بر اساس کوئری گزارش تهیه کنی و در گزارش گروه بندی کنی. اگر از ویزارد گزارش استفاده کنی احتمالا به آنچه میخواهی میرسی

Ali_Fallah
پنج شنبه 08 دی 1384, 12:52 عصر
ظاهراً مشکل همچنان به قوت خود باقی است.:گریه:

شاپرک
شنبه 10 دی 1384, 08:25 صبح
اگه میخوای گزارش بگیری هم می تونی اونجا گروه بندی کنی و یا اینکه Hide Duplicate اون فیلد رو Yes کنی

Ali_Fallah
یک شنبه 11 دی 1384, 12:05 عصر
باز هم همان شد !!:گریه:

شاپرک
یک شنبه 11 دی 1384, 12:52 عصر
ببین این همون گزارشیه که میخوای ؟

Ali_Fallah
یک شنبه 11 دی 1384, 16:10 عصر
شاپرک عزیز با تشکر از شما
لطفاً به فایل ضمیمه نگاه کنید این همان فایلی است که شما اصلاح کرده اید.
فقط من چند رکورد به آن اضافه کرده ام.:گریه:

شاپرک
دوشنبه 12 دی 1384, 14:49 عصر
من هنوز نمیدونم شکل دقیق گزارشی که شما می خواهید چطوره....!!!!!!!!!!!!!!
اگه میشه یه نمونه توی Word یا Excel نشون بدید

Ali_Fallah
سه شنبه 13 دی 1384, 08:19 صبح
با سلام مجدد
عرض کنم چیز خاصی از گزارش نمی خواهم و فقط سؤال من این جاست که چرا وقتی از 3تیبل یا بیشتر (2 تیبل بیشتر) بخواهیم اطلاعات آنها را در یک کوئری یا یک گزارش بیاوریم ، بعضی از رکود ها را خود بخود تکرار می کند مانند نمونه برنامه ومیخواهم که این کارصورت نگیرد.
البته خودم در کوئری از دستورات Distinct و Union نیز استفاده کردم ولی نتیجه خوبی نداد.:گریه:
----------------------------------------------------------------------------------------------------------------------
ازشما شاپرک عزیر هم خیلی ممنونم که با صبر وحوصله به سوالم جواب میدی

شاپرک
سه شنبه 13 دی 1384, 10:18 صبح
بعضی از رکود ها را خود بخود تکرار می کند
خوب چون اطلاعات اونا با هم فرق داره
distinct وقتی عمل میکنه که رکورد ها دقیقا عین هم باشند اما اینجا اطلاعات چند تا از فیلد ها توی رکورد مورد نظر یکی نیست

Ali_Fallah
سه شنبه 13 دی 1384, 10:36 صبح
در نهایت باید چه کار کرد که رکوردها تکرار نشود. اصلاً چرا چنین می شود؟
اگر خواسته باشید اطلاعات کارمندی که در چند تیبل قرار داشته و آنها را در یک کوئری یا گزارش آورده چگونه عمل میکنید؟
آیا به همان حالت تکرار شده می پذیریم یا اینکه راهی وجود داشته و گزارش درست به ما نشان میدهد؟

mzjahromi
سه شنبه 13 دی 1384, 10:56 صبح
ببینید ماهیت کار اینه. یعنی شما نمی تونید همه این اطلاعات رو با یک Query بدون بکرار نمایش دهید
برای گزارش گیری هم باید از دو یا سه تا Query استفاده کنی و به شکل مورد نظرت نمایششون بدی. نحوه نمایش Master-Slave دقیقا برای اینطور جداول هست. اگه سوالی داری دقیق بگو چه جور گزارشی می خوای تا توضیح بدم(البته اگر بلد باشم)

mzjahromi
سه شنبه 13 دی 1384, 10:57 صبح
در یک Query تنها زمانی رکوردها می تونه تکرار نشه که کلیه فیلدهای دو تا رکورد دقیقا یکسان باشه. ولی در Query شما این حالت وجود نداره

Ali_Fallah
سه شنبه 13 دی 1384, 14:24 عصر
آقای ذوالقدر با سپاس از شما لطف کرده وفایل ضمیمه را نگاه کنید. یک تیبل اصلی دارم که دو تیبل دیگه به آن ارتباط دارند بصورت یک به چند که میخواهم اطلاعات هر 3 تیبل در یک کوئری باشد.
همانطوریکه که قبلاً نیز گفتم با توجه به برنامه اگر پرونده کارمندی خواسته شد بتوانیم آنها را در یک گزارش یا یک کوئری دیده وپرینت بگیریم نه از چند گزارش ....ضمناً دادها را نیز تکرار نکند.
اگر خواستید وزحمتی نیست فایل ضمیمه را اصلاح نموده یا یک مثال و یا ضمیمه نمودن فایل اینجانب را راهنمایی نمائید.
با سپاس

شاپرک
سه شنبه 13 دی 1384, 14:40 عصر
میشه بگید در مورد یک پرونده چه اطلاعاتی در گزارش باید نشون داده بشه اسم فیلد ها رو بگید

mzjahromi
سه شنبه 13 دی 1384, 14:58 عصر
ببینید اول من یه چیزی بگم من طراحی فرم با Access بلد نیستم. فقط طراحی DataBase رو بلدم
من بانکتون رو دیدم. شما مجبور نیستید برای یک گزارش فقط از یک Query استفاده کنید.(اگه اینجوری بود که اوضاع خیلی بی ریخت میشد) شما یکQuery بگیرید کا نام شخص یا اشخاص مورد نظر رو از بقول خودتون اصلی(Master) بخونه. بعد با توجه به اینکه از ین جدول چه مقداری انتخاب شده دوتا Query دیگه اجرا کنید که سایر اطلاعات رو بیارید.

شاپرک
سه شنبه 13 دی 1384, 15:12 عصر
Form1 رو اجرا کن ببین من درست متوجه شدم

Ali_Fallah
سه شنبه 13 دی 1384, 16:14 عصر
شاپرک جان فکر کنم متوجه شدی که داده ها واطلاعات را چند بار تکرار کرده است.
با توجه به فرم 1 (شما در فرم 1 که طراحی کردید کد 121 را وارد کن و بعداز مشاهده گزارش ، خود تیبل را نیز نگاه کن که تعداد رکورد چندتا است.)

شاپرک
چهارشنبه 14 دی 1384, 07:32 صبح
ارتباطات جداولت رو اصلاح کردم

Ali_Fallah
چهارشنبه 14 دی 1384, 09:23 صبح
شاپرک جان با عرض سلام شما join را تغییر داده اید.
شما در همین برنامه که اصلاح کرده اید برای کد 121 و در تیبل اعزام (ezam)
3 رکورد وارد نموده و برای همین کد 121 در تیبل آموزش (amozash)
نیز 5 یا 6 رکورد ثبت کنید. تاریخ را نیز به هر صورت که میخواهید ثبت کنید.
سپس از طریق فرم شماره 1 form1 نتیجه را مشاهده کنید.
-------------------------------------------------------------------------------
کد 121 در برنامه به نام فرضی حسین رحمتی می باشد.

sarami
چهارشنبه 14 دی 1384, 16:09 عصر
من فکر نمی کنم مشکل شما تو سطح QUERY حل بشه شاید چون شما از این QUERY میخواین برای طراحی گزارش یا فرم استفاده کنین انتظار دارین همون چیزی رو به دست بیارین که با DROG & DROP کردن اون روی گزارش یا فرمتون مشکل رو حل کنین عزیز شما به راحتی با طراحی یک فرم و دوتا سابفرم میتونین مشکلتون رو حل کنین دنبال اصلاح RELATION و چیزهای دیگه هم به نظر من نباشین بهتره مشکل طراحی تون رو مطرح کنین اونجوری بهتر میشه کمکتون کرد. به فایل نمونه نگاه بنداز شاید منظورت این باشه یعنی نحوه نمایش اطلاعات رو در یک فرم یا گزارش بخوای به فرم ASLI

Ali_Fallah
شنبه 17 دی 1384, 12:30 عصر
آقای صارمی باسلام
میخواهم گزارش من هم تقریباً مثل فرمی باشد که طراحی کردید و رکوردها را تکرار نکند.
----------------------------------------------------------------------------------------------
درهمین برنامه(فایل ضمیمه که اصلاح کردید) فرم Asli را بازکرده و اسم فریبرز کریمی را انتخاب نمائید.
می بینید که در قسمت اعزام 2 رکورد و در قسمت آموزش 1 رکورد ثبت شده که تمام اطلاعات در 3 تیبل قرار گرفته اند.
حال اگر بخواهم هر3 تیبل را در یک کوئری آورده و اطلاعات هر3 تیبل را باهم داشته باشم تا بتونم از آنها گزارش گیری کنم
در اینجا برای رکورد بنام فریبرز کریمی نیز در قسمت آموزش خود بخود یک رکورد دیگر ثبت می کند. و به همین ترتیب
یعنی اگر تیبل اعزام (فرقی نمی کند تیبل آموزش ) دارای هر چند تعداد رکورد باشد تیبل بعدی اگر دارای رکورد کمتری باشد
ولی در کوئری تعداد رکوردها را مساوی هم قرار می دهد.

sarami
یک شنبه 18 دی 1384, 13:17 عصر
به تاپیک جدیدی که ایجاد کردین مراجعه نمائید.