PDA

View Full Version : سوال: چگونه قرار دادن سه فیلد به عنوان کلید اصلی در sql



ashkan1234
جمعه 27 اردیبهشت 1392, 22:53 عصر
چطور میشه در sql سه فیلد نام ،کد ملی و تاریخ رو با هم به عنوان کلید اصلی قرار داد بطوریکه:(قرار دادنش رو بلدم،این شرط برام مهمه):
مثلا فرض کنید کاربر برای نام اشکان-کد ملی 123 در تاریخ فروردین 1392 اطلاعات ثبت کرد
کلید خارجی فقط زمانی عمل کنه که دقیقا کاربر هر سه تای اینها رو تکراری وارد کنه!
مثلا اگر کاربر نام:اشکان-کدملی 123-تاریخ اردیبهشت 1392 اطلاعات ثبت کرد،برنامه خطا نگیره!
بصورت عادی وقتی کلید را روی سه فیلد قرار میدهیم اگر هرکدام از سه فیلد تکراری باشد خطا میگیره!
نرم افزار مالیات حقوق اداره مالیات که با vb6 نوشته شده و بانک اش اکسس هست این قابلیت رو داره!
حالا نرم افزار من بانکش 2005sql هستش و با سی شارپ نوشتم!LINQ کار کردم!

mousa1992
جمعه 27 اردیبهشت 1392, 23:04 عصر
وقتی چند فیلد رو به عنوان کلید در نظر میگیرید دقیقا همین اتفاق میافته و همه فیلدها چک میشن در صورتی که یکی از اونا متفاوت باشه اجازه ثبت رو بهت میده !

ashkan1234
جمعه 27 اردیبهشت 1392, 23:11 عصر
متاسفانه اینطوری عمل نمیکنه!
هر کدومشون فرق کنه خطا میگیره!

ashkan1234
جمعه 27 اردیبهشت 1392, 23:34 عصر
الان از تو خود بانک اطلاعات وارد کردم بدون هیچ مشکلی جواب داد!
ولی نمیدونم چرا از نرم افزار میزنم ارور PK میده!
باید یبار دیگه چک کنم کدها رو ببینم مشکل کجاست!
خیلی ممنون!
یه سوال دیگه میتونم بپرسم؟!
میپرسم:دی
وقتی ریلیشن میزنیم به یک جدول دیگه!
مثلا من الان از جدول مشخصات ریلیشن زدم به جدول ثبت(یعنی جدول یک پدر و جدول دو فرزند)
حالا تو نرم افزارم دو تا فرم دارم فرم مشخصات و فرم ثبت!
فرم مشخصات به جدول مشخصات و فرم ثبت به جدول ثبت وصله!
تو فرم ثبت یک کمبو باکس دارم که بیند کردم به فیلد نام و نام خانوادگی از جدول مشخصات!
حالا کاربر وقتی میاد دکمه ذخیره از جدول مشخصات رو میزنه این اطلاعات میره تو جدول مشخصات ذخیره میشه!
سوال اینجاست که به جای نام انتخاب شده در کمبوباکس توسط کاربر چطور کد آن نام رو به دیتا بیس ارسال کنم؟
LINQ کار کردم!!
ممنون!

mousa1992
جمعه 27 اردیبهشت 1392, 23:46 عصر
یه سوال دیگه میتونم بپرسم؟!
میپرسم:دی البته :بامزه:

DataTable tableInfo = new DataTable();
// پر کردن جدول از جدول مشخصات
comboBox1.DataSource = tableInfo;

comboBox1.DisplayMember = "نام فیلد نمایشی ";
comboBox1.ValueMember = "نام فیلدی که کد هر رکورد رو نشون میده ";

خاصیت valuemember شامل کدها میشه - من linq کار نکردم

موفق باشید

ashkan1234
شنبه 28 اردیبهشت 1392, 00:01 صبح
البته :بامزه:

DataTable tableInfo = new DataTable();
// پر کردن جدول از جدول مشخصات
comboBox1.DataSource = tableInfo;

comboBox1.DisplayMember = "نام فیلد نمایشی ";
comboBox1.ValueMember = "نام فیلدی که کد هر رکورد رو نشون میده ";

خاصیت valuemember شامل کدها میشه - من linq کار نکردم

موفق باشید
بله ظاهرا تفاوت زیادی نمیکنه!
الان دیگه مغزم پوکیده 15 ساعته یکسره پای سی شارپ نشستم!چوب شدم!:گیج:
فردا امتحان میکنم اگر مشکلی بود باز همینجا مزاحم خواهم شد!
ممنون که پاسخ دادید!
شبتون خوش!