امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
updateو search و پر کدن مجدد DataGridView در vb.net2005
نویسنده پیام
افشين160 آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 3
تاریخ عضویت: بهمن ۱۳۸۶

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
Question  updateو search و پر کدن مجدد DataGridView در vb.net2005
باسلام ... باسلام ...
سه تا مشکل دارم لطفا منو راهنمایی کنید :
1- چگونگی refresh کردن DataGridView یا پر کردن مجدد DataGridView

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

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

مثلا " در مورد سوال 2 من یک جستجو دارم که برای هر فیلد از آن استفاده می کنم و فقط نام فیلدم را عوض می کنم در صورتی که یک بار جستجو کنم درست کار میکنه ولی اگر دوباره جستجو کنم پیغام خطا میده :
The connection was not closed. The connection's current state isopen


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

PrivateSubcmdsearch_Click(ByValsenderAsSystem.Object, 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- من از 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



پیشاپیش از مساعدت شما سپاس گذارم...
۰۷-فروردین-۱۳۸۷, ۱۲:۱۶:۲۸
ارسال‌ها
پاسخ
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #2
RE: updateو search و پر کدن مجدد DataGridView در vb.net2005
3) اون خطایی که میده که داره میگه که باید connection باز باشه.شما اومدی قبل دستور بازش کردی و بعد دستور بستیش. ولی این باز و بسته کردنو توضیحی کردی. خوب اجرا نمیشه. اگه قبلا connection رو باز کردی که هیچ وگرنه خطا میده دیگه.

2) در ضمن من جستجو هامو اینجوری انجام میدم:

Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\A.mdb;Persist Security Info=False")
Dim da As New OleDbDataAdapter("select * from st", cnn)

Dim dt As New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt

دوتا خط اولو توی فرم تعریف میکنم.دوتاخط دوم هم رو توی رویداد کلیک انجام میدم. هیچ مشکلی هم نداه.

1) اگه فقط refresh میخوای خب خودش یه تابع refresh داره.. ولی اگه میخوای داده ها رو دوباره از جدول بخونه.اونوقت datagrideview کاره ای نیست. اون اطلاعاتشو از datasource میخونه. شما باید datatable یا dataset تون رو دوباره fill کنید (البته باید اول clear کنید بعد fill کنید).همین. میتونید برای اطمینان datagrideview هم رو refresh کنید.

و در ضمن یه پیشنهاد.
به جای اونهمه استفاده از & از عملگر =& هم میتونی استفاده کنی.هم کدت کمتر میشه. هم کارت راحتتر میشه و از اسمای مخفف برای راحتی کار استفاده نمیکنی.

میزان رای دشمن است!
[تصویر:  cff100.png]
(آخرین ویرایش در این ارسال: ۰۷-فروردین-۱۳۸۷, ۱۳:۴۹:۵۸، توسط ajlajlajl.)
۰۷-فروردین-۱۳۸۷, ۱۳:۴۸:۳۲
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  سوال در مورد DataGridView park 1 2,963 ۱۵-شهریور-۱۳۸۸, ۱۰:۴۷:۱۳
آخرین ارسال: far_222000
at اجرای مجدد برنامه x7337x 2 2,539 ۳۱-مرداد-۱۳۸۸, ۲۰:۰۹:۴۲
آخرین ارسال: x7337x
  سوالاتی در مورد پرس و جوها در vb.net2005 park 2 2,508 ۱۰-خرداد-۱۳۸۸, ۱۹:۵۳:۳۵
آخرین ارسال: ajlajlajl
  ذخیره اطلاعات DataGridView در sql koorosh2004 1 6,067 ۲۰-اسفند-۱۳۸۷, ۱۹:۱۳:۲۵
آخرین ارسال: far_222000
  MaskTextBox برای DataGridView koorosh2004 4 4,434 ۱۹-اسفند-۱۳۸۷, ۱۴:۰۲:۳۲
آخرین ارسال: koorosh2004
Exclamation PropertyBag در vb.net2005 yeketaz 11 6,173 ۲۰-اسفند-۱۳۸۶, ۱۵:۴۴:۴۲
آخرین ارسال: yeketaz

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS