簡體   English   中英

在聯接的查詢上使用dataviewgrid更新數據庫

[英]Update database with dataviewgrid on joined query

使用dataviewgrid更改(主要是復選框/位字段)提供的信息更新我的SQL Server。

我可以填充我的dataviewgrid,如果我只使用一個表,甚至可以更新它,問題是我希望我的查詢具有三個表,以便顯示信息。

我嘗試復制一些教程並自行更改,但似乎沒有點擊。

自從我用VB編碼以來已經有一段時間了,所以還有。

到目前為止,我有:

Imports System.Data.SqlClient

Public Class Form1
    Dim myDA1 As SqlDataAdapter
    Dim myDataSet1 As DataSet
    Dim myDA2 As SqlDataAdapter
    Dim myDataSet2 As DataSet

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim con2 As SqlConnection = New SqlConnection("Data Source=CONNECTION STRING WORKS FINE")
        Dim cmd2 As SqlCommand = New SqlCommand("SELECT x1,y2,z1 from a inner join b where a.x1=b.x2", con2)

        con2.Open()

        myDA2 = New SqlDataAdapter(cmd2)
        Dim builder2 As SqlCommandBuilder = New SqlCommandBuilder(myDA2)

        myDataSet2 = New DataSet()
        myDA2.Fill(myDataSet2, "MyTable2")

        DataGridView2.DataSource = myDataSet2.Tables("MyTable2").DefaultView
        con2.Close()
        con2 = Nothing    
    End Sub

    Private Sub DataGridView2_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView2.CellContentClick
        Me.Validate()
        Me.myDA2.Update(Me.myDataSet2.Tables("MyTable2"))
        Me.myDataSet2.AcceptChanges()
    End Sub 
End Class

它是在基本查詢上更新的,是的,但是我需要在聯接查詢上使其更新。

正如我在評論中說的那樣,使用CommandBuilder時不能使用CommandBuilder 您需要為DataAdapter提供自己的Update,Insert和Delete命令。 確保使用包含源列名稱的Parameters.Add方法的重載。 這提供了DataAdapter的映射。 我在機器上使用數據庫來顯示代碼。 您可能要添加用於插入和刪除的命令。

Private da As SqlDataAdapter

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    da = New SqlDataAdapter
    Dim dt As New DataTable
    Dim query = "Select Article.ArticleID, Article.Title, Author.LastName From Article Inner Join Author on Article.AuthorID = Author.AuthorID"
    Using cn As New SqlConnection(My.Settings.PublishersConnection)
        Using cmd As New SqlCommand(query, cn)
            da.SelectCommand = cmd
            da.Fill(dt)
        End Using
    End Using
    DataGridView1.DataSource = dt
End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim Uquery = "Update Article Set Title = @Title Where ArticleID = @ID;"
    Dim dt As DataTable = CType(DataGridView1.DataSource, DataTable)
    Using cn As New SqlConnection(My.Settings.PublishersConnection)
        Using UCommand As New SqlCommand(Uquery, cn)
            UCommand.Parameters.Add("@Title", SqlDbType.VarChar, 50, "Title")
            UCommand.Parameters.Add("@ID", SqlDbType.Int, 4, "ArticleID")
            da.UpdateCommand = UCommand
            da.Update(dt)
        End Using
    End Using
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM