PDA

View Full Version : ثبت در datagridview



zohour
چهارشنبه 13 شهریور 1387, 19:18 عصر
سلام
نمی دونم چرا پست قبلیم حذف شد :ناراحت: از دوستان عزیز می خوام لطف کنن جواب سوال منو تو
این پست بدن.
در پست قبل دوستان کدی رو معرفی کردند که می شد سطر جدید رو به datagridvie اضافه کرد
اما این کد اول datasource رو تغییر می داد بعد به dataset اعمال میکرد حالا می خوام برعکس
این کار رو بکنم.

rika_vazy
پنج شنبه 14 شهریور 1387, 09:32 صبح
میشه سئوالت رو واضحتر بگی.

MORTEZA66
پنج شنبه 14 شهریور 1387, 10:44 صبح
سلام دوست عزيز اگه منظورت اينه كه بعد از هر ثبت در ديتا گريد هم ركورد اضافه شده نمايش پيدا كنه مي توني از اين كد استفاده كني كه البته همون كد جستجو مي باشد ولي منظور شما رو برآورده مي كنه

dset1.Dispose()
dset1 = New DataSet
dap1.SelectCommand.CommandText = sqltext
dset1.Clear()
dap1.Fill(dset1, "main_tlb")
mainDatagrid.DataSource = dset1
mainDatagrid.DataMember = "main_tlb"

MORTEZA66
پنج شنبه 14 شهریور 1387, 10:48 صبح
متغير هايي كه استفاده شده است
Public dset1 As New DataSet
Public dap1 As New SqlClient.SqlDataAdapter
main_tlb نام جدول مي باشد
sqltext نام متغيري كه دستور sql را در بر دارد كه حالا اون مي تونه هر دستور جستجويي باشد مثلا همه ركوردهاي جدول كه البته كار منطقي نيست!!!

MORTEZA66
پنج شنبه 14 شهریور 1387, 10:52 صبح
اينم براي اينكه اگر احيانا كار با dataadapter رو بلد نيستيد


dap1.SelectCommand = New SqlClient.SqlCommand
dap1.SelectCommand.Connection = conn ‘Connection name

conn متغيري از نوع sqlconnetion است كه connectionString دلخواه رو به اون نسبت داديد و اون رو Open كرديد
آخرين نكته اينكه كارهايي رو كه گفتم به ترتيب بايد انجام داد اول تعاريف و بعد هم ايجاد يعنيNew و بعد استفاده!

zohour
پنج شنبه 14 شهریور 1387, 18:21 عصر
سلام به همه

کد اول که جواب میده اول datasource رو تغییر میده بعد dataset



Dim strcon As String
Dim con As New SqlClient.SqlConnection
strcon = "Data Source=emam-1153d1c058\sqlexpress;Integrated Security=True"
con.ConnectionString = strcon
con.Open()
Dim inssql As String
Dim cmdsql As New SqlClient.SqlCommand
cmdsql.Parameters.Add("@stNo", SqlDbType.Int)
cmdsql.Parameters.Add("@nm", SqlDbType.VarChar)
cmdsql.Parameters.Add("@ave", SqlDbType.Decimal)
cmdsql.Parameters.Add("@unit", SqlDbType.Int)
cmdsql.Parameters.Add("@sex", SqlDbType.Bit)
cmdsql.Parameters("@stNo").Value = TextBox4.Text
cmdsql.Parameters("@nm").Value = TextBox2.Text
cmdsql.Parameters("@ave").Value = TextBox3.Text
cmdsql.Parameters("@unit").Value = TextBox1.Text
cmdsql.Parameters("@sex").Value = CheckBox1.Checked
inssql = "INSERT INTO table1(stNo,nm,ave,unit,sex)VALUES( @stNo,@nm,@ave,@unit,@sex)"
cmdsql.Connection = con
cmdsql.CommandText = inssql
cmdsql.ExecuteNonQuery()
MsgBox("اطلاعات ثبت شد")
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
Me.Table1TableAdapter.Fill(Me.DataSet1.Table1)
DataGridView1.Update()
con.Close()
DataGridView1.ReadOnly = True


اما کد دوم که میارم باید اول dataset رو تغییر میده بعد datasource اما ارور میده.



Dim strcon As String = "Data Source=emam-1153d1c058\sqlexpress ;Integrated Security=True"
Dim con As New SqlClient.SqlConnection(strcon)
Dim newmode As Boolean
Dim newrow As DataRow
newrow = Me.DataSet1.Tables("table1").NewRow
newmode = True
Call empty()
newmode = False
con.Open()
TextBox1.DataBindings.Add(New Binding("Text", Me.DataSet1, "table1.stNo"))
TextBox2.DataBindings.Add(New Binding("Text", Me.DataSet1, "table1.nm"))
TextBox3.DataBindings.Add(New Binding("Text", Me.DataSet1, "table1.ave"))
TextBox4.DataBindings.Add(New Binding("Text", Me.DataSet1, "table1.unit"))
CheckBox1.DataBindings.Add(New Binding("Checked", Me.DataSet1, "table1.Sex"))

If newmode = True Then
newrow("stNo") = Val(TextBox1.Text)
newrow("Name") = TextBox2.Text
newrow("Ave") = Val(TextBox3.Text)
newrow("Unit") = Val(TextBox4.Text)
newrow("Sex") = CheckBox1.Checked
DataSet1.Tables("table1").Rows.Add(newrow)
MsgBox("اطلاعات ثبت شد")
con.Close()
Me.Table1TableAdapter.Update(Me.DataSet1.Table1)
End If

MORTEZA66
جمعه 15 شهریور 1387, 00:27 صبح
سلام دوست من
روشي كه من برات توضيح دادم آسون ترين و در عين حال بهترين روش(البته به نظر خودم!) براي اتصال به بانك و كار كردن با اون هستش كه مي توني از اون براي همه دستورات SQL استفاده كني بهت توصيه مي كنم هميشه دنبال ساده ترين راهها باشي تا راههايي كه توي كتابها و فايل هاي آموزشي اومده است

zohour
پنج شنبه 04 مهر 1387, 08:32 صبح
سلام به همه

مشکل من با ثبت به صورت معمولی حل شد اما سوالی که هست اینه
اگه من فرضا شماره دانشجویی رو کلید تعریف کرده باشم باید برای
ثبت از یه کلید اصلی متفاوت استفاده کنم تنها راه که به فکرم رسید اول
جستجو و بعد ثبت بود. دوستان کمک کنند ؟؟