PDA

View Full Version : حذف از dgw و بانک



mohsenaminzare
جمعه 19 مهر 1387, 13:56 عصر
با سلام
در DATAGRIDVIEW یک یا چند سطر رو حذف می کنم ولی از بانک حذف نمی شه طبق کد زیر مشکل کجاست ؟

Dim con As New SqlConnection("Data Source=MOHSEN-NZSMFK41;Initial Catalog=hls;Integrated Security=True")
If datagird1.Rows.Count <> 0 Then
ds.Clear()
con.Open()
If Me.datagird1.SelectedRows.Count <> 0 Then
data_c = data_c - Me.datagird1.SelectedRows.Count
Dim tmp As DataGridViewRow
For Each tmp In Me.datagird1.SelectedRows

Dim cmd1 As New SqlCommand
cmd1.Connection = con
cmd1.CommandText = "DELETE FROM book_properties WHERE
id='" & tmp.Index & "'"
' command.CommandType = CommandType.StoredProcedure
' command.Parameters.AddWithValue("@id", Tmp.Index)
' command.ExecuteNonQuery()
cmd1.ExecuteNonQuery()
Me.datagird1.Rows.Remove(tmp)
Next
Else
MsgBox("هيچ کتابي انتخاب نشده است")
End If

Else
MsgBox("هيچ کتابي در کتابخانه وجود ندارد")
End If
' Me.SelectTableAdapter.Fill(Me.HlsDataSet1._select, libarary)
con.Close()

saeednadery
شنبه 20 مهر 1387, 09:39 صبح
با سلام
بعد از خط

cmd1.ExecuteNonQuery()

ديتا ست را update كن شايد مشكلت حل شود

mohsenaminzare
دوشنبه 22 مهر 1387, 23:17 عصر
نشد که نشد ؟

rooshan2008
دوشنبه 22 مهر 1387, 23:24 عصر
چه جوری اطلاعات رو داخل datagrid می ریزی؟؟؟؟

mohsenaminzare
دوشنبه 22 مهر 1387, 23:29 عصر
در زمان طراحی با استفاده از خود محیط ide

rooshan2008
سه شنبه 23 مهر 1387, 01:18 صبح
سلام
برای اینکه بهتر بتونم ارائه بدم این فایل رو که رو دانلود کن و در Query Analyzer اجرا کن(اول
Exteract کن)

24387

بعد از اجرای این فایل یک دیتا بیس به نام best ایجاد میشه و یک جدول داره به نام TblBook
و چند تا رکورد هم بهش اضافه می کنه
(توجه کنید که من در جدول TblBook یه فیلد ایدی دارم که افزایشی است و منحصر به فرد هست)

نکته :برای اینه بتونیم یک رکورد رو از جدول به راحتی حذف کنید بهتر هست که یک فیلد منحصربهفرد افزایش به بانک اضافه کنید البته این موضوع قرار دادی هست ولس بعد از یکم کار می بینید که الزامی میشه.اسم فیلد افزایشی و منحصر به فرد من ID هست.


من دو روش رو بهتون می گم خودم از روش دوم استفاده می کنم

روش اول همو روش ویزاردی هست و باید ارتباط رو از طریق datasource به دیتاگرید متصل کنید.





Dim Connecting As New System.Data.SqlClient.SqlConnection
Dim Command1 As New SqlClient.SqlCommand
Dim tb As New DataTable
Dim Data_Adabter As New SqlClient.SqlDataAdapter
Connecting.ConnectionString = "Persist Security Info=False;User ID=sa ;" + _
"Initial Catalog=best ; Data Source=(local)"

Connecting.Open()
Command1.Connection = Connecting
If DataGridView1.SelectedRows.Count > 0 Then

Dim R As DataGridViewRow
Dim sql As String

For Each R In DataGridView1.SelectedRows
sql = "delete from tblBook where id=" & R.Cells (0).Value
Command1.CommandText = sql
Command1.ExecuteNonQuery()
DataGridView1.Rows.Remove(R)
Next

End If



در کد بالا به خطی که بنفش شده توجه کنید من رکورد رو براساس مقدار فیلد منحصر به فرد پاک کردم.مقدار R.Cells (0).Value یعنی همون فیلد Id جدول TblBook که منحصر به فرد هست




روش دوم:

روش دوم روش دستی هست شما سلولهای دیتاگرید رو اول ایجاد می کنید(یه دیتا گرید در صفحه بگزارید و دوتا سلول ایجاد کنید)

تابع مربوط به لود کردن:







Private Sub LoadData()
Dim Connecting As New System.Data.SqlClient.SqlConnection
Dim Command1 As New SqlClient.SqlCommand
Dim tb As New DataTable
Dim Data_Adabter As New SqlClient.SqlDataAdapter
Connecting.ConnectionString = "Persist Security Info=False;User ID=sa ;" + _
"Initial Catalog=best ; Data Source=(local)"

Connecting.Open()
Command1.Connection = Connecting
Dim Sql = "select * from tblbook"

Command1.CommandText = Sql
Data_Adabter.SelectCommand = Command1
Data_Adabter.Fill(tb)
DataGridView1.Rows.Clear()
If tb.Rows.Count > 0 Then

DataGridView1.Rows.Add(tb.Rows.Count)
For i = 0 To tb.Rows.Count - 1
DataGridView1.Rows(i).Tag = tb.Rows(i)("id")
DataGridView1.Rows(i).Cells(0).Value = tb.Rows(i)("Bookname")
DataGridView1.Rows(i).Cells(1).Value = tb.Rows(i)("Publisher")
Next

End If

End Sub



حالا هر وقت این تابع رو صدا بزنید اون دیتا گرید شما رو پر می کنه خوبی که این روش داره این هست که شما می تونید هر تکنیکی که دارید به خوبی پیاده کنید
مثلاً به خطی که در کد بالا بنفش شده نگاه کنید..
منظورم از این کار این هست که مقدار فیلد منحصر به فرد فیلد IDجدول TblBookرو داخل tag
مربوط به اون سطر قرار بده..که بوسیله اون می تونید اطلاعات رو حذف کنید
این هم کد حذف روش دوم:



Dim Connecting As New System.Data.SqlClient.SqlConnection
Dim Command1 As New SqlClient.SqlCommand
Dim tb As New DataTable
Dim Data_Adabter As New SqlClient.SqlDataAdapter
Connecting.ConnectionString = "Persist Security Info=False;User ID=sa ;" + _
"Initial Catalog=best ; Data Source=(local)"

Connecting.Open()
Command1.Connection = Connecting
If DataGridView1.SelectedRows.Count > 0 Then

Dim R As DataGridViewRow
Dim sql As String

For Each R In DataGridView1.SelectedRows
sql = "delete from tblBook where id=" & R.Tag
Command1.CommandText = sql
Command1.ExecuteNonQuery()
DataGridView1.Rows.Remove(R)
Next

End If




چون که مقدار فیلد منحصر به فرد هر رکورد در Tag هر سطر قرار داره پس شر ط ما برای حذف رکورد قسمت بنفش شده کد بالا هست



به امید موفقیت شما.......................


محمد علی روشنفکر
Program_vb2006@yahoo.com

solmaz_shakuri
سه شنبه 23 مهر 1387, 18:27 عصر
من یک مشکل دارم میشه از بچه ها بصورت آن لاین کسی کمکم کنه من نمی تونم اطلاعات رو تو دیتا بیس اضافه یا کم کنم

rooshan2008
سه شنبه 23 مهر 1387, 22:43 عصر
اگه بلد باشم حتماً
توی فروم یا yahoo

solmaz_shakuri
چهارشنبه 24 مهر 1387, 17:00 عصر
تو یاهو ای در را میزارم تو سایت امید وارم کسی بیاد کمک من
samira_432@yahoo.com

mohsenaminzare
چهارشنبه 24 مهر 1387, 17:04 عصر
لطفا پیغام هایتون رو چک کنید.من در کنار این سایت همیشه تو مسنجر انلاین هستم.