VB6搜索记录集

时间:2015-06-23 02:44:33

标签: ms-access vb6

我正在运行一个程序,通过Access数据库验证文本字段的输入。这是一个示例代码:

Private Sub TextBox_LostFocus()
If TextBox <> "" Then
    With recordset
        .Index = "PrimaryKey"
        .Seek "=", TextBox
        If .NoMatch Then
            MsgBox "Record does not exist!", vbExclamation, Me.Caption
            TextBox = ""
            TextBox.SetFocus
        End If
    End With
End If
End Sub

我总是得到“PrimaryKey”不是索引的错误。我需要帮助。

几乎忘记了。这是表单加载时的代码:

Private Sub Form_Load()
CenterForm
Me.Top = 0
Set database = OpenDatabase("p:\location\file.mdb")
Set recordset = database.OpenRecordset("table")
End Sub

2 个答案:

答案 0 :(得分:0)

在数据库内部,您必须将字段PrimaryKey定义为索引。

请在此处查看Microsoft的文档:

https://support.office.com/en-us/article/Create-or-remove-a-primary-key-07b4a84b-0063-4d56-8b00-65f2975e4379

关于搜索/索引检查......试试这个:

试试这个:

Private Sub TextBox_LostFocus()
If TextBox <> "" Then
  If NOT recordset.Supports(adIndex) THEN MSGBOX("AdIndex not supported")
IF NOT recordset.Supports(adSeek) Then MSGBOX("adSeek not supported")

    With recordset
        .Index = "PrimaryKey"
        .Seek "=", TextBox
        If .NoMatch Then
            MsgBox "Record does not exist!", vbExclamation, Me.Caption
            TextBox = ""
            TextBox.SetFocus
        End If
    End With
End If
End Sub

这将告诉您使用您提供的提供商是否不允许搜索或索引。切换OLE提供程序可能是你的答案。

答案 1 :(得分:0)

  

可以在没有索引的情况下完成搜索方法吗?如果是这样,怎么样?

不,寻求需要的指数。但是你可以遍历所有记录;根据记录的数量,这可能是一个严重的性能问题。