View Full Version : گفتگو: همه چیز درباره ارتباط جداول و استفاده از رکوردهای جداول دیگر
u.2u.4u
پنج شنبه 20 آبان 1389, 07:22 صبح
فکر میکنم موضوع خیلی مهمیه که در تاپیکها خیلی بهش توجه نشده. امیدوارم اساتید و اهل فن در این تاپیک شرکت کنند که بتونیم از معلوماتشون استفاده کنیم. تمام مسائل مربوط به استفاده جداول یک دیتابیس از یکدیگر در این تاپیک مطرح می شه: از relationship گرفته تا lookup و Query.
برای شروع هم توجهتون را به این تاپیک جلب می کنم:
http://barnamenevis.org/forum/showthread.php?p=1149273#post1149273
(ارتباط جدول مواد اولیه و مواد تولیدی باهم)
همچنین به این تاپیک:
http://barnamenevis.org/forum/showthread.php?t=258717
ارتباط جداول و ايجاد كوئري
u.2u.4u
پنج شنبه 20 آبان 1389, 08:24 صبح
خوب، اولین سوال را هم خودم شروع می کنم:
در اکسس هنگام طراحی جدول، برای نوع داده ها، گزینه ای هست به نام Lookup Wizard :
60047
پس از تکمیل این ویزارد یک ارتباط به شکل زیر در دیتابیس ایجاد می شود:
60048
وسپس فیلدهای جدول مرتبط شده در جدول نهایی به شکل یک کومبوباکس قابل دسترسی می شوند:
60049
حالا سوال من اینه که این روش چه تفاوتهایی با ایجاد یک رابط دارد و روش استفاده از اینچنین فیلدی در یک نرم افزار چگونه است: یعنی چگونه می توانیم به محتواهای این فیلد دست پیدا کنیم؟ ارتباطی که ایجاد می شود چه نوع ارتباطی است؟ آیا این روش کارا و خاص است یا جایگزین های مناسب تری هم دارد؟ و خلاصه هر توضیحی که لازم می دونید خودتون بفرمایید.
wolfstander
پنج شنبه 20 آبان 1389, 09:42 صبح
سلام
در مورد این روش میشه گفت که برای راحتی کار، و کم کردن کدهای مورد نیاز، استفاده از یک تعریف در تمامی بخشها استفاده میشه
کنترل ها در سطح فیلد انجام میشه و کد نویسی کمتری لازم داره تا اطلاعات مختلف فراخون بشه
جدول آنالیز بهتری میشه و از افزونگی داده جلوگیری میشه
u.2u.4u
پنج شنبه 20 آبان 1389, 10:03 صبح
سلام
در مورد این روش میشه گفت که برای راحتی کار، و کم کردن کدهای مورد نیاز، استفاده از یک تعریف در تمامی بخشها استفاده میشه
کنترل ها در سطح فیلد انجام میشه و کد نویسی کمتری لازم داره تا اطلاعات مختلف فراخون بشه
جدول آنالیز بهتری میشه و از افزونگی داده جلوگیری میشه
ممنون از پاسختون. ولی اینقدر کلی و تخصصی و فنی برای خیلی ها(از جمله خود من) قابل درک نیست.
-اگر می خواستیم از روش عادی یعنی Tools->Relationships همین کار را انجام دهیم:
-- باید چه مراحلی را طی می کردیم که از تمام مزایایی که شما ذکر کردید استفاده کنیم؟
-- در کدام قسمت نیاز به کد نویسی هست؟
لطفا اگه می شه در مورد سه عبارت
استفاده از یک تعریف در تمامی بخشها استفاده میشه
و
کنترل ها در سطح فیلد انجام میشه
و
افزونگی داده
هم توضیح بدید.
wolfstander
پنج شنبه 20 آبان 1389, 10:58 صبح
خوب پس بذارید من ذره ذره توضیح بدم
سوال: چرا از Relationship استفاده میکنیم؟
به این دلیل که یک کد مثل کد مشتری یک بار تعریف بشه و هزاران بار ازش استفاده کنیم
حالا فرض میکنیم که جداولی داریم به این صورت
جدول مشتریان:
کد مشتری
نام مشتری
جدول فاکتور:
شماره فاکتور
کد مشتری
در حالت عادی این دوتا رو با استفاده از جدول Relationship به هم وصل میکنیم، کار هم درست انجام میشه و مشکلی نخواهیم داشت
نه در گزارش گیری و نه در فرم
حالا مساله از زاویه ای دیگه بررسی میکنیم
آیا من کد همه مشتریان رو حفظ هستم؟
آیا فقط نمایش کد کفایت میکنه؟
پس در فرمم باید کدی رو بنویسم که به ازای هر انتخاب کد، نام مشتری رو برای من با استفاده از یک کوئری بخونه و بیاره
پس در فرمم باید کدی رو بنویسم که به ازای هر انتخاب کد، نام مشتری رو برای من با استفاده از یک کوئری بخونه و بیاره
حالا اگه بخوام کاری کنم که وقتی فرد روی نام مشتری کلیک کرد –در حالت کمبو باکس- در کنارش نام مشتری هم نمایش داده بشه ، بدون اینکه جایی ذخیره بشه، از LookUp استفاده میکنم
بعدش میتونم این نام نمایش داده شده رو با کدهای مختلفی بررسی کنم
نمایشش بدم در یه تکست باکس بدون اینکه دائمی باشه و این کار سرعت من رو بالامیبره
هرزمان که در جدول مشتریانم تغییری بدم، کافی در Lookup فقط با تیک کردن اطلاعات رو بیارم
در جایی که قراره اطلاعات هم دستی و هم خودکار باشه، میتونم از کاربر بخوام که کدمشتری رو اگه میدونه مستقیما تایپ کنه و همون لحظه بررسیش کنه که آیا درسته یا نه؟
جلوی نوشتن کد برای باز شدن فرم دیگه ای که اطلاعات مشتری رو نشون بده رو میگیره
البته این رو هم یاد اور میشم که این قضیه مکمل Relationship هست و جای اون رو نمیگیره
هرکسی در یکی از این ها احساس راحتی بیشتری میکنه
ولی من خودم برای اینکه برنامه هایی که دارم معمولا ً باید از چندقسمت تغذیه بشن، تا حد ممکن از ایجاد Relationship خودداری میکنم و با استفاده از lookup کارمو انجام میدم
شاید دوستان دیگه راه حل بهتری بلد باشد که مسلما ً هستند ولی من در این حد مشکلمو حل میکنه که هیچ، خیلی هم خوب بهم جواب میده و کاربرم هم راضیه
شما از دید برنامه نویس طراحی میکنی، ولی باید از دید کاربر استفاده کنی
یعنی نگی شما بیا یه دکمه بزن و مشتری رو جستجو کن و ....
اون رو هم میذاری در کنار این قضیه
ولی اگه مستقیم زد، بهش نشون بده که چی رو داره وارد میکنه
اگه بلد نبود، فرم جستجو براش بذار
u.2u.4u
پنج شنبه 20 آبان 1389, 11:29 صبح
...بعدش میتونم این نام نمایش داده شده رو با کدهای مختلفی بررسی کنم
خیلی از پاسخ کامل و جامعتون متشکرم.
می شه بگید از طریق چه کدی می توان به این نام دسترسی پیدا کرد؟ زمانی که جدول نمایش داده می شه این نام در کومبوباکس مشخصه و می تونیم اونرا مشاهده کنیم. حالا اگر بخواهیم با استفاده از کد به اون دسترسی پیدا کنیم (بدون نیاز به کوئری نویسی)باید چه کار کنیم؟ (در ماژولهای اکسس و در ADO)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.