PDA

View Full Version : سوال: update کردن رکوردها در سی شارپ استفاده از (stored procedure (sql



n.hasani55@gmail.com
دوشنبه 31 خرداد 1395, 12:21 عصر
با سلام و خسته نباشید خدمت دوستان
من در استفاده از پروسیجر update در برنامم مشکل دارم.درواقع پروسیجذهای 4گانه من در sql به درستی کار می کنه اما در کدنویسی در سی سارپ اجرا نمی شه.ممنون می شم کمک کنید.

procedure update(sql)

ALTER proc [dbo].[tbl_entryinfo_update]
shstudent int,@name nvarchar(10),@family nvarchar(50),@code char(10),@adress nvarchar(50)
as
begin
update tbl_entryInfo
set fld_name=@name,fld_family=@family,fld_codeMeli=@co de,fld_address=@adress
where fld_shStudent=@shstudent
end

کدنو.یسی در برنامم برای اپدیت کردن رکوردهام به شرح زیر است:(در دیتا گرید دکمه ای با عنوان ویرایش قرار دادم(ستون 6) تا قابلیت آپدیت کردن رکوردهام و داشته باشم)

if (e.ColumnIndex==6)
{
txt_sh.Text = dataGridView1["colfldsh", e.RowIndex].Value.ToString();
txt_name.Text = dataGridView1["colfldname", e.RowIndex].Value.ToString();
txt_family.Text = dataGridView1["colfldfamily", e.RowIndex].Value.ToString();
txt_code.Text = dataGridView1["colfldcode", e.RowIndex].Value.ToString();
txt_adress.Text = dataGridView1["colfldadress", e.RowIndex].Value.ToString();
txt_sh.ReadOnly = true;
EDITMODE = true;
int shs = Convert.ToInt32(txt_sh.Text);
string name = txt_name.Text.Trim();
string family = txt_family.Text.Trim();
string code = txt_code.Text.Trim();
string adress = txt_adress.Text.Trim();

test_selectTableAdapter.Update(shs, name, family, code, adress);

این هم نمایی از برنامم
ممنون میشم راهنماییم کنید
140956


}

barnamenevisjavan
سه شنبه 01 تیر 1395, 10:58 صبح
با سلام و خسته نباشید خدمت دوستان
من در استفاده از پروسیجر update در برنامم مشکل دارم.درواقع پروسیجذهای 4گانه من در sql به درستی کار می کنه اما در کدنویسی در سی سارپ اجرا نمی شه.ممنون می شم کمک کنید.

procedure update(sql)

ALTER proc [dbo].[tbl_entryinfo_update]
shstudent int,@name nvarchar(10),@family nvarchar(50),@code char(10),@adress nvarchar(50)
as
begin
update tbl_entryInfo
set fld_name=@name,fld_family=@family,fld_codeMeli=@co de,fld_address=@adress
where fld_shStudent=@shstudent
end

کدنو.یسی در برنامم برای اپدیت کردن رکوردهام به شرح زیر است:(در دیتا گرید دکمه ای با عنوان ویرایش قرار دادم(ستون 6) تا قابلیت آپدیت کردن رکوردهام و داشته باشم)

if (e.ColumnIndex==6)
{
txt_sh.Text = dataGridView1["colfldsh", e.RowIndex].Value.ToString();
txt_name.Text = dataGridView1["colfldname", e.RowIndex].Value.ToString();
txt_family.Text = dataGridView1["colfldfamily", e.RowIndex].Value.ToString();
txt_code.Text = dataGridView1["colfldcode", e.RowIndex].Value.ToString();
txt_adress.Text = dataGridView1["colfldadress", e.RowIndex].Value.ToString();
txt_sh.ReadOnly = true;
EDITMODE = true;
int shs = Convert.ToInt32(txt_sh.Text);
string name = txt_name.Text.Trim();
string family = txt_family.Text.Trim();
string code = txt_code.Text.Trim();
string adress = txt_adress.Text.Trim();

test_selectTableAdapter.Update(shs, name, family, code, adress);

این هم نمایی از برنامم
ممنون میشم راهنماییم کنید
140956


}
در سی شارپ چه خطایی میگیرید؟
درضمن بهتره بجای اینکه به این صورت مقدار هارو از دیتاگرید بگیرید
dataGridView1["colfldsh", e.RowIndex].Value.ToString();
به این شکل مقدار های int رو بگیرید (مخصوص آیدی)
(int)dataGridView1.CurrentRow.Cell[0].Value;
معمولا اندیس 0 آیدی هستش حالا با توجه به جدول خودتون توی گرید اندیسش رو پیدا کنید.
برای فیلد های دیگه هم به همین صورت عمل کنید.
dataGridView1.CurrentRow.Cell[1].Value.ToString();
من احتمال میدم بخاطر عدم دریافت مناسب آیدی باشه

از بایندینگ سورس استفاده میکنید؟ اگر اره قبل از اپدیت کد زیر رو قرار بدید
BindingSource.EndEdit();

اگرم از لینک استفاده میکنید در نهایت باید از دیبی کانتکستون یه شی جدید بسازید.
db= new dbContext();