PDA

View Full Version : updateو search و پر کدن مجدد DataGridView در vb.net2005



Afshin160
سه شنبه 06 فروردین 1387, 23:55 عصر
باسلام ... باسلام ...
سه تا مشکل دارم لطفا منو راهنمایی کنید :
1- چگونگی refresh کردن DataGridView یا پر کردن مجدد DataGridView

2- نحوه ی درست بار و بسته کردن ‍‍‍connectionها

3- استفاده درست از ExecutenonQery

مثلا " در مورد سوال 2 من یک جستجو دارم که برای هر فیلد از آن استفاده می کنم و فقط نام فیلدم را عوض می کنم در صورتی که یک بار جستجو کنم درست کار میکنه ولی اگر دوباره جستجو کنم پیغام خطا میده :


The connection was not closed. The connection's current state isopen

و کد این جستجو به صورت زیر است :



PrivateSubcmdsearch_Click(ByValsenderAsSystem.Obje ct, ByValeAsSystem.EventArgs) Handlescmdsearchcompany.Click


DimsqlAsString


sql = "SELECT tel.CompanyName, tel.DIRECTOR, tel.TELEPHONE, tel.Fax, tel.ADDRESS, tel.DESCRIPTION FROM telwhere tel.CompanyName like "


sql = sql & "'%" & TxtCN.Text & "%';"


'sql = sql & " ortel.DIRECTOR like "


'sql = sql & "'%" & txtDI.Text & "%';"


objconnection.Close()


objconnection.Open()


DimobjdataadapterAsNewOleDbDataAdapter(sql, objconnection)


objdataadapter.Fill(objdataset, "tel")


DataGridView1.DataSource = objdataset


DataGridView1.DataMember = "tel"


DataGridView1.AlternatingRowsDefaultCellStyle.Back Color = Color.Thistle


EndSub




حال اگر فرم را یک بار باز و بسته کنم و دوباره جستجو کنم درسته . به عبارت بهتر فقط در یک فرم باز یک بار جستجو می کند .

حال میرسیم سر مشکل 3 .... کد زیر جهت updateکردن است :



PrivateSubcmdedit_Click(ByValsenderAsSystem.Object , ByValeAsSystem.EventArgs) Handlescmdedit.Click


DimstrAsString


str = "update tel setCompanyName="


str = str & "'"


str = str & TxtCN.Text & "',"


str = str & "DIRECTOR="


str = str & "'"


str = str & txtDI.Text & "',"


str = str & "TELEPHONE="


str = str & "'"


str = str & txttel.Text & "',"


str = str & "fax="


str = str & "'"


str = str & txtfax.Text & "',"


str = str & "ADDRESS="


str = str & "'"


str = str & txtaddr.Text & "',"


'str = str & "DIRECTOR="


'str = str & "'"


'str = str & txtaddr.Text & "',"


str = str & "DESCRIPTION="


str = str & "'"


str = str & txtdec.Text & "'"


str = str & "whereCompanyName="


str = str & "'"


str = str & TxtCN.Text


str = str & "'"


DimcmdAsSystem.Data.OleDb.OleDbCommand


cmd = NewSystem.Data.OleDb.OleDbCommand


cmd.CommandText = str


cmd.Connection = objconnection


'objconnection.Open()


cmd.ExecuteNonQuery()


DataGridView1.Update()


'objconnection.Close()


DataGridView1.Refresh()


End sub







اولا" در کد بالا در همان هنگام update شدن تغییرات در DataGridView نمایش داده نمیشود و اگر عمل دیگری مثل delet را انجام دهیم وبعد عمل update را انجام دهیم خطای زیر را میدهد :






ExecuteNonQuery requires an open and available Connection. Theconnection's current state is closed.









پیشاپیش از مساعدت شما سپاس گذارم...

kamranKoohi
چهارشنبه 07 فروردین 1387, 08:51 صبح
مشکل اول وسوم شما باید در هر بار Update کردن datatable دستور
dataGrid.datamember=datatable را مجددا اجرا کنید.

ودر مورد مشکل اول مشخص کنید که connection را کجا تعریف کرده اید؟

mshakeri
چهارشنبه 07 فروردین 1387, 10:03 صبح
شما اگر از sqldataadapter استفاده می کنید ابتدا برای refresh کردن datagrid
dataset1.clear سپس sqldataadapter.fill(dataset)
برای جست و جوی چند شاخصی نیز شما باید برای هر کدام یک رویه بنویسید و سپس از executenounquery استفاده کنید.
سال نو مبارک.

Afshin160
چهارشنبه 07 فروردین 1387, 10:26 صبح
سلام دوستان ...
1- من از dataset1 استفاده نمیکنم که بخواهم clear کنم .
من به صورت زیر تعریف کردم :
Dim objdataset AsNew DataSet
Dim objdataadapter AsNew OleDbDataAdapter(strsqlforgrid, objconnection
و به صورت زیر پر کردم
objdataadapter.Fill(objdataset, "tel
DataGridView1.DataSource = objdataset
2- connection به یک Mdb است
Public objconnection AsNew OleDbConnection(strconnection
متشکر از پیام شما عزیزان..
-----------------------------------------------------
به امید موفقیت.

jafari1
چهارشنبه 07 فروردین 1387, 16:27 عصر
سلام


objconnection.Open()
DimobjdataadapterAsNewOleDbDataAdapter(sql, objconnection)

جای دو دستو ر را عوض کنید