PDA

View Full Version : نیاز به کد درج datagridview



rahil_2007
یک شنبه 17 شهریور 1387, 11:52 صبح
با سلام
من در برنامه ام یکسری منو طراحی کرده ام که اسامی جداول بانکم هستند. حالا میخام
با کلیک روی اسم هر جدول فرمی باز بشه که اطلاعات آن جدول رو توی datagridview نمایش
بده و امکان حذف و ویرایش هم داشته باشه.
در ضمن نمیخام برای هر جدول بانک یه فرم جدا باز بشه .

reza6384
یک شنبه 17 شهریور 1387, 16:44 عصر
Dim Conn As New SqlConnection("your connection string")
Dim CMD as String = "Select * From TableName"
Dim SDA As New SqlDataAdapter(CMD,Conn)
Dim DS as New DataSet
Dim Result As New DataTable("Result")
DS.Tables.Add(Result)
SDA.Fill(DS,Result)
DataGridView1.DataSource = DS
DataGridView1.DataMember = "Result


این کد رو باید توی event مربوطه بذارین.

saman_itc
یک شنبه 17 شهریور 1387, 17:04 عصر
می تونی کد های دوست مونو تو یه تابع بنویسی و TableName یه متغیر باشه که با کیک رو هر منو اسم جدول تو متغیر قرار بدی

reza6384
یک شنبه 17 شهریور 1387, 17:11 عصر
با تشکر از شما جناب Saman



Dim Conn As New SqlConnection("your connection string")
Dim CMD as String = "Select * From " & TxtTableName.Text
Dim SDA As New SqlDataAdapter(CMD,Conn)
Dim DS as New DataSet
Dim Result As New DataTable("Result")
DS.Tables.Add(Result)
SDA.Fill(DS,Result)
DataGridView1.DataSource = DS
DataGridView1.DataMember = "Result

rahil_2007
یک شنبه 17 شهریور 1387, 17:15 عصر
از جوابهاتون ممنونم
اما امکان update با کد زیر امکانپذیر نیست


dta.Update(ds, "mytable")

و خطای
Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
را میدهد.
منو راهنمایی کنید
با تشکر

rahil_2007
یک شنبه 17 شهریور 1387, 23:57 عصر
کدمن بصورت زیراست که امکان update را نمیدهدو error میگیرد:

PrivateSub Form6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Dim ds AsNew DataSet
Dim str AsString
Dim dta As SqlClient.SqlDataAdapter
Dim bs AsNew BindingSource
str = "SELECT otaghebazargani_sanaye_maaden.* FROM otaghebazargani_sanaye_maaden"
dta = New SqlClient.SqlDataAdapter(str, "Server=localhost;Initial Catalog=sanaye-bazargani;Integrated Security=True;Pooling=False")
ds.Clear()
dta.Fill(ds, "otaghebazargani_sanaye_maaden")
bs.DataSource = ds
bs.DataMember = "otaghebazargani_sanaye_maaden"
dgv1.DataSource = bs
end sub
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dta.Update(ds, "otaghebazargani_sanaye_maaden")
EndSub

کسی نیست جواب مارو بده

rahil_2007
دوشنبه 18 شهریور 1387, 10:51 صبح
با سلام
کدمن بصورت زیراست که امکان update را نمیدهدو error میگیرد:

PrivateSub Form6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Dim ds AsNew DataSet
Dim str AsString
Dim dta As SqlClient.SqlDataAdapter
Dim bs AsNew BindingSource
str = "SELECT otaghebazargani_sanaye_maaden.* FROM otaghebazargani_sanaye_maaden"
dta = New SqlClient.SqlDataAdapter(str, "Server=localhost;Initial Catalog=sanaye-bazargani;Integrated Security=True;Pooling=False")
ds.Clear()
dta.Fill(ds, "otaghebazargani_sanaye_maaden")
bs.DataSource = ds
bs.DataMember = "otaghebazargani_sanaye_maaden"
dgv1.DataSource = bs
end sub
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dta.Update(ds, "otaghebazargani_sanaye_maaden")
EndSub
لطفا منو راهنمایی کنید
باتشکر

reza6384
دوشنبه 18 شهریور 1387, 12:51 عصر
شما ابتدا DataSet تون رو از روی DataGridView باید Update کنید تا بعدش با Dataset بتونین Database رو Update کنید. اینکار رو هم بدون استفاده از دکمه می تونید انجام بدین. توی رویداد CellValueChanged اینکار رو انجام بدین. در ضمن من فکر کنم Query شما اشتباه باشه:


Select Table.* From Table


درستش اینجوریه:



Select * From Table


اگر هم خواستید کدش رو براتون می ذارم.

ali_md110
دوشنبه 18 شهریور 1387, 14:09 عصر
شما توی برنامتون جهت update-insert-delete-fill gridview باید روالهای عمومی جداگانه با آرگومان بنویسید و هنگام اجرای این ساب روتینها با توجه به درخواست ساب ارگومانها رو مقدار دهی کنید
مثلا

Private Sub fillgrid(ByVal strsql As String, ByVal strtbl As String, ByRef dg As DataGridView)

DS = New DataSet
AdapterParent = New SqlClient.SqlDataAdapter(strsql, Connection)
AdapterParent.Fill(DS, strtbl)
dg.DataSource = DS
AdapterParent.Dispose()
End Sub
البته باید متغیرهای زیر رو بصورت عمومی در یک ماژول تعریف کنید

Dim DS As DataSet
Dim AdapterParent As SqlClient.SqlDataAdapter
بعد صدا زدنشون رو بدین صورت انجام بدی

fillgrid("select * from ostan order by nostan", "ostan", datagridview1)
این یه مثال ساده بود