PDA

View Full Version : کم شدن ارقام پس از هر بار ثبت شدن در DataBase



T_E_X_A_S
پنج شنبه 30 آبان 1387, 20:43 عصر
(من از Access براي DataBase استفاده می کنم )
برنا مم در مورد ترمينال اتوبوس هست من تو يکي از فرم هام اول اتوبوس ها رو ثبت مي کنم که يکي از گزينه هاش ظرفيت هست که موقع ثبت هر اتوبوس يه تعداد ظرفيت هم بايد براش ثبت کنم حالا تو يه فرم ديگه که دارم يعني رزرو بليط من وقتي يه بليط رزرو کردم مي خوام 1 دونه از تعداد اون ظرفيت کم بشه مثلا اگه من ظرفيت رو موقع ثبت 70 زدم يه بليط که رزرو کردم بار دوم بنويسه 69 ، من يه Button گزاشتم رو فرم رزرو بليط مي خوام روش کليک کردم تعداد ظرفيت باقيمانده رو بنويسه .

razavi_university
پنج شنبه 30 آبان 1387, 22:26 عصر
بهتره در داخل جدوالتون اين موضوع را قرار بديد، يعني موقعي كه يك اتوبوس براي سفر داخل برنامه قرار مي‌گيره علاوه بر مقصد و راننده و ... يك فيلد عددي ظرفيت هم داشته باشه و به ازاي هر مسافري كه رزرو مي كنه يكي از اين ظرفيت كم بشه و مجدد ظرفيت جديد ذخيره شه

T_E_X_A_S
جمعه 01 آذر 1387, 00:11 صبح
دوست عزیز من کدشو نیاز دارم توضیح هم دادم برنامم به چه شکل هست کسی بتونه با توجه به توضیحاتی که دادم راهنمایی کنه که چه کدهایی و چطوری استفاده کنم ممنون می شم و باید کلا چی کار کنم

linux
جمعه 01 آذر 1387, 01:02 صبح
دوست عزیز من کدشو نیاز دارم توضیح هم دادم برنامم به چه شکل هست کسی بتونه با توجه به توضیحاتی که دادم راهنمایی کنه که چه کدهایی و چطوری استفاده کنم ممنون می شم و باید کلا چی کار کنم
شما در دیتابیس توضیح ندادید که چه جداولی دارید. ولی باید جدولهای زیر را داشته باشید.

1- اتوبوسهای( شماره اتوبوس ، ظرفیت و ....)
2- فروش بلیط( شماره اتوبوس، تاریخ، تعداد بلیط فروخته شده)

حالا شما با یک دستور ساده می توانید مجموع بلیط فروخته شده برای یک تاریخ خاص برای یک اتوبوس را بدست بیاورید از جدول اولی هم که ظرفیت را دارید، مانده اینها برابر هست با ظرفیت مانده

T_E_X_A_S
جمعه 01 آذر 1387, 01:21 صبح
شما چرا همش توضیح فارسی می دید

کد هایی که باید به کار ببرمو توضیح بدید و باید چه کار کنم

razavi_university
جمعه 01 آذر 1387, 01:30 صبح
دوست عزيز وقتي كسي ساختار فيلدهاي و جداول برنامه شما را نميدونه، و شما هم اونها رو نميگيد چطور انتظار داريد كدي براي جدولي كه نمي دونيم چيه بنويسيم؟

T_E_X_A_S
جمعه 01 آذر 1387, 02:56 صبح
ساختارش به این شکل هست :

برای فرمی که اتوبوس ثبت می شه

1 - اتوبوس (کد ماشین ,نوع ماشین,تاریخ ساخت,پلاک,ظرفیت)

http://i36.tinypic.com/wjf72c.jpg

اینم عکس فرم رزرو بلیطم هست می بینید من یه Button گزاشتم می خوام روش بزنم تعداد فیلد ظرفیت تو دیتا بیس اتوبوس رو نشون بده . البته باید یه کاری کنیم که هر یه بلیطی که رزرو شد یکی از اون تعداد ظرفیت کم شه

majid325
جمعه 01 آذر 1387, 05:06 صبح
شما چرا همش توضیح فارسی می دید

کد هایی که باید به کار ببرمو توضیح بدید و باید چه کار کنم

ببين دوست عزيز ، اين جوري كه نميشه كمكي به شما كرد...
بايد يه توضيح كوچيكي درباره روش كار با داده هات بگي كه ما بدونيم به چه روشي بهت بگيم،براي كار با ديتا چندين روش هست با چندين آبجكت.
شما بايد بگي از ديتاست استفاده ميكني يا هر چيز ديگه اي كه ما با همون بهت بگيم، اصلا برنامه در شبكه هست يا نه(اين خيلي مهم هست)،
در كل همون جوري كه اطلاعات رو ثبت ميكني بايد موقع ثبت، اطلاعات مربوط به مقدار ظرفيت رو با مقدار (مقدار فيلد ظرفيت - 1) آپديت كني.

T_E_X_A_S
جمعه 01 آذر 1387, 11:09 صبح
من که گفتم DataBasam اکسس هست و از اون استفاده می کنم فیلد هاشم بالا گفتم تحت شبکه اینا هم نیست دیگه چی رو بگم ؟ می خواین اصلا برنامه رو بزارم ؟

linux
جمعه 01 آذر 1387, 11:16 صبح
شما چرا همش توضیح فارسی می دید

کد هایی که باید به کار ببرمو توضیح بدید و باید چه کار کنم
چه انتظار نابجایی دارید! شما هنوز در اصلی ترین مفاهیم برنامه نویسی و پایگاه داده لنگ می زنید، بهتر قبل از هر کاری یک کتاب خوب بخوانید و تمرین هاش را حل کنید، چون این چیزهایی که شما می خواهید در همه کتابها بررسی شده اند.

T_E_X_A_S
چهارشنبه 13 آذر 1387, 13:56 عصر
این کد کجاش اشتباس :


OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mytable.mdb");
OleDbCommand cmd = new OleDbCommand();
OleDbDataReader dr;
con.Open();
cmd.Connection = con;
dr = cmd.ExecuteReader();
dr.Read();
int menha = int.Parse(dr.GetValue(5).ToString());
menha = menha - 1;
this.Text = menha.ToString();
cmd.CommandText = "UPDATE mytable SET ظرفيت = '" + menha.ToString() + "' WHERE نوع_ماشين = '" + comboBox1.SelectedItem.ToString() + "'";
dr.Close();
con.Close();

majid325
پنج شنبه 14 آذر 1387, 04:09 صبح
چه error ي ميده ؟
چند تا پيشنهاد:
سعي كن اسمهاي فيلد ها رو انگليسي انتخاب كني.
سعي كن با ديتاست كار كني.

در نگاه كلي كه من اشتباه syntax ي نميبينم ولي اونجور كه تو اين كد من ميبينم چند مسئله مبهم هست:
اول ببخشيد كه اگه بعضي از مسائل پايه اي رو عنوان ميكنم.
هميشه مد نظر داشته باش كه كدت به ترتيب ، خط به خط اجرا ميشه:
شما زماني كه از اين كد dr = cmd.ExecuteReader(); استفاده ميكنيد يعني ميخواين فراميني كه يه وسيله اين كد :

cmd.CommandText = "UPDATE mytable SET ظرفيت = '" + menha.ToString() + "' WHERE نوع_ماشين = '" + comboBox1.SelectedItem.ToString() + "'";

صادر كردين اجرا بشن ، خوب در اين حالت اول بايد فرامين صادر بشن و بعد كد اجرا بشه كه شما بر عكس انجام ميدي و اتفاقي نميفته ، حالا اگه من منظور كد شما رو خوب متوجه نشدم شما بگو كه ميخواي با قطعه كد بالا چي كار رو انجام بدي؟

s_ahmadneya
پنج شنبه 14 آذر 1387, 08:06 صبح
دوست عزیر اقای تکزاس راه حل پست بالایی دقیقا" درست است لطفا" اجرا و نتیجه را مشاهده فرمایید.
شما به یک شی اول مقدار می دهید بعد از ان کار می خواهید کد زیر را قبل از dr.close()ببری درست می شود

dr = cmd.ExecuteReader();
dr.Read();

razavi_university
جمعه 15 آذر 1387, 00:45 صبح
چند تا پيشنهاد:
سعي كن اسمهاي فيلد ها رو انگليسي انتخاب كني.
سعي كن با ديتاست كار كني.

در مورد پيشنهاد اول من هم با شما موافقم، البته بهتره انگليسي باشه و فينگليش نباشه
در مورد پيشنهاد دومتون ميشه دليلتون رو بفرماييد؟
چرا DataSet؟

T_E_X_A_S
جمعه 15 آذر 1387, 01:10 صبح
این کدی که گزاشتم هیچ ارروری نمی ده فقط عمل نمی کنه من یه:


MessageBox.Show(menha.ToString()); گزاشتم زیر کد :


this.Text = menha.ToString();وقتی رو دکمه می زنم تو اون پیغامی که می ده کم می کنه ولی نمی دونم چرا تو دیتا بیس تغییری ایجاد نمی شه .

بعد در مورد اسم فارسی فیلد ها این آخرین مشکل برنامه من هست و تا اینجاشو با همین فیلد های فارسی پیش بردم می خوام دیگه اینم فارسی باشه .

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

razavi_university
جمعه 15 آذر 1387, 02:17 صبح
يكي از مشكلاتي كه با فيلدهاي فارسي در هنگام توسعه براتون پيش مياد تفاوت در كد پيج ها مختلف در ويندوزهاي مختلف است، مثلا در حرف ي كه حالتهاي مختلفي دارد ي - ی

T_E_X_A_S
شنبه 16 آذر 1387, 21:52 عصر
کسی نیست کمک کنه بگه کجای کد های من اشتباس ؟

s_ahmadneya
شنبه 16 آذر 1387, 22:19 عصر
کسی نیست کمک کنه بگه کجای کد های من اشتباس ؟
کد زیر باید کار کند:متفکر::متفکر:


OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mytable.mdb");
OleDbCommand cmd = new OleDbCommand();
OleDbDataReader dr;
con.Open();
cmd.Connection = con;
////////////////////////////
int menha = int.Parse(dr.GetValue(5).ToString());
menha = menha - 1;
this.Text = menha.ToString();
cmd.CommandText = "UPDATE mytable SET ظرفيت = '" + menha.ToString() + "' WHERE نوع_ماشين = '" + comboBox1.SelectedItem.ToString() + "'";

//////////////////////////


dr = cmd.ExecuteReader();
dr.Read();
dr.Close();
con.Close();

T_E_X_A_S
یک شنبه 17 آذر 1387, 21:40 عصر
آقا این کدی که شما نوشتی این Error رو می ده

Error 1 Use of unassigned local variable 'dr'


به این خطم گیر می ده :

int menha = int.Parse(dr.GetValue(5).ToString());