【问题标题】:Invalid Use of Property in VB6 Error. How to fix this?VB6 错误中的属性使用无效。如何解决这个问题?
【发布时间】:2012-09-01 18:11:53
【问题描述】:
Private Sub aTbBar_Change()
    Set con = New ADODB.Connection
    With con
        .CursorLocation = adUseClient
        .ConnectionString = "Provider=Microsoft.jet.oledb.4.0;persist security info=false;data source=" & App.Path & "\Event_Participants.accde"
        .Open
    End With


    Set rs = New ADODB.Recordset
    With rs
        Set .ActiveConnection = con
        .CursorType = adOpenDynamic
        .Source = "select * from Participants"
        .Open


        'check from table if user and pwd matches
        If rs.RecordCount <> 0 Then
            rs.MoveFirst
            While Not rs.EOF
                If rs!Bar_Code_No = Val(Me.aTbBar) Then
                    Me.aTbName = rs!Full_Name
                    Me.aTbSection = rs!Section
                    Me.aTbArrtime = Time()
                End If
                rs.MoveNext
            Wend
        End If

        .Close
        Set rs = Nothing

    End With

    'save to the database
    'check from table if user and pwd matches

    Set rs = New ADODB.Recordset
    With rs
        Set .ActiveConnection = con
        .CursorType = adOpenDynamic
        .LockType = adLockOptimistic
        .Source = "select * from Participants"
        .Open


        If rs.RecordCount <> 0 Then
            rs.MoveFirst
            While Not rs.EOF
                If rs!Bar_Code_No = Val(Me.aTbBar) Then
                    .Update
                    rs!Arr_Time = Me.aTbArrtime
                End If
                rs.MoveNext
            Wend
        End If

    End With

    rs.Close
    Set rs = Nothing

End Sub

当我输入文本框名称 aTbBar 时,总是发生 Invalid Use of Proper 错误 错误发生在 Me.aTbName = rs!Full_Name。你能帮我解决这个问题吗?对不起,我是这个论坛和 VB 的新手。我真的需要帮助

【问题讨论】:

  • 你能至少标出错误发生的源代码行吗?
  • 欢迎来到 StackOverflow。我没有看到这里被问到问题。您没有描述问题,没有标记有问题的代码部分,也没有提出任何问题。请编辑您的问题以提供一些信息,以便我们尝试帮助您解决您遇到的任何问题。
  • 错误发生在 Me.aTbName = rs!Full_Name
  • 看不出该代码有什么问题。请贴出Me.aTbName的定义。
  • 他的意思是让你从你的代码中发布 aTbName 的定义;它是如何声明的?通常,在 VB6 中,这是 DIM 语句,除非 aTbName 可能是表单上的文本框(或其他控件)的名称。

标签: properties vb6


【解决方案1】:

为 TextBox 触发的默认属性是 Text 属性。所以,如果有一个名为Text1 的文本框,那么这个语句:Text1 = "Hello" 将等价于Text1.Text = "Hello"。但我总是更喜欢在访问时使用属性名称和控件名称(即Text1.Text = "Hello")。

不管怎样,用这行来测试一下:Me.aTbArrtime.text = rs!Full_Name

我想到的另一件事是,如果您使用了一些其他组件,比如自定义的 TextBox 控件(而不是默认控件),并且在加载失败的情况下,VB 将替换控件(自定义制作文本框)在您的表单中有一个图片框。要检查这一点,请单击表单中的 TextBox 并查看它的属性。并查看控件类型是否为TextBox。如果是 PictureBox,请仔细检查项目中是否存在自定义文本框的 OCX 或 DLL。

关于您的 SQL 代码的一个小建议是,您可以在查询本身中包含比较,而不是遍历所有记录。例如:

.Source = "select * from Participants WHERE Bar_Code_No = " & Val(Me.aTbBar.Text) & " LIMIT 1"

如果匹配Bar_Code_No,这将返回一条记录。执行此查询后,您只需要检查它是否返回任何记录。如果是,则找到匹配项。否则,找不到匹配项。通过这种方式,您可以避免循环,如果表Participants 中的记录数非常大,可能会使您的程序无响应!

希望这会对您有所帮助。祝你好运:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多