PDA

View Full Version : ارتباط جداول در اکسس



mahdisk1
چهارشنبه 13 بهمن 1389, 00:52 صبح
با سلام خدمت اساتید.
اطلاعاتی که باید توی بانک اکسس من وارد بشه فیلدهای زیادی داره. مجبورم بیام و جدول رو بشکنم و به 2 یا 3 جدول تبدیل کنم.(حدودا 100 فیلد دارم که الان 60 تاش توی یه جدوله ولی بقیه رو میخوام جدا کنم)
اما مشکل اینجاس که کل اطلاعات فیلدها بهم مربوطه.
یعنی مشخصات یه فرد خاص رو وارد میکنیم. این مشخصات وارد شده شامل 100 آیتمه.
چطور میتونم بین جدول هام ارتباط بذارم که توی فرم های مجزا اطلاعات وارد بشه اما برای گزارشگیری و بقیه موارد بدونیم که رکورد سوم از جدول دومی با رکورد مثلا پنجم از جدول اول ادامه همدیگه هستن.

مثلا جدول هایی با فیلدهای زیر داریم:
جدول 1: نام- نام خانوادگی- شماره تماس
جدول 2: شماره شناسنامه- کد ملی- آدرس
هر جدول باید توسط فرم های مربوط به خودش پر بشه.
ارتباط بین این جدول ها و رکوردها رو میخوایم داشته باشیم.
(فیلدها مثال هستن. دوستان نگن چرا اولی تلفن داره دومی کد ملی!!!؟؟؟؟) :شیطان:

mahdisk1
چهارشنبه 13 بهمن 1389, 19:10 عصر
یه راه که به ذهن خودم میرسه اینه که بیام و کد اختصاصی در نظر بگیرم که برای رکوردهای ادامه هم توی جدول های مختلف یکسان باشه مقدارش. اما مطمئن نیستم روش درستی باشه یا اینکه اگه از این روش استفاده کنم کاملا جوابگوی کاری که میخوام هست یا نه.(منظورم اینه که میشه کاملا بهش اعتماد کرد یا نه!!!)

mohamad goodarzi
پنج شنبه 14 بهمن 1389, 07:18 صبح
بهترين راه اختصاص يك فيلد عددي در تمامي جداول و لينك آنها مي باشد(مثل شماره ملي ،شماره پرسنلي و..)

masoud_sm3
پنج شنبه 14 بهمن 1389, 12:02 عصر
روش استانداردش اینه که برای هر جدول یک کلید اصلی تعریف کنی ویک جدول برای ارتباط بین دوتا جدولت که حاوی حداقل دو فیلد باشه یکی کلید اصلی جدول1 و دیگری کلید اصلی جدول2. البته میتونه فیلد های دیگه ای هم داشته باشه ولی این دوتارو باید حتما داشته باشه. در ضمن کلید اصلی این جدول میشه دوتا کلید اصلی جداول 1و2.

مثال:
کالا(کد،نام،تعدادو...)
کلید اصلی:کد

فاکتور(شماره،تاریخ و...)
کلیداصلی:شماره

برای ایجاد ارتباط بین این دوتا جدول یک جدول جدید به این شکل تعریف می کنیم:
کالاهای موجود در فاکتور(کد،شماره،تعدادو...)
کلیداصلی:کد و شماره

یه چیز دیگه با اینکه نگفتی فیلدهای جدولت چی هست ولی باتوجه به تعداد زیادشون (60) میشه گفت که در اجرا با زیاد شدن اطلاعات برنامه سنگین میشه و احتمالا یکسری داده تکراری هم توشون هست که حجم دیتابیست رو افزایش میده که با روش بالا میتونی از این قضیه هم جلوگیری کنی.

mahdisk1
جمعه 15 بهمن 1389, 01:27 صبح
ممنون از پاسخ تون.
بانکی که من دارم مربوط به پرونده های یک شرکته.
هر پرونده یا تقاضا باید شامل مشخصات فردی متقاضی باشه (هر نفر میتونه چندین پرونده مختلف داشته باشه) هر تقاضا هم فیلدهای مختلفی داره که تو مراحل مختلف ارجاع پرونده پر میشن.
حالا مجموع این فیلدها چیزی در حدود 100 آیتمه. حدودا 60 تاش رو توی یه جدول گذاشتم و بقیه رو میخوام بشکنم که سرعت بانک زیاد شه.باید به این نکته هم توجه داشته باشم که بانک روی شبکه س و کاربرای مختلفی دارن روش کار میکنن و هر کسی بخشی از کار رو انجام میده.
این کل کاریه که داره با این بانک انجام میشه.
(سوال دیگه ی هم که در مورد گرفتن تایم و تاریخ داشتم هم برا اینه که هر تقاضا بتونه یه آیتم اختصاصی داشته باشه و از اون برای این لینک جدول هام استفاده کنم)

stabesh
جمعه 15 بهمن 1389, 18:02 عصر
با سلام
به نظر من
یک جدول برای اشخاص باید داشته باشید فقط مشخصات فردی
یک جدول برای آدرس اشخاص
یک جدول برای تماس با اشخاص
بک جدول برای پرونده ها
توی سه تای آخری یک فیلد عددی داشته باشید که شماره شخص هستش

در ضمن شما میتونید 255 فیلد در یک جدول داشته باشید و تو کوئریهاتون اگر همشو لازم ندارید خوب همونایی که لازم دارید رو انتخاب کنید تا سرعت کم نشه و ram به هدر ندره

mahdisk1
شنبه 16 بهمن 1389, 18:12 عصر
ممنون از تابش عزیز بابت پاسخ شون.
مشکل اینجاست که بانک نوشته شده و در حال استفاده س. و الان نمیشه تغییراتی که میخوام رو اعمال کنم. انجام اینکار یعنی نوشتن دوباره یانک
الان یکسری آیتم ها هستش که اضافه شده و باید یه فکری بکنم که اطلاعات قبلی که وارد نرم افزار شده از دست نره و یا نیاز به ورود دوباره شون نباشه.
اون جدولی که دارم باید سر جاش بمونه و متاسفانه همین باعث میشه بانکم از اون حالت "برنامه نویسی راحت*" و مشخصی که براش انجام داده بودم خارج بشه.
(*:اصطلاح من در آوردی می باشد:به معنی رعایت آیتم هایی برای رفع عیب و اصلاح کدها و جداول :لبخند:)

stabesh
شنبه 16 بهمن 1389, 18:43 عصر
تازه فهمیدم مشکل کجاست
شما یک برنامه نوشتید اما یک سری ایتمها رو بهشون توجه نکردید حالا می خواهید این ایتمها رو در قالب یک جدول دیگه بیارید
ارتباط یک به یک تعریف کنید البته کار جالبی نیست
میتونید دوباره طراحی رو از اول انجام بدید اون وقت اطلاعات رو بایک insert یا فوقش recordset توی جدولهای جدید بریزید جلوی ضرر رو هر وقت بگیرید منفعته به قول قدیمیا
البته قصد فضولی توی کارتون رو ندارم

mahdisk1
یک شنبه 17 بهمن 1389, 17:36 عصر
تابش جان ممنون بازم.
در واقع مشکل اصلی من این بود که بانک مورد نظر من که در واقع ایده خود من بود مشکلی نداشت.
اما بعد از نصب و استفاده بود که درخواست اضافه کردن برخی قابلیت ها!!!!... کار رو به اینجا رسوند که واقعا اگه دوباره طراحی میکردم به مراتب راحت تر بود برام.
و البته اگه هم از قبل فکر اینجا رو میکرد براحتی برام قابل حل بود :ناراحت:
بابت فایلی هم که گذاشتی ممنون. بالاجبار همین کارو کردم. اما واقعا روال در همی پیدا کرده برنامه

mahdisk1
یک شنبه 17 بهمن 1389, 17:39 عصر
راستی تابش جان یه سوال:
توی فایلی که گذاشتی جدول رو که باز میکنی علامت پلاس میاد که روش کلیک میکنی خود جدول باز میشه.(علامت + کنار جدول)
این چطوری انجام میشه؟
یا توی بعضی برنامه ها میبینم که جدول بجای مقدار از تیک انتخاب استفاده میشه و انتخاب شده یا انتخاب نشده هستش.
این ها هم برام جالبه و نمیدونمچطور میشه :خجالت:

stabesh
یک شنبه 17 بهمن 1389, 18:29 عصر
اگه برای جدول ها relationships تعریف کنید خودش این کار رو انجام میده
http://barnamenevis.org/showthread.php?270580-%DA%A9%D8%AA%D8%A7%D8%A8%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B2%D8%A8%D8%A7%D9%86-SQL-%D8%AF%D8%B1-%D8%A7%DA%A9%D8%B3%D8%B3
fisher.osu.edu/~muhanna_1/837/MSAccess/tutorials/relation.pdf (http://barnamenevis.org/fisher.osu.edu/%7Emuhanna_1/837/MSAccess/tutorials/relation.pdf)
www-rohan.sdsu.edu/~bats/PDF/FacStaff/ACCESS/Access2fs.pdf (http://barnamenevis.org/www-rohan.sdsu.edu/%7Ebats/PDF/FacStaff/ACCESS/Access2fs.pdf)

اگه منظورتون از علامت تیک فیلدیه که از نوع yes/no هست براش میتونید یک check box بذارید که بهش مقدار بده این نمونه رو ببینید