1

わかりました、まずねえ。

技術的には、私はこのサイトを初めて使用しますが、数年間リソースとして使用しており、あなたの助けが必要になったのは困惑したからです.

Db をクエリし、目的のボックスに文字列を入力して表示する VB スクリプトがあります。

私の問題は、Update SQL コマンドを使用しようとすると、完了しますが、手動でチェックすると DB が更新されないことです。

Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Data.mdb';")
Dim da As New OleDbDataAdapter
Dim dt As New DataTable()
Dim cmd As New OleDbCommand
da.SelectCommand = New OleDbCommand("update FDSL set Host=@Host, Owner=@Owner where ID = @ID", con)


    Dim paramID As New OleDbParameter
    paramID.ParameterName() = "@ID"
    paramID.Value() = Label8.Text
    da.SelectCommand.Parameters.Add(paramID)
    Dim paramHost As New OleDbParameter
    paramHost.ParameterName() = "@Host"
    paramHost.Value() = TextBox1.Text
    da.SelectCommand.Parameters.Add(paramHost)
    Dim paramOwn As New OleDbParameter
    paramOwn.ParameterName() = "@Owner"
    paramOwn.Value() = TextBox4.Text

    da.SelectCommand.ExecuteNonQuery()

    MessageBox.Show("Record Updated! ", "Update Status", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Refresh()
    con.Close()

最後に .tostring を使用してパラメーターも試しましたが、これも機能しません。

----------解決済み----------------

この支援について@Gord Thompsonに感謝する必要がありますが、再コーディングすることで問題を解決しました。

        Dim str As String
    str = "update FDSL set Hostname=@Hostname, Owner=@Owner where ID=@id"
    Dim cmd As New OleDbCommand(str, con)
    cmd.Parameters.AddWithValue("@Hostname", TextBox1.Text)
    cmd.Parameters.AddWithValue("@Owner", TextBox2.Text)
    cmd.Parameters.AddWithValue("@ID", textbox6.Text)
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()

これで正しく動作するようになりました。再度ご協力いただきありがとうございます。

4

2 に答える 2

1

Jet.OLEDBパラメーターの名前ACE.OLEDB無視するため、CommandText に表示される正確な順序でパラメーターを指定する必要があります。あなたの場合、ブロックを実行する順序を変更する必要があるので、次に、次に、とします。.Parameters.Add()@Host@Owner@ID

于 2013-11-14T14:29:50.000 に答える