-1

これらのコードから、VB から MS Access に永久にデータを編集、追加、保存したいと考えています。何十もの Visual Basic プロジェクトを作成しましたが、まったく進展がありません。

Public Class Form1

    Private Sub ProductDescBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProductDescBindingNavigatorSaveItem.Click

        Me.Validate()
        Me.ProductDescBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.INVSYSDataSet)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'TODO: This line of code loads data into the 'INVSYSDataSet.ProductDesc' table. You can move, or remove it, as needed.
        Me.ProductDescTableAdapter.Fill(Me.INVSYSDataSet.ProductDesc)
    End Sub
End Class

問題は、「無効な操作の例外が処理されませんでした」が表示されることです。更新には有効なUpdateCommandコードが必要ですMe.TableAdapterManager.UpdateAll(Me.INVSYSDataSet)

DataSource が必要な場合は、別の VB プロジェクトからコードを提供できます。

* 2 番目のコードを更新しました。SQL のヘルプをお願いします * srry bout を更新しました

パブリック クラス Add_Products

Private myConString As String
Private con As OleDb.OleDbConnection = New OleDb.OleDbConnection
Private Dadapter As OleDb.OleDbDataAdapter
Private DSet As DataSet
Private DSet2 As DataSet
Private ConCMD As OleDb.OleDbCommand
Dim strSql As String
Dim inc As Integer
Dim MaxRows As Integer

Private Sub Add_Products_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    myConString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\larca\Documents\Visual Studio 2010\Projects\march16\march16\obj\x86\Debug\INVSYS.mdb"
    con.ConnectionString = myConString
    con.Open()
    Dadapter = New OleDb.OleDbDataAdapter("select * from ProductDesc", con)
    DSet = New DataSet
    Dadapter.Fill(DSet, "ProductDesc")
    DataGridView1.DataSource = DSet.Tables("ProductDesc")

    con.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try
        Using con = New OleDb.OleDbConnection(myConString)
            con.Open()
            Dim cmd As OleDb.OleDbCommand
            cmd = New OleDb.OleDbCommand("UPDATE ProductDesc", con)
            Dadapter.UpdateCommand = cmd
            Dadapter.Update(DSet, "ProductDesc")
        End Using
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

クラス終了

4

1 に答える 1

1

エラー メッセージは、DataAdapter の Update コマンドを定義していないことを示しています。DbDataAdapter.Update メソッドからDataSet, String :If INSERT, UPDATE, or DELETE statements have not been specified, the Update method generates an exception.

これを解決するには、UpdateCommand次のOleDbCommandようにオブジェクトに更新ロジックを割り当てます。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   Using con = New OleDb.OleDbConnection(myConString)
       con.Open()
       Dim cmd As OleDbCommand
       cmd = New OleDbCommand("<your update SQL goes here>", con)
       DAdapter.UpdateCommand = cmd 
       Dadapter.Update(DSet, "ProductDesc")
   End Using

サブ終了

SQL を に入れ、それをプロパティOleDbCommandに割り当てるだけです。UpdateCommand

詳細な例については、このリンクを参照してください (SQL インジェクション攻撃を回避するために、例のようにパラメーター化されたクエリを使用してください): OleDbDataAdapter.UpdateCommand プロパティ

于 2013-03-16T07:15:57.887 に答える