اضافه كردن يك ركورد در جدول واسط

diehard2007

عضو جدید
با سلام و خسته نباشيد . من در حال نوشتن يك برنامه تعميرگاه موبايل هستم همه چيز خوب پيش رفت تا رسيدم به پر كردن جدول واسط يعنى از دو جدول بايد اطلاعات خوانده بشه و در جدول سومى پر شود حالا چطورى مى تونم اين كار رو انجام بدم . البته يه كدى هم نوشتم نمى دونم درسته يا نه ؟ ممنون مى شم راهنماييم كنيد .

string d;
privatevoid btnAdd_Click(object sender, EventArgs e)
{
SqlConnection cn = newSqlConnection("Data Source=.;Initial Catalog=Mobile1;Integrated Security=True");
cn.Open();
SqlCommand cmd = newSqlCommand("insert into customers(c_name,c_tel)values('"+txtc_name.Text+"','"+txtc_tel.Text+"')insert into phones(ph_name,ph_s_number,ph_problem,ph_tarikh)values('"+txtph_name.Text+"','"+txtph_s_number.Text+"','"+txtph_problem.Text+"','"+txtph_tarikh.Text+"')",cn);
cmd.ExecuteNonQuery();
cn.Close();
 
cn =
newSqlConnection("Data Source=.;Initial Catalog=ShopMobileYazdi;Integrated Security=True");
//find c_id
SqlConnection cn2 = newSqlConnection("Data Source=.;Initial Catalog=Mobile1;Integrated Security=True");
cn2.Open();
cmd =
newSqlCommand("select c_id from customers where c_name='"+txtc_name.Text+"'and c_tel='"+txtc_tel.Text+"'");
cmd.Connection = cn;
int c_id;
c_id = (
int)cmd.ExecuteScalar();
cn2.Close();
//find ph_id
SqlConnection cn3;
cn3 =
newSqlConnection("Data Source=.;Initial Catalog=Mobile1;Integrated Security=True");
SqlCommand cmd2;
cmd2 =
newSqlCommand("select ph_id from phones where ph_name='"+txtph_name.Text+"'");
cmd.Connection = cn3;
cn3.Open();
int ph_id;
ph_id = (
int)cmd2.ExecuteScalar();
cn3.Close();
cmd =
newSqlCommand("insert into orders (c_id,ph_id) values (" + c_id + "," + ph_id + ")");
cmd.Connection = cn;
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
ShowData();
}
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
دوست عزيز ، جدول واسط با جدول عادی که فرقی نداره، شما در جدول واسط دو تا کلید خارجی دارید و مثلاً یک کلید اصلی.
مراحل درج آن فرقی نداره و فقط باید کلیدها رو درست درج کنی تا خطا نده.

من مشکل شما رو دقيق نمی فهمم. توضیح بیشتر بدید تا بتونم بیشتر راهنماییتون کنم :gol:
 

diehard2007

عضو جدید
سلام . من يك DataBase دارم كه سه جدول به نامهاى customers,phone,orders داره كه جدول customer مقاديرى مثل c_id,c_name,c_tel داره و جدول phone مقاديرى مثل ph_id,ph_name,ph_serian_number,ph_problem,ph_tarikh داره و جدول orders مقاديرى مثل o_id,c_id,ph_id داره كه من يك DataBase Diagram براى اين سه جدول درست كردم و c_id جدول customers رو به c_id جدول orders وصل كردم و ph_id جدول phone رو به ph_id جدول orders وصل كردم حالا مشكل من هم همين جاست كه اگه اين فايلي كه فرستادم و نگاه كنيد فكر كنم مشكلمو بهتر متوجه بشيد كه چطور مي شه كاري كرد كه مقدارهاي ph_id,c_id رو پرش كرد آخه براي درج ركوردهاي c_id,ph_id ما كه نبايد يه textbox بزاريم و پرش كنيم خودش بايد پر بشه و من نمي دونم بايد چه كار كنم .Send.jpg
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام . من يك DataBase دارم كه سه جدول به نامهاى customers,phone,orders داره كه جدول customer مقاديرى مثل c_id,c_name,c_tel داره و جدول phone مقاديرى مثل ph_id,ph_name,ph_serian_number,ph_problem,ph_tarikh داره و جدول orders مقاديرى مثل o_id,c_id,ph_id داره كه من يك DataBase Diagram براى اين سه جدول درست كردم و c_id جدول customers رو به c_id جدول orders وصل كردم و ph_id جدول phone رو به ph_id جدول orders وصل كردم حالا مشكل من هم همين جاست كه اگه اين فايلي كه فرستادم و نگاه كنيد فكر كنم مشكلمو بهتر متوجه بشيد كه چطور مي شه كاري كرد كه مقدارهاي ph_id,c_id رو پرش كرد آخه براي درج ركوردهاي c_id,ph_id ما كه نبايد يه textbox بزاريم و پرش كنيم خودش بايد پر بشه و من نمي دونم بايد چه كار كنم .مشاهده پیوست 45431

عزيز، مشخص هست که نباید TextBox بذارید. یک روش اینه که از Combo استفاده کنید و ValueMember را به آی دی جدول ست کنید. روش دیگر این هست که جلوی جعبه متن یک کلید بگذارید و با زدن آن یک فرم به صورت دیالوگ باز شه که در آن جدول از اطلاعات مورد نظر پر شده و سطری را انتخاب و برگردانید به فرم./ روش دوم در مواردی که حجم اطلاعات زیاد هست به کار میرود که باید در صورت نیاز Search هم داشته باشد. به این ترتیب شما آی دی دارید و به راحتی درج را انجام میدهید :gol:
 

diehard2007

عضو جدید
دوباره سلام . مگه ValueMember براى خواندن اطلاعات از جدول نيست ، من مى خوام اطلاعات تو جدول اضافه بشه من كه واقعا گيج شدم اگه امكانش هست مى شه يك نمونه كدشو برام بنويسيد چون نمي دونم چطور بايد نوشتش ؟
 

mina_1367

عضو جدید
دوباره سلام . مگه ValueMember براى خواندن اطلاعات از جدول نيست ، من مى خوام اطلاعات تو جدول اضافه بشه من كه واقعا گيج شدم اگه امكانش هست مى شه يك نمونه كدشو برام بنويسيد چون نمي دونم چطور بايد نوشتش ؟

وقتی دارید از کلید خارجی استفاده می کنید قبلش باید اطلاعات معادل کلید خارجی در جدولی که کلید اصلی هست وجود داشته باشه ( یعنی شما باید اول رکوردی درج کنی که از مقدار کلیدش که در جدول دیگه کلید خارجی هست استفاده کنی و در جدول بعدی بتونی درج انجام بدی، با کمک کلیدی که قبلا در جدول اصلی درج شده ! و وجود داره ) کلید را از جدول دیگری خوانده سپس دوباره در جدول واسط که می خواهید درجش می کنید !
 

diehard2007

عضو جدید
با سلام و خسته نباشید . بلاخره به هر بدبختی بود تونستم تو برنامه در سه جدول رکورد اضافه کنم و در همون سه جدول رکوردها را ویرایش کنم ولی الان مشکل اصلی من پاک کردن از سه جدول هست که نمی دونم چه کار کنم . آیا باید تو هر جدول اول رگوردهای id ها بخونم و پاک کنم واقعا نمی دونم چه کار کنم اعصابمو بدجوری ریخته بهم ممنون میشم راهنمایی کنید .
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
با سلام و خسته نباشید . بلاخره به هر بدبختی بود تونستم تو برنامه در سه جدول رکورد اضافه کنم و در همون سه جدول رکوردها را ویرایش کنم ولی الان مشکل اصلی من پاک کردن از سه جدول هست که نمی دونم چه کار کنم . آیا باید تو هر جدول اول رگوردهای id ها بخونم و پاک کنم واقعا نمی دونم چه کار کنم اعصابمو بدجوری ریخته بهم ممنون میشم راهنمایی کنید .

یک روش فعال کردن Cascade Delete هست. يک روش هم این است که در پروسیجری این کار را دستی و در یک تراکنش انجام دهید.
 

diehard2007

عضو جدید
دوباره سلام . امکانش هست از این دو روشی که گفتید یک نونه کدی بزارید چون اصلا نمی دونم باید چطوری بنویسمش .
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
دوباره سلام . امکانش هست از این دو روشی که گفتید یک نونه کدی بزارید چون اصلا نمی دونم باید چطوری بنویسمش .
Cascade Delete رو که زمانی دیاگرام ایجاد می کنید یا کلیدهای خارجی رو به جدول اصلی نسبت می دهید می توانید True کنید.
در مورد پروسيجر هم :

Begin Transaction

Begin Try
دستورات حذف
Commit Transaction

End Try
Begin Catch
Rollback Transaction
End Catch
 

Similar threads

بالا