PDA

View Full Version : فیلتر کردن و به روز رسانی



majidnazarister
جمعه 13 خرداد 1390, 18:43 عصر
سلام.کلی گشتم ولی کدها یا دارای ایراد بودند یا مناسب من نبودند یا اینکه نسبت به زمان نامانوس بودند.خواهشن رو هوا حرف نزن اگه بلدی کد بنویس.
مراحل اتصال و بازیابی به بانک به این صورته:


OleDbConnection con = newOleDbConnection();
OleDbCommand com = newOleDbCommand();
OleDbDataAdapter ado = newOleDbDataAdapter();
DataTable dt = newDataTable();



con.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\\ado\\db1.accdb";
com.Connection=con;
com.CommandText = "SELECT * FROM t1";
ado.SelectCommand=com;
ado.Fill(dt);
dataGridView1.DataSource=dt;

که در بخش اپدیت به اینصورته:



int n=Convert.ToInt32(textBox4.Text);
com.CommandText = "UPDATE t1 SET name=@p2,lname=@p3 WHERE (scod=@p1);";
com.Parameters.Clear();
com.Parameters.AddWithValue("@p1", n );
com.Parameters.AddWithValue("@p2",textBox5.Text );
com.Parameters.AddWithValue("@p3", textBox6.Text );
con.Open();
com.ExecuteNonQuery();

con.Close();
con.Dispose();


که بانک دارای سه فیلد به صورت scod-name-lname است که اولی دارای نوع auto است.
مشکلات :
1) اپدیت نمیشه . فکر کنم برای نوع auto باشه که البته اونو نمیشه تغییر داد یعنی نباید تغییر بدم. برای اعمال اپدیت کجا مشکل داره؟
2)برای اینکه برنامه همون جا جذول رو به روز کنه چه کدی نیاز داره .اینکه برنامه رو برای اعمال تغییرات از اول اجرا نکنیم.
برای فیلتر کردن کد زیر رو نوشتم ولی میگه خطای نحوی داره:




((DataTable)this.dataGridView1.DataSource).Default View.RowFilter = "name=" + cboFilterType.SelectedText ;


3) برای فیلتر کردن بر اساس مثلا نام چی نیاز داره؟

majidnazarister
جمعه 13 خرداد 1390, 22:34 عصر
com.CommandText = "UPDATE t1 SET name=@p1,lname=@p2 WHERE scod=@p3";
com.Parameters.Clear();
com.Parameters.AddWithValue("@p1",textBox5.Text );
com.Parameters.AddWithValue("@p2",textBox6.Text );
com.Parameters.AddWithValue("@p3", textBox4.Text );
con.Open();
com.ExecuteNonQuery();
con.Close();
textBox4.Text = " ";
textBox5.Text = " ";
textBox6.Text = " ";
dt.Clear();
dataGridView1.DataSource = dt;
com.CommandText = "SELECT * FROM t1";
ado.SelectCommand = com;
ado.Fill(dt);
dataGridView1.DataSource = dt;
cboFilterType.DataSource = dt;
این پاسخ 1و2 البته یک اپدیت واقعی نیست ولی کار راه اندازه و برای سوال 3 هم:
((DataTable)this.dataGridView1.DataSource).Default View.RowFilter = "scod=" + cboFilterType.SelectedValue ;

در قسمت valuemember,displaymember به ترتیب scod,name رو قرار دهید که این مشکل رو داره وقتی چندین نام یکسان وجودداشته باشند یکی رو نمایش می ده و بر اساس نام هم نیست بر اساس کده.
من همجنان منتظرم؟
1)اپدیت کردن datagridview بر اساس کد بالا؟
2)فیلتر بر اساس نام و رشته؟