Afshin160
چهارشنبه 07 فروردین 1387, 01: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.
پیشاپیش از مساعدت شما سپاس گذارم...
سه تا مشکل دارم لطفا منو راهنمایی کنید :
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.
پیشاپیش از مساعدت شما سپاس گذارم...