PDA

View Full Version : مشکل این کد چیه ؟



masoodz
سه شنبه 07 خرداد 1392, 00:26 صبح
SqlDataReader dr;
string st;
dr = sqlquery.f2("select * from tahvil");
if (dr.Read())
{
while (dr.Read()) ;
string s = dr.GetString(6);
int n = Convert.ToInt16(s);
++n;
st = n.ToString();
}
else
st = "1";

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

parvizwpf
سه شنبه 07 خرداد 1392, 00:32 صبح
احساس میکنم while صحیح نوشته نشده. یا واقعا توی کوئری چیزی برنمیگردونه.
برای رفتن به سطر آخر اگه جدولتون کلید داشته باشه خوب از تابع MAX استفاه کنید.

amir200h
سه شنبه 07 خرداد 1392, 00:38 صبح
myconnection.ConnectionString = "server=(local);database=name data baset;trusted_connection=yes";
myconnection.Open();

SqlCommand mycommand = new SqlCommand();
mycommand.Connection = myconnection;
SqlDataAdapter da = new SqlDataAdapter("SELECT MAX(ID)+1 FROM home", "server=(local);database=name databaset;trusted_connection=yes");
DataSet ds = new DataSet();
da.Fill(ds);
txtid.Text = ds.Tables[0].Rows[0][0].ToString();

masoodz
سه شنبه 07 خرداد 1392, 00:38 صبح
کوئری صحیحه چکش کردم . کلید داره میشه درباره تابع max توضیح بدی ؟
احساس میکنم while صحیح نوشته نشده. یا واقعا توی کوئری چیزی برنمیگردونه.
برای رفتن به سطر آخر اگه جدولتون کلید داشته باشه خوب از تابع MAX استفاه کنید.

parvizwpf
سه شنبه 07 خرداد 1392, 00:44 صبح
در واقع بیشترین مقدار کلید رو که برابر آخرین رکورد شماست برمیگردونه. حالا با داشتن کلید و یا همون مثالی که دوستمون در بالا زده برو مقادیر رکورد رو بخون . الان شما داری الکی روی تک تک رکوردها اشاره میدی و کلی زمان رو میگیری.

masoodz
جمعه 10 خرداد 1392, 17:17 عصر
دوست من بایستی حتما نوع داده عددی باشه ؟ اگه کاراکتر باشه عمل نمی کنه . درسته ؟

در واقع بیشترین مقدار کلید رو که برابر آخرین رکورد شماست برمیگردونه. حالا با داشتن کلید و یا همون مثالی که دوستمون در بالا زده برو مقادیر رکورد رو بخون . الان شما داری الکی روی تک تک رکوردها اشاره میدی و کلی زمان رو میگیری.

masoodz
جمعه 10 خرداد 1392, 17:26 عصر
دوستان کدم رو بصورت زیر تغییر دادم ولی باز همون ارور رو می ده

SqlDataReader dr1;
dr1 = sqlquery.f2("select MAX(ID) FROM tahvil");
string s = dr1.GetString(6);
int n = Convert.ToInt16(s);
++n;
st = n.ToString();
یه سوال : نتیجه دستور select من تو این قطعه کد رکورده یا مقدار ؟

masoodz
جمعه 10 خرداد 1392, 18:11 عصر
دوستان مشکل حل شد . ممنونم از راهنمایی همگی
علت این خطا : توی شرط if وقتی که دوباره دستور select رو می زدم بعد اون سریعا میرفتم از مقادیرش استفاده کنم که کار درستی نیست بایستی اول read می کردم بعدش ازشون استفاده می کردم .


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ای که در فصل خزانم دیده ای با پشت خم
این زمستان را نبین ما هم بهاری داشتیم