0

'instock'(データベースではタイプはdouble)というフィールドを更新しようとしました。ここで、itemcodeは値です(アクセスデータベースではタイプは長整数です)。しかし、それらを更新しようとすると、「count=2のこのoledbparamterCollectionのインデックス2が無効です」というエラーが表示されます。誰か助けてくれませんか?

 strSQL = "UPDATE tblitem set instock = ? where itemcode= ? "
    Using cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\POS.mdb"), _
           cmd As New OleDbCommand(strSQL, cn)

        cmd.Parameters.Add("?", OleDbType.Double)
        cmd.Parameters.Add("?", OleDbType.integer)
        cn.Open()
        For Each ls As ListViewItem In ListItems.Items
            If Not (ls.SubItems(1).Tag(0) = "n") Then

                cmd.Parameters(1).Value = (ls.SubItems(1).Tag - ls.SubItems(1).Text)
                cmd.Parameters(2).Value = ls.Tag
                cmd.ExecuteNonQuery()
            End If
        Next ls
        cn.Close()
    End Using

ありがとう、+このコマンドを実行しているときに、「double型のデフォルトメンバーが見つかりません」というエラーが発生します。

 strSQL = "UPDATE tblitem set instock = ? where itemcode= ? "
            Using cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\POS.mdb"), _
                   cmd As New OleDbCommand(strSQL, cn)

                cmd.Parameters.Add("?", OleDbType.Double)
                cmd.Parameters.Add("?", OleDbType.Double)
                cn.Open()
                For Each ls As ListViewItem In SalesListItems.Items
                    If Not (ls.SubItems(1).Tag(0) = "n") Then

                        cmd.Parameters(0).Value = (CDbl(ls.SubItems(1).Tag) + CDbl(ls.SubItems(1).Text))
                        cmd.Parameters(1).Value = Integer.Parse(ls.Tag)
                        cmd.ExecuteNonQuery()
                    End If
                Next ls
                cn.Close()
            End Using
4

1 に答える 1

1

インデックスは、ADO.NET1を含む.NETクラスライブラリで0ベースです。

Parameters(1)「2番目のパラメータ」をParameters(2)意味し、「3番目のパラメータ」を意味します(ここでは無効です)。


1これはすべてのコレクションに当てはまるわけではありませんが、最近使用されている最も一般的な規則です。たとえば、.NETに公開されているCOMであるOutlookオブジェクトモデルのコレクションは、引き続き1ベースです。

于 2012-08-26T21:00:28.983 に答える