【问题标题】:VB6 syntax problem, "no current record" errorVB6语法问题,“没有当前记录”错误
【发布时间】:2011-07-11 18:28:43
【问题描述】:

我正在使用 sql server 2005 在 vb6 中编写一个应用程序。这是我当前的代码。

Dim Sqlstring As String
Dim rstCurrentTicket As Recordset

Sqlstring = "Select SubmiterName, LastViewDate, Department, Description, Urgency, SubmitDate, ResolvedDate from TroubleTickets where Title ='" + Trim(TicketComboBox.Text) + "'"
Set rstCurrentTicket = cnnSel.OpenRecordset(Sqlstring)


NameText.Text = rstCurrentTicket!SubmiterName
DeptText.Text = rstCurrentTicket!Department
Me.DescriptionText = rstCurrentTicket!Description
Me.UrgencyText = rstCurrentTicket!Urgency

当我运行此代码时,我收到一条错误代码:

“运行时错误:'3021'” “没有当前记录”

它突出显示了这行代码:

NameText.Text = rstCurrentTicket!SubmiterName

关于如何解决这个问题的任何建议?

【问题讨论】:

  • 您是否验证过您的 SQL 语句确实返回了结果?

标签: sql syntax vb6 ado recordset


【解决方案1】:

您的记录集没有结果。您可以按如下方式检查:

If Not rstCurrentTicket.EOF Then
    NameText.Text = rstCurrentTicket!SubmiterName
    DeptText.Text = rstCurrentTicket!Department
    Me.DescriptionText = rstCurrentTicket!Description
    Me.UrgencyText = rstCurrentTicket!Urgency
End If

EOF = End Of File = 已到达记录集的末尾。

【讨论】:

    【解决方案2】:

    Keith 完全正确,但我想提供更多细节

    对于 ADO 和 DAO,您有一个文件开始标记 (BOF) 和一个文件结束标记 (EOF)。记录是这样返回的

    [BOF]
    [Record one] <-
    [Record two]
    ...
    [Record n]
    [EOF]
    

    箭头指向光标所在的位置。光标指向返回的记录集中的哪条记录。

    当没有记录返回时,你得到这个

    [BOF]
    [EOF]
    

    因此,如果设置了两个标志,则没有记录。如果设置了 EOF,则您没有记录,或者您已移过最后一条记录。 (您通过此命令将该光标移动到下一条记录。)

    rstCurrentTicket.MoveNext
    

    您也可以查看

    If (rstCurrentTicket.EOF and rstCurrentTicket.BOF) Then
         msgbox "There were no Trouble Tickets found."
    
    Else
        'Do something here.
    
    End If
    

    【讨论】:

      猜你喜欢
      • 2017-04-16
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多