PDA

View Full Version : سوال: چگونه میتوان مقادیر دو ستون (فیلد)رو با هم uniqe کرد؟



selmira
سه شنبه 13 دی 1390, 15:21 عصر
سلام دوستان خسته نباشید

من توی جدولی که دارم میخوام دو فیلد رو با هم یکجا یونیک کنم تا به ازای هردوی اینها فقط یک مقدار وارد شود چیکار کنم؟

Abbas Amiri
سه شنبه 13 دی 1390, 20:57 عصر
جدول در نمای دیزاین بازکرده و دو فیلد مورد نظر را همزمان انتخاب کرده و علامت کلید اصلی را انتخاب کنید.

selmira
سه شنبه 13 دی 1390, 23:16 عصر
آقاب امیری غیر این راه دیگه ای نداره؟ چون خود این جدول یه فیلد کلید داره که به یک جدول دیگه با این فیلد ارتباط داره

mj_bayati
سه شنبه 13 دی 1390, 23:25 عصر
فک میکنم خیلی راحته
البته اگه درست متوجه شده باشم :گیج:

table رو در حالت disign باز میکنید و اون فیلدهایی که میخواهید یونیک بشن
گزینه ی Indexed رو براشون به oYes (No Duplicates)o تغییر می دهید.

اگه منظورتان غیراز اینه نمونه بزارین یا واضح تر بفرمایین :چشمک:

Abbas Amiri
چهارشنبه 14 دی 1390, 01:18 صبح
فکر کردم می خواهید Primary باشند ، برای Unique کردن کافی است فیلد را انتخاب و وخصوصیت Indexed آن را به ( Yes (No Duplicates تغییر دهید

selmira
چهارشنبه 14 دی 1390, 11:02 صبح
به شکلی شما می فرمایید نمیشه چون من میخوام هردو فیلد date ,a1 بصورت یکجا یونیک بشن یعنی به ازای یک تاریخ و یک مقدار برای a1 فقط یک مقدار وارد شود اگه طوری که من میخوام باشه سطر 3 رو نباید قبول کنه چون قبلا برای این تاریخ و این a1 مقداری وارد شده




Rank

date

A1

1
1390/1/1
1
2
1390/1/1
2
3
1390/1/1
1

selmira
چهارشنبه 14 دی 1390, 11:09 صبح
به شکلی شما می فرمایید نمیشه چون من میخوام هردو فیلد date ,a1 بصورت یکجا یونیک بشن یعنی به ازای یک تاریخ و یک مقدار برای a1 فقط یک مقدار وارد شود اگه طوری که من میخوام باشه سطر 3 رو نباید قبول کنه چون قبلا برای این تاریخ و این a1 مقداری وارد شده

Mohammad_chz
چهارشنبه 14 دی 1390, 11:24 صبح
دوست عزیز برای اینکار باید کلید اصلی شامل هر دو فیلد باشد. استفاده از نوع داده اتونامبر برای کلید اصلی جای تامل دارد(اصولا صحیح نیست). فایل شما به صورت زیر اصلاح شد.

selmira
چهارشنبه 14 دی 1390, 20:01 عصر
ممنون دوستان ولی این روش رو امتحان کردم توی پروژه خودم, این مشکلی که من مطرح کرده بودم حل میشه ولی وقتی rank رو از حالت primary دربیاریم نمیشه جداول t_m1 و t_m2رو بهم متصل کرد چون اگر rank بعنوان کیلد اصلی نباشه نمیشه به یک جدول دیگه ارتباطش داد و نوع ارتباطشون indeterminate میشه اگه نگاه کنین متوجه میشین


یکی هم دوستان من توی فرمم که اطلاعات رو وارد میکردم اینا میرفتن توی جداول مربوطه ذخیره میشدن ولی خواسته اونا اینه که درصد ها رو خودش حساب کنه نه اینکه ما دستی وارد کنیم من چطور میتونم برای یک فیلد فرمول بنویسم و مقادیر هریک بره توی جدول ذخیره بشه؟
توی word ای که گذاشتم بیشتر توضیح دادم

selmira
پنج شنبه 15 دی 1390, 10:56 صبح
برای سوال 2 راه حلی پیدا کردوم فقط موند سوال 1

emami.sie
پنج شنبه 15 دی 1390, 11:21 صبح
سلام
ببینید همونطور که دوستان گفتند از طریق جدول فقط استفاده از فیلد کلید همزمان برای دو فیلد راه چارست...
حالا شما مطمئنا برای ورود اطلاعاتتون از فرم استفاده می کنید، اگه اینطور باشه من یه راهکار تو فرم واستون ضمیمه میکنم... یه داده تکراری تو فرم وارد کنید مانند تاریخ 1390/01/01 و a1=1
امیدوارم کمکتون کنه

Mohammad_chz
پنج شنبه 15 دی 1390, 12:33 عصر
دوست گرامی برای رفع مشکلتون باید ساختار جداول رو عوض کنید. مثلا در جدول TBL-A1 که سر فصل هزینه ها را نگهداری می کنید نیازی به استفاده از اتونامبر به عنوان کلید اصلی نیست. مسلما هر هزینه ای در سیستم حسابداری هر سازمانی دارای سر فصل و کد منحصر به فردی است که می توانید از آنها به عنوان کلید اصلی استفاده کنید. در جداولی که ارتباط چندگانه وجود دارد باید ارتباطات ایزوله شوند. مشکل اساسی شما در ساختار پایگاه داده است.
اما برای فرمول می توانید از Before Update استفاده کنید و محاسبات لازم را انجام دهید.

البته نکته مهم: هیچ وقت مقادیر محاسباتی را در جدول ذخیره نکنید. بلکه در صورت لزوم باید محاسبه شده و به کاربر نمایش داده بشن. (نقض قاعده سوم نرمال سازی پایگاه داده)