0

テキストボックスを使用してアクセスデータベースを検索し、一致をコンボボックスに表示していますが、正常に動作していますが、ユーザーが一致しないエントリを入力するとエラーが発生します。

これは私のコードです:

Private Sub TextBox9_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox9.TextChanged
    Try
        ComboBox3.DataSource = Me.MyDataset.Items.Select("ItemName like '%" & TextBox9.Text & "%'")


        ComboBox3.Update()

        If ComboBox3.Items.Count <> 0 Then

            ComboBox3.DroppedDown = True
            Me.Cursor = Cursors.Default
            Cursor.Show()
        Else

            If ComboBox3.DroppedDown = True Then
                ComboBox3.DroppedDown = False
            End If

        End If

        If TextBox9.Text = "" Then
            ComboBox3.DroppedDown = False
        End If
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Error")
    End Try
End Sub   

ユーザーが間違ったエントリを入力した場合、または一致しない場合、次のエラーが表示されます。パラメータ名インデックス vb.net

問題は、このエラーを処理する方法です

4

1 に答える 1

0

ComboBox にアイテムをバインドする前に、データソースにアイテムが含まれているかどうかを確認する必要があります。

MyDatasetタイプが何であるかはわかりませんがOption Infer On、次のようにするとうまくいくはずです。それ以外の場合は、Dim dataSource =行を変更してタイプを含める必要があります。

    Private Sub TextBox9_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox9.TextChanged
        Try

            Dim dataSource = Me.MyDataset.Items.Select("ItemName like '%" & TextBox9.Text & "%'")

            If dataSource.Items.Count > 0 Then
                ComboBox3.DataSource = datasource
                ComboBox3.Update()
            End If

            If ComboBox3.Items.Count <> 0 Then
                ComboBox3.DroppedDown = True
                Me.Cursor = Cursors.Default
                Cursor.Show()
            Else
                If ComboBox3.DroppedDown = True Then
                    ComboBox3.DroppedDown = False
                End If
            End If

            If TextBox9.Text = "" Then
                ComboBox3.DroppedDown = False
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Error")
        End Try
    End Sub   
于 2013-08-11T10:56:58.913 に答える