Удалить из базы данных доступа на основе выбранного элемента в комбинированном списке данных - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть комбинированный список данных, использующий VB2010 и доступ MS в качестве базы данных. Когда я нажимаю кнопку, выбранный элемент в комбинированном списке будет удален из базы данных и больше не будет отображаться в комбинированном списке ...

1 Ответ

1 голос
/ 03 февраля 2012

Вот один из способов сделать это:

Создайте форму с именем ComboDeleteExample с помощью поля со списком и кнопки. Чтобы создать базу данных, я просто поместил таблицу продуктов базы данных SQL Server AdventureWorks в Microsoft Access. Если у вас нет SQL Server или Adventure, просто создайте таблицу Product с двумя столбцами; ProductID (int) и имя varchar (25).

Скопируйте этот код в форму:

Public Class ComboDeleteExample

    Const _ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp\Database1.accdb;"
    Private dtProducts As New System.Data.DataTable("Products")

    Private Sub PopulateCombo()
        Using conn As New System.Data.OleDb.OleDbConnection(_ConnectionString)
            conn.Open()
            Dim sqlCmd As New System.Data.OleDb.OleDbCommand("select * from product", conn)
            Dim dr As System.Data.OleDb.OleDbDataReader = sqlCmd.ExecuteReader()
            dtProducts.Load(dr)
        End Using

        ComboBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", dtProducts, "ProductId", True, DataSourceUpdateMode.OnPropertyChanged))
        ComboBox1.DisplayMember = "Name"
        ComboBox1.DataSource = dtProducts
    End Sub

    Private Sub ComboDeleteExample_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        PopulateCombo()
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If ComboBox1.SelectedItem IsNot Nothing AndAlso TypeOf (ComboBox1.SelectedItem) Is System.Data.DataRowView Then
            Using conn As New System.Data.OleDb.OleDbConnection(_ConnectionString)
                conn.Open()
                Dim row As System.Data.DataRowView = DirectCast(ComboBox1.SelectedItem, System.Data.DataRowView)
                Dim sqlcmd As New System.Data.OleDb.OleDbCommand(String.Format("delete * from product where productid={0}", row.Item("ProductID")), conn)
                If sqlcmd.ExecuteNonQuery() = 1 Then
                    row.Delete()
                    dtProducts.AcceptChanges()
                End If
            End Using
        End If
    End Sub
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...