VB6语法问题,“没有当前记录”错误

时间:2011-07-11 18:28:43

标签: sql syntax vb6 ado recordset

我正在使用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

有关如何解决此问题的任何建议?

2 个答案:

答案 0 :(得分:9)

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

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

EOF =文件结束=已达到记录集的结尾。

答案 1 :(得分:4)

基思是完全正确的,但我想提供更多细节

对于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