PDA

View Full Version : گرفتن رکورد از یک تیبل و وارد کردن در تیبل دیگر با foreign key



mohsensn
چهارشنبه 21 فروردین 1387, 19:35 عصر
سلام آقا من می خوام اطلاعات یک سهام دار رو وارد کنم با این تفاصیر که این سهام داره بغیر از اسم و ..... یک زمینه فعالیت داره که یک جول دیگه ای گرفته میشه و در یک combobox وارد میشه که یک foreign ley هم داخل جدول سهام دار قرار دادم براش حالا موقعی که من تایید می کنم که اطلاعات زخیره شه داخل جدول ارور می ده که foreign key در تیبل سهام دار نمی تونه null باشه

و دیگر اینکه اگر مقاله ای آموزش کاملی در مورد مشکل من دارید واقعا ممنون میشم راهنماییم کنید برای جستوجو هم نمی دونم چه متنی رو بنویسم که یک برنامه نوشته شده یا پروژه ای پیدا کنم کد های منم به این صورت هست



conn.Open();

comm = newSqlCommand("INSERT INTO sahamdar (cus_name,cus_family,cus_fax,cus_birthdate,cus_num b,cus_educ,cus_web,cus_email) VALUES (@cus_name,@cus_family,@cus_fax,@cus_birthdate,@cu s_numb,@cus_educ,@cus_web,@cus_email)", conn);
comm.Parameters.AddWithValue("@cus_name", txtname.Text);
comm.Parameters.AddWithValue("@cus_family", txtFamily.Text);
comm.Parameters.AddWithValue("@cus_fax", txtFax.Text);
comm.Parameters.AddWithValue("@cus_birthdate", txtDate.Text);
comm.Parameters.AddWithValue("@cus_numb", txtNumb.Text);
comm.Parameters.AddWithValue("@cus_web", txtweb.Text);
comm.Parameters.AddWithValue("@cus_email", txtemail.Text);
comm.Parameters.AddWithValue("@cus_educ", cmbedu.SelectedItem);



try
{
comm.ExecuteScalar();
}
catch (Exception sqlexeptionerr)
{
MessageBox.Show(sqlexeptionerr.Message);
}
conn.Close();
}
privatevoid setcombobox()
{
conn = newSqlConnection(_conn);comm = newSqlCommand("select act_title,ACT_ID from activity", conn);

conn.Open();
dr = comm.ExecuteReader();
while (dr.Read())
{
if(dr[1].ToString().Length>0)
cmbact.Items.Add(dr[1].ToString());

}
conn.Close();
}


اطلاعاتم در همین حده ممنون میشم یکی کامل راهنماییم کنه

Amir_Safideh
پنج شنبه 22 فروردین 1387, 10:47 صبح
چیزی که از اروری که شما میفرمائید میشه فهمید اینه که شما در جدولی که دارید در اون رکورد رو ثبت میکنید یک فیلدی دارید که Allow Null رو برابر False قرار دادید و حالا در زمان Insert شما مقداری رو برای این فیلد ارسال نمیکنید یه همین دلیل دیتابیس به شما ارور میده . چک کنید که کدوم فیلدتونه و آیا واقعا مقدار به این فیلد ارسال میشه یا نه .
---------------
موفق باشید .

mohsensn
پنج شنبه 22 فروردین 1387, 12:53 عصر
ببینید دوست عزیز من داخل combo box از جدول زمینه فعالیت لیست عنوان ها را گرفته و در آن نمایش داده ام. و یک جدول دیگر دارم که جدول سهام دار می باشد و اسم و فامیل و ..... مشخصات دیگر در آن قرار دارد که یک primary key و foreign key که همان id جدول زمینه فعالیت هست وجود دارد حالا وقتی که در combo box من زمینه فعالیت را انتخاب می کنم نمی دونم چجوری باید id اصلی زمینه فعالیت رو بدست بیارم که وارد foreign key کنم و این id در جدول خودش بصورت اوتوماتیک پر میشه و 1 به 1 اضافه میشه فکر کنم کامل گقته باشم ممنون

Amir_Safideh
پنج شنبه 22 فروردین 1387, 13:20 عصر
خوب دوست عزیز فکر کنم متوجه شدم که مشکلتون چیه . خدمتتون عرض کنم که در این مواقع بهتره که از DBLookUpComboBox استفاده کنید که تمام کارها رو انجام میده . یعنی فیلدی که میخوای نمایش میده و بعد از انتخاب عنوان فقط کلید یا آی دی رو در جدول مورد نظر قرار میده . خوب به هر حال شما تمایل دارید که از ComboBox استفاده کنید . خوب در اینطورت میتونی به این صورت اون آی دی رو پیدا کنی البته نمیدونم که زبان برنامه نویسی شما چیه من چیزهائی که گفتم از دلفی بود که الان یادم اومد که زبان شما احتمالا چیز دیگه ای هستش .
در دلفی DBLookUpComboBox کلا در ارتباط با جداول هستش و اطلاعاتی رو که نمایش میده مستقیم از جدول میخونه و در جدول دیگه قرار میده ولی ComboBox هیچ ارتباطی با جداول نداره و تمام ارتباطات با کدنویسی باید انجام بشه . حالا نمیدونم که این ComboBox که شما دارید کدوم حالت رو داره . اگر حالت اول رو داره باید یکسری خصوصیات رو یکبار براش ست کنید و بقیه کارها رو خودش انجام میده . مثلا باید تنظیم کنید که این ابزار اطلاعات رو در کدوم جدول و در کدوم فیلد باید ذخیره کنه و همچنین باید تنظیم کنید که اطلاعاتی رو که باید نمایش بده از کدوم جدول باید بخونه و چه فیلدی رو برای انتخاب کردن به کاربر نمایش بده("عنوان زمینه فعالیت") و چه فیلدی رو باید در جدول مقصد ذخیره کنه ( " آی دی زمینه فعالیت") .
اگر هم حالت دوم رو داره شما میتونید متن اون ComboBox رو گرفته و به یک پروسیجر (که نام فیلد رو گرفته و آی دی فیلد رو برمیگردونه) ارسال کنید و آی در رو از اون بگیرید و در جدول ثبت کنید . یا اینکه در همون Application خودتون جدول "زمینه فعالیت"رو جستجو کنید و کد مورد نظر رو پیدا کنید .
در ضمن فکر کنم که این سوال رو اگر در قسمت زبان برنامه نویسی خودتون مطرح میکردید بهتر بود . چون مشکل شما بیشتر مربوط به Application شماست نه دیتابیس .
----------
موفق باشید .


برای برگرداندن نام خلیج فارس به نقشه ماهواره ای و آنلاین گوگل ارت نیاز به 1 میلیون امضا داریم. به عنوان یک ایرانی خواهشمندم روی لینک آبی زیر کلیک کرده و برای حذف نام خلیج عربی آنرا امضا نمایید. کار سختی نیست http://www.petitiononline.com/sos02082/petition.html این پیام را برای تمامی دوستانتان ارسال نمایید

mohsensn
پنج شنبه 22 فروردین 1387, 19:25 عصر
آقا متشکرم واقعا لطف کردید با جستجو کردن در دیتابیس گرفتن ایدی مشکلم حل شد سال خوبی داشته باشی دوست عزیز