PDA

View Full Version : سوال: پاک شدن اطلاعات همزمان از دو جدول



T_E_X_A_S
سه شنبه 03 دی 1387, 11:30 صبح
من پروژه پایان ترمم تموم شده فقط یه مشکل داره

من بر نامم در مورد ترمینال اتوبوس هست

من اول باید اتوبوس رو تو ترمینال ثبت کنم به فرض یه ماشین ثبت کردیم از نوع بنز

بعد موقع رزرو بلیط یه قسمت داره که اتوبوس هایی که ثبت کردیمو انتخاب می کنیم که اتوبوس بنز که ثبت کردیمو انتخاب می کنیم و بلیط رو برای یه نفر رزرم می کنیم .

حالا من اومدم تو قسمت اتوبوس ها اتوبوس بنز که ثبت کرده بودم پاک کردم بعد رفتم اون بلیطی که رزرو کردم دیدم نوشته نوع ماشین بنز خوب ما که ماشین رو پاک کردیم باید این بلیط رزرو شده هم پاک به چون دیگه ماشین بنزی نداریم که این بخواد باهاش بره

حالا می خوام بدونم چه کار کنم وقتی ماشینی رو پاک کردیم هر بلیطی که رزرو شده بود برای این ماشین پاک بشه خود به خود

بعد می شه کاری کرد وقتی اسم ماشین هم ویرایش کردیم باز بلیط های رزرو شده برای این ماشین اسمشون به اسم جدید تغییر کنه

اطلاعات در DataGridView نمایش داده می شه

پایگاه دادمم Access هست

ممنون

h.jaza
سه شنبه 03 دی 1387, 15:38 عصر
دوست عزیز خیلی ساده باید بیای و یه متد برای انجام این کار پیاده سازی بکنه به این صورت که هر بار بعد از همچین تبپ ویرایشاتی، بیاد و side effect اونا رو روی باقی اعمال کنه.

T_E_X_A_S
سه شنبه 03 دی 1387, 16:43 عصر
میشه واضح تر توضیح بدی متوجه منظورتون نشدم

Amir Oveisi
سه شنبه 03 دی 1387, 17:32 عصر
تو طراحی database میتونی تنظیم کنی که در این حالات چکاری انجام بده؟
به جاش null بذاره؟
پاک کنه؟
یا تنظیمات دیگه

موفق لاشید
jooje

اوبالیت به بو
سه شنبه 03 دی 1387, 22:26 عصر
حالا من اومدم تو قسمت اتوبوس ها اتوبوس بنز که ثبت کرده بودم پاک کردم بعد رفتم اون بلیطی که رزرو کردم دیدم نوشته نوع ماشین بنز خوب ما که ماشین رو پاک کردیم باید این بلیط رزرو شده هم پاک به چون دیگه ماشین بنزی نداریم که این بخواد باهاش بره

با توجه به توضيحاتي كه در پيامتون ذكر كردين تويه جدول بليط هاتون يه فيلد بزارين به اسم BusName كه قراره توش نام اتوبوسي كه با بليط مورد نظر رزرو شده ذخيره بشه. حالا اگر بخواين با خذف اتوبوس تمامي بليط ها هم پاك بشن از اين دستور استفاده كنيد:


cmd.CommandText = "Delete from Table Where BusName= @Bus)";cmd.Parameters.Clear();
cmd.Parameters.Add("@Bus", SqlDbType.NVarChar).Value =InputValue;



بعد می شه کاری کرد وقتی اسم ماشین هم ویرایش کردیم باز بلیط های رزرو شده برای این ماشین اسمشون به اسم جدید تغییر کنه
ويرايش نيز همون اتفاق ميوفته:


cmd.CommandText = "Update set Field1=@Field1,Field2=@Field2 Where BusName=@Bus";
cmd.Parameters.Clear();
cmd.Parameters.Add("@Bus", SqlDbType.NVarChar).Value =InputValue;

h.jaza
سه شنبه 03 دی 1387, 22:38 عصر
تو طراحی database میتونی تنظیم کنی که در این حالات چکاری انجام بده؟
به جاش null بذاره؟
پاک کنه؟
یا تنظیمات دیگه
بله، البته این کاره ساده تر و راحتری هستش.

راه obalitjoOon (http://barnamenevis.org/forum/member.php?u=47457) جان هم، تقریبا بیان همون راهی که من گفتم.

با تشکر

T_E_X_A_S
چهارشنبه 04 دی 1387, 10:33 صبح
آقا خیلی ممنون

تو این کد :


cmd.Parameters.Add("@Bus", SqlDbType.NVarChar).Value =InputValue;ماله من Access هست من جای SqlDbType نوشتم OleDbType بعد NVarChar نداشت VarChar گزاشتم InputValue نداره چی جاش بزارم ؟

h.jaza
چهارشنبه 04 دی 1387, 10:42 صبح
InputValue منظور همون ورودیتونه.
چیزی که می خواین قرار بدین. (احتمالا اون سلول خاص از دیتا گرید ویو)

T_E_X_A_S
چهارشنبه 04 دی 1387, 12:20 عصر
آقا درست شد دمتون گرم

T_E_X_A_S
چهارشنبه 04 دی 1387, 12:43 عصر
من مشکل Delete حل شد اما برای Updtae من از کد زیر استفاده می کنم :

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mytable.mdb");
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "Update set اتوبوس=@اتوبوس Where اتوبوس=@bus";
cmd.Parameters.Clear();
cmd.Parameters.Add("@bus", OleDbType.VarChar).Value = bus;
cmd.Connection.Open();
cmd.ExecuteNonQuery();

ولی اررور می ده :


Syntax error in UPDATE statement.

h.jaza
چهارشنبه 04 دی 1387, 12:49 عصر
دوست عزیز سینتکست مشکل داره.
چرا در تعریف CommandText فارسی نوشتی؟

T_E_X_A_S
چهارشنبه 04 دی 1387, 17:08 عصر
من اتوبوس اسم فیلدم تو دیتا بیس هست