PDA

View Full Version : مبتدی: ایجاد شرط برای data gride



babak6655
یک شنبه 13 اسفند 1391, 20:33 عصر
من یه چک باکس تو دیتاگرید دارم که به دیتا بیس وصله میخوام اگه بگم اگه چک باکسه فعال شد به یه فیلدی به نام s یه واحد اضافه کنه . ولی نمیدونم شرطمو چی بذارم

if (h1DataGridViewCheckBoxColumn= true )
{

SqlConnection objcon = new SqlConnection("server=localhost;database=test2;" + "Integrated Security = True");
string query = " INSERT INTO Table_1 " + " (s)" + " values '" + 1 + "'";
SqlCommand objcom2 = new SqlCommand(query, objcon);
// objcom2.Parameters.AddWithValue("@h1", h1DataGridViewCheckBoxColumn);
// objcom2.Parameters.AddWithValue("@h2", h2DataGridViewCheckBoxColumn);
SqlDataAdapter objadapter = new SqlDataAdapter();
objadapter.InsertCommand = objcom2;
objcon.Close();
Form2_Load(null, null);

veniz2008
یک شنبه 13 اسفند 1391, 21:19 عصر
سلام. اگه منظور شما رو درست متوجه شده باشم:


if(Convert.ToBoolean(dataGridView1.Rows[0].Cells[4].Value) == true)

{

SqlDataAdapter da = new SqlDataAdapter("select s from Tabel_1",con);

DataTable dt = new DataTable();

da.Fill(dt);

int temp = Convert.ToInt32(dt.Rows[0][0].ToString()) + 1;

SqlConnection con = new SqlConnection("Data Source =(local);Initial Catalog=test1;Integrated Security=True");
sqlcommand cmd = new sqlcommand("insert into Tabel_1 (s) values(temp)",con);
con.open();
cmd.ExecuteNonQuery();
con.close();

}

کدها رو خودتون تایپ کنید. من ویزوال دم دستم نبود مستقیم تایپ کردم.

babak6655
دوشنبه 14 اسفند 1391, 14:38 عصر
سلام. اگه منظور شما رو درست متوجه شده باشم:


if(Convert.ToBoolean(dataGridView1.Rows[0].Cells[4].Value) == true)

{

SqlDataAdapter da = new SqlDataAdapter("select s from Tabel_1",con);

DataTable dt = new DataTable();

da.Fill(dt);

int temp = Convert.ToInt32(dt.Rows[0][0].ToString()) + 1;

SqlConnection con = new SqlConnection("Data Source =(local);Initial Catalog=test1;Integrated Security=True");
sqlcommand cmd = new sqlcommand("insert into Tabel_1 (s) values(temp)",con);
con.open();
cmd.ExecuteNonQuery();
con.close();

}

کدها رو خودتون تایپ کنید. من ویزوال دم دستم نبود مستقیم تایپ کردم.

نه خیر جواب نداد:متفکر:
فکر کنم به نوع check box گیر میده نسبت به شرطمون (convert . boolean )

error اینه
Unable to cast object of type 'System.Windows.Forms.DataGridViewCheckBoxColumn' to type 'System.IConvertible'.

veniz2008
دوشنبه 14 اسفند 1391, 14:46 عصر
کدی رو که تایپ کردید و خطا میده رو بذارید.

babak6655
دوشنبه 14 اسفند 1391, 14:52 عصر
کدی رو که تایپ کردید و خطا میده رو بذارید.


if(Convert.ToBoolean(dataGridView1.Rows[1].Cells[3].Value)==true)

{

SqlConnection objcon = new SqlConnection("server=localhost;database=test2;" + "Integrated Security = True");
SqlCommand objcom = new SqlCommand("insert into Tabel_1 (s) values(temp)", objcon);
SqlDataAdapter da = new SqlDataAdapter("select s from table_1", objcon);
DataTable dt = new DataTable();
int temp = Convert.ToInt32(dt.Rows[0][0].ToString()) + 1;
objcon.Open();
objcom.ExecuteNonQuery();
objcon.Close();
}

babak6655
دوشنبه 14 اسفند 1391, 14:57 عصر
[QUOTE=babak6655;1714872][CSHARP]

این یه برنامه حضور غیاب هست گفتم از پایگاه بخونه ذو دو تا فیاد هم تو دیتا گرید check box گداشتم که اگه تیک خورد یه فیلدی به نام s را یکی اضافه کنه
اینم برنامم هست
http://uplod.ir/haag84jt3yw0/test2.rar.htm

veniz2008
دوشنبه 14 اسفند 1391, 15:08 عصر
کد درست هست، فقط آیا Rows 1 (یعنی دومین سطر) و Cells 3 (یعنی چهارمین ستون )وجود داره؟ .تو سی شارپ اندیس ها از 0 شروع میشه.
این مساله رو بررسی کنید. اگر بازم خطا داد، یه عکس از گرید بگیرید و بذارید.

babak6655
دوشنبه 14 اسفند 1391, 15:12 عصر
[QUOTE=veniz2008;1714886]کد درست هست، فقط آیا Rows 1 (یعنی دومین سطر) و Cells 3 (یعنی چهارمین ستون )وجود داره؟ .تو سی شارپ اندیس ها از 0 شروع میشه.
این مساله رو بررسی کنید. اگر بازم خطا داد، یه عکس از گرید بگیرید و بذارید.[/QUOTE

خود برنامه رو فرستادم

babak6655
دوشنبه 14 اسفند 1391, 15:34 عصر
[QUOTE=babak6655;1714890][QUOTE=veniz2008;1714886]کد درست هست، فقط آیا Rows 1 (یعنی دومین سطر) و Cells 3 (یعنی چهارمین ستون )وجود داره؟ .تو سی شارپ اندیس ها از 0 شروع میشه.
این مساله رو بررسی کنید. اگر بازم خطا داد، یه عکس از گرید بگیرید و بذارید.[/QUOTE

یه سوال این کد آدرس فیلد دیتابیس که باید یکی اضافه بشه؟

int temp = Convert.ToInt32(dt.Rows[0][0].ToString()) + 1;

veniz2008
دوشنبه 14 اسفند 1391, 15:56 عصر
یه سوال این کد آدرس فیلد دیتابیس که باید یکی اضافه بشه؟


int temp = Convert.ToInt32(dt.Rows[0][0].ToString()) + 1;

به دیتاتیبل نگاه کن ببین چه چیزی داخلش قرار میگیره؟.(من اومدم یه select به جدولی که فیلد s رو داره زدم و مقدار فعلیش رو درآوردم و بعدش هم یک واحد بهش اضافه کردم).
موفق باشید.

babak6655
دوشنبه 14 اسفند 1391, 21:22 عصر
یه سوال این کد آدرس فیلد دیتابیس که باید یکی اضافه بشه؟

به دیتاتیبل نگاه کن ببین چه چیزی داخلش قرار میگیره؟.(من اومدم یه select به جدولی که فیلد s رو داره زدم و مقدار فعلیش رو درآوردم و بعدش هم یک واحد بهش اضافه کردم).
موفق باشید.

منطورم اینکه حتما da.rows[0] [0] n باشه ؟
یا آدرس فیلد s را از پایگاه داده بدم؟

veniz2008
دوشنبه 14 اسفند 1391, 21:54 عصر
منطورم اینکه حتما da.rows[0] [0] n باشه ؟
یا آدرس فیلد s را از پایگاه داده بدم؟
ببینید دوست عزیز، دستور select s from Tabel_1 ،فقط یه ستون برمیگردونه و اگر فقط یه مقدار برای s در جدول وجود داشته باشه پس 1 سطر هم برمیگردونه. یعنی
Rows[0][0]. صفر اول یعنی اولین سطر و صفر دوم یعنی اولین ستون.
من از گفته های شما مبنی بر اینکه به مقدار s میخواید 1 واحد اضافه کنید اینطور برداشت کردم که s در جدول شما فقط یک مقدار داره.

babak6655
دوشنبه 14 اسفند 1391, 22:20 عصر
ببینید دوست عزیز، دستور select s from Tabel_1 ،فقط یه ستون برمیگردونه و اگر فقط یه مقدار برای s در جدول وجود داشته باشه پس 1 سطر هم برمیگردونه. یعنی
Rows[0][0]. صفر اول یعنی اولین سطر و صفر دوم یعنی اولین ستون.
من از گفته های شما مبنی بر اینکه به مقدار s میخواید 1 واحد اضافه کنید اینطور برداشت کردم که s در جدول شما فقط یک مقدار داره.

اینو گرفتم
ولی نکته اینجاست که جدول dta gride من تعدادی سطر و ستون داره که هر گدوم یک check box داره نمیشه برای هر خط شرط گداشت
این کد من اشتباه هست

private void Form2_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'test2DataSet.Table_1' table. You can move, or remove it, as needed.
this.table_1TableAdapter.Fill(this.test2DataSet.Ta ble_1);

con = new SqlConnection("server=localhost;database=test2;" + "Integrated Security = True");

datd = new SqlDataAdapter("select s from table_1", con);

}

private void button2_Click(object sender, EventArgs e)
{
Close();
}

private void button1_Click(object sender, EventArgs e)
{
int i, j;
for (i = 0; i <= 20; i++)
{
for (j = 1; j <= 2; j++)

if (Convert.ToBoolean(dataGridView1.Rows[i].Cells[j].Value) == true)
{

DataTable dt = new DataTable();
int temp = Convert.ToInt32(dt.Rows[i][j].ToString()) + 1;
SqlCommand objcom = new SqlCommand("insert into table_1 (s) values(temp)", con );
con.Open();
objcom.ExecuteNonQuery();
con.Close();
}
}
}

babak6655
دوشنبه 14 اسفند 1391, 22:30 عصر
عکس فرم نمایش
http://upload.tehran98.com/img1/3kjujvhcyl0yw3p2pqxw.jpg