PDA

View Full Version : سوال: مشکل در ورود اطلاعات با data grid view



reza69
شنبه 28 بهمن 1391, 22:32 عصر
سلام
کد من چه مشکلی داره برای ورود اطلاعات به جدول؟ میخوام داده های جدول رو insert update delete select کنم.

SqlCommand com = new SqlCommand("insert into trfactor(codefactor,codekala,tedad) values(@a,@b,@c)", con);
com.Parameters.AddWithValue("@a", dataGridView1.Columns[0]);
com.Parameters.AddWithValue("@b", dataGridView1.Columns[1]);
com.Parameters.AddWithValue("@c", dataGridView1.Columns[2]);
SqlDataAdapter da = new SqlDataAdapter(com);
SqlCommandBuilder combldr = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "trfactor");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "trfactor";

Amir.pc_66
شنبه 28 بهمن 1391, 22:38 عصر
به نظرم مشکل شما جایی که مقادیر رو میدین
یعنی چی که به جای مثلا a@ ستون صفرم دیتاگریدم رو بذار
چه چیز ستون صفرم رو بذاره : نوع، رنگ ، فونت ، و غیره . . . . .

josh simpson
شنبه 28 بهمن 1391, 22:42 عصر
در کدی که شما نوشتید در قسمت dataGridView1.Columns[0] می خواستید یک ستون کامل رو که شاید 1000000 سطر داشته باشه رو داخل یک فیلد یک تیبل قرار بدید که مسلما همچین چیزی امکان پذیز نیست و به جای اون می تونید از کد زیر استفاده کنید.



dataGridView1.Rows[0].Cells[0].Value



که از سطر 0 مقدار سلول 0 رو بر می داره.

sendelbor
یک شنبه 29 بهمن 1391, 00:12 صبح
در کدی که شما نوشتید در قسمت dataGridView1.Columns[0] می خواستید یک ستون کامل رو که شاید 1000000 سطر داشته باشه رو داخل یک فیلد یک تیبل قرار بدید که مسلما همچین چیزی امکان پذیز نیست و به جای اون می تونید از کد زیر استفاده کنید.



dataGridView1.Rows[0].Cells[0].Value



که از سطر 0 مقدار سلول 0 رو بر می داره.



دوست من فکر می کنم باید نوع داده ای که میخواد ذخیره بشه باید مشخص کنیم.رشته باشه یا ....

saeedgholami
یک شنبه 29 بهمن 1391, 00:33 صبح
برای استخراج اطلاعات از یک عنصر در دیتا گریدویو
طبق گفته دوستمون از این کد استفاده کنید

dataGridView1.Rows[0].Cells[0].Value.tostring();

reza69
یک شنبه 29 بهمن 1391, 10:16 صبح
برای استخراج اطلاعات از یک عنصر در دیتا گریدویو
طبق گفته دوستمون از این کد استفاده کنید

dataGridView1.Rows[0].Cells[0].Value.tostring();

این کدی که گذاشتید تنها سطر اول رو وارد جدول میکنه من میخوام چند سطر رو با هم وارد جدول کنم.

veniz2008
یک شنبه 29 بهمن 1391, 10:38 صبح
این کدی که گذاشتید تنها سطر اول رو وارد جدول میکنه من میخوام چند سطر رو با هم وارد جدول کنم.
سلام. ساده ترین راه (البته نه بهترین راه) اینه که درون یه حلقه for که به تعداد سطرهای گرید هست عمل درج انجام بشه ولی بهتر اونه که داخل حلقه اول تمام رکوردها رو درون یه کوئری بریزید و بیرون از حلقه با یکبار وصل شدن به دیتابیس عمل درج رو انجام بدید.(عبارت "درج همزمان چندین رکورد" رو جستجو کنید).
موفق باشید.

reza69
یک شنبه 29 بهمن 1391, 10:48 صبح
سلام. ساده ترین راه (البته نه بهترین راه) اینه که درون یه حلقه for که به تعداد سطرهای گرید هست عمل درج انجام بشه ولی بهتر اونه که داخل حلقه اول تمام رکوردها رو درون یه کوئری بریزید و بیرون از حلقه با یکبار وصل شدن به دیتابیس عمل درج رو انجام بدید.(عبارت "درج همزمان چندین رکورد" رو جستجو کنید).
موفق باشید.
ببینید این کد درسته؟ ولی درست عمل نمی کنه و فقط سطر اول رو داخل جدول می بره.

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
SqlCommand com = new SqlCommand("insert into trfactor(codefactor,codekala,tedad) values(@a,@b,@c)", con);
com.Parameters.AddWithValue("@a", dataGridView1.Rows[i].Cells[0].Value);
com.Parameters.AddWithValue("@b", dataGridView1.Rows[i].Cells[1].Value);
com.Parameters.AddWithValue("@c", dataGridView1.Rows[i].Cells[2].Value);
SqlDataAdapter da = new SqlDataAdapter(com);
SqlCommandBuilder combldr = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "trfactor");
dataGridView1.DataSource = ds;
}

veniz2008
یک شنبه 29 بهمن 1391, 11:04 صبح
بعد از ارسال پارامترها باید command رو اجرا کنید یعنی :

con.open();
com.executenonquery();
con.close();

بعد از ارسال پارامترها اون کدهایی رو که نوشتید پاک کنید و سه خطی رو که گذاشتم خودتون تایپ کنید(حتما تایپ کنید چون من همشو با حروف کوچیک نوشتم).
موفق باشید.

reza69
یک شنبه 29 بهمن 1391, 11:18 صبح
بعد از ارسال پارامترها باید command رو اجرا کنید یعنی :

con.open();
com.executenonquery();
con.close();

بعد از ارسال پارامترها اون کدهایی رو که نوشتید پاک کنید و سه خطی رو که گذاشتم خودتون تایپ کنید(حتما تایپ کنید چون من همشو با حروف کوچیک نوشتم).
موفق باشید.
کدوم خط ها رو پاک کنم؟من که از con استفاده نکردم.

veniz2008
یک شنبه 29 بهمن 1391, 13:04 عصر
کدوم خط ها رو پاک کنم؟من که از con استفاده نکردم.
منظور از con همون کانکشن استرینگ شما هست. آخر کوئری insert کانکشن رو ذکر کردید (con ). برای اجرای دستور ابتدا باید کانکشن رو باز کنید و بعد از اجرای دستور هم کانکشن رو ببندید.
5 خط آخر رو حذف کنید و اون 3 خط رو قرار بدید.
موفق باشید.

reza69
یک شنبه 29 بهمن 1391, 14:24 عصر
منظور از con همون کانکشن استرینگ شما هست. آخر کوئری insert کانکشن رو ذکر کردید (con ). برای اجرای دستور ابتدا باید کانکشن رو باز کنید و بعد از اجرای دستور هم کانکشن رو ببندید.
5 خط آخر رو حذف کنید و اون 3 خط رو قرار بدید.
موفق باشید.
در انتها کدم اینجوری شد عملیات به درستی انجام می شه.

SqlConnection con = new SqlConnection("data source=.;initial catalog=anbar;integrated security=true;");
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
try
{
SqlCommand com = new SqlCommand("insert into trfactor(codefactor,codekala,tedad) values(@a,@b,@c)", con);
com.Parameters.AddWithValue("@a", Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value));
com.Parameters.AddWithValue("@b", Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value));
com.Parameters.AddWithValue("@c", Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value));
con.Open();
com.ExecuteNonQuery();
con.Close();

}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
MessageBox.Show("done");
dataGridView1.DataSource = null;

فقط میخوام در انتهای عملیات دیتاگرید خالی بشه .خط آخر که گذاشتم این کار رو نمیکنه چه کدی بذارم؟

reza69
یک شنبه 29 بهمن 1391, 14:27 عصر
درست شد.

dataGridView1.DataMember = null;