PDA

View Full Version : سوال: ثبت مقدار جدید در یک فیلد با توجه به مقدار قبلی آن ...



ghasem110deh
چهارشنبه 08 بهمن 1393, 10:57 صبح
سلام
من میخوام فیلد موجودی رو با توجه به مقدار واریزی جدید ذخیره کنم ...
موجودی = موجودی قبل + واریز
البته آخرین موجودی (که در جدول ثبت شده)
---------------------------------
از کد من درآوردی زیر استفاده کردم :
ولی به Reader گیر میده (عکس ضمیمه)

private void button4_Click(object sender, EventArgs e) {
int a = 0;
// try
// {
SqlConnection con1 = new SqlConnection("Data Source=.;Initial Catalog=Shopping;Integrated Security=True");
SqlCommand com1 = new SqlCommand();
com1.CommandText = "SELECT TOP 1 Mojodi FROM TMojojdi ORDER BY Id DESC";
con1.Open();
SqlDataReader dr = com1.ExecuteReader();
if (dr.Read())
{
a = Int32.Parse(dr[0].ToString());
}
con1.Close();
// }
// catch
// {


// }


try
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Shopping;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandType = CommandType.Text;
com.CommandText = "Insert Into TMojojdi (Id,Mojodi,Ad,Kam) Values (@i,@m,@a,@k)";
com.Parameters.AddWithValue("@i", textBox4.Text);
com.Parameters.AddWithValue("@m", a = a + int.Parse(textBox5.Text));
com.Parameters.AddWithValue("@a", textBox5.Text);
com.Parameters.AddWithValue("@k", 0);
con.Open();
com.ExecuteNonQuery();
con.Close();
con.Dispose();
MessageBox.Show("Insert Mojojdi Ok", "Mojodi");
ShowGrid2();
}
catch
{


}
}

ali.b.y
چهارشنبه 08 بهمن 1393, 14:03 عصر
سلام. پس عکست کو!!!

به نظر میاد کوئری مشکل داره.تجربه ی من نشون داده که نمی شه در قسمت Data Source از . استفاده کرد
به جاش بنویس SQLEXPRESS\. یا MSSQLSERVER\. ببین چطور میشه.
---
البته اگر عنوان درست را بخوای رجیستری را باز کن بعد برو به مسیر زیر
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\R oot

بعد بگرد به دنبال کلید(پوشه) ای که با عبارت $LEGACY_MSSQL شروع شده باشه
هر عبارتی که بعد از علامت $ بود می شود اسم نمونه سرور سی کو ال
مثلا برای من اینطوریه
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\R oot\LEGACY_MSSQL$SQLEXPRESSR2

که عبارت SQLEXPRESSR2 را من باید برای DATA SOURCE قرار بدهم

ghasem110deh
چهارشنبه 08 بهمن 1393, 14:21 عصر
سلام. پس عکست کو!!!


سلام
عکس توی پست دیگه !
-------------------------
کلا همیشه از این همین کانکشن استفاده می کنم ! (الان هم فرم های دیگه برنامه هیچ مشکلی ندارن و دستورات CRUD و ... روی دیتابیس اعمال می شن)
نمی دونم چشه ، چی میگه !

ghasem110deh
چهارشنبه 08 بهمن 1393, 17:42 عصر
علت این خطا چیه ؟
:عصبانی++:

ghasem110deh
چهارشنبه 08 بهمن 1393, 18:23 عصر
چقدر ضایع بازی آخه :(
------------------------
اینو یادم رفته بنویسم :

com.Connection = con;

حالا یه سوال دیگه ، کدهایی که واسه جمع نوشتم من درآوردیه !
کوئری درست و حسابی مربوط به جمع هست ، مثلا با : (SUM)