PDA

View Full Version : سوال: مشکل با HasRows در SqlDataReader



esagraphic
دوشنبه 09 شهریور 1394, 12:32 عصر
سلام به همه دوستان من دقیقا به مشکلی که بر خوردم اینه اول میام top1 از یک شماره پلاک را انتخاب میکنم که مشکلی نیست انتخاب میشه اما اینجا قبلش من یک شرکت گذاشتم اگر رفت انتخاب کرد و هیچی بر نگردوند همون شماره پلاک اگه موجود نبود میاد یک کاری میکنه فرم اولی مثلاً باز میکنه اما اگه شماره پلاک را پیدا کرد میره مثلاً فرم دوم را باز میکنه مشکل من دقیقا اینه اگه شماره پلاک این شکلی باشه 54444 اونو پیدا میکنه و مشکلی نیست میره فرم دومی را باز میکنه اما اگه قبلش یک صفر باشه این شکلی 06666 در حالی که موجود هم است باید بره مثلاً فرم دوم باز کنه میاد دقیقا اولین شرکت منو اجرا میکنه فرم اول باز میشه با این عدد 0 مشکل داره نمیدونید باید چه کنم




if (txtcarno.Text=="")
{
MessageBox.Show("لطفا شماره پلاک موتر را وارد کنید ");
}
else
{
using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\haic.mdf;Integrated Security=True;Connect Timeout=30"))
{
SqlCommand command = new SqlCommand("select top 1 * from weight where Truckno='" + Convert.ToInt32(carnodisp.Text) + "' order by id desc", con);
con.Open();
SqlDataReader read = command.ExecuteReader();


if (read == null || !read.HasRows)
{
if (this.totype == "full")
{
this.Hide();
full1st f1st = new full1st(txtcarno.Text);
f1st.ShowDialog();
f1st.BringToFront();
this.Close();
}
else if (this.totype == "empty")
{
this.Hide();
Empty1st e1st = new Empty1st(txtcarno.Text);
e1st.ShowDialog();
e1st.BringToFront();
this.Close();
}

rg_BlackRose
دوشنبه 09 شهریور 1394, 14:08 عصر
سلام

در این تبدیلی که انجام میدین،

where Truckno='" + Convert.ToInt32(carnodisp.Text) + "'


چون رشته به عدد تبدیل میشه اون صفر قبل اعداد حذف میشه (666 <- "0666"). قائدتا اگر نوع پلاک در دیتابیس از نوع عددی باشه، موقع ذخیره این رشته "0666" باید خطا پرتاب بشه(چون دارید اقدام به ذخیره رشته در توع عددی میکنید).
ولی اگر نوع داده پلاک در دیتابیس از نوع رشته هست. پس نیازی به تبدیل بالا نیست.

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

موفق باشید

esagraphic
دوشنبه 09 شهریور 1394, 14:19 عصر
سلام

در این تبدیلی که انجام میدین،

where Truckno='" + Convert.ToInt32(carnodisp.Text) + "'


چون رشته به عدد تبدیل میشه اون صفر قبل اعداد حذف میشه (666 <- "0666"). قائدتا اگر نوع پلاک در دیتابیس از نوع عددی باشه، موقع ذخیره این رشته "0666" باید خطا پرتاب بشه(چون دارید اقدام به ذخیره رشته در توع عددی میکنید).
ولی اگر نوع داده پلاک در دیتابیس از نوع رشته هست. پس نیازی به تبدیل بالا نیست.

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

موفق باشید


سلام دقیقا نوعیت پلاک ماشین تو دیتابیس من nvarchar(50 است و بعدا منم متوجه شدم اونو از حالت تبدیل بیرون کردم حالت اصلی ثبت کردم یعنی به عدد تبدیل نکردم ولی بازم مشکل دارم مشکلم اینه اگه من مثلا یه بار ماشین میاد رو باسکول پلاکش را با صفر ذخیره میکنم بعد بعد میاد وزن خالی اش را بگیره اگه صفر بزنم مشخصات قبلی که اسم و نوع بار همه میاد اما اگه پلاک ماشین را به 0344 ذخیره کنم بعدا که دوباره بیاد خالی یا پر اش را بگیرم اونو نمیاره شرط دگه من اجرا میشه مشکلش نمیدونم چیه

esagraphic
دوشنبه 09 شهریور 1394, 14:33 عصر
مشکل حل شد اونو تبدیل به int کردم