我正在使用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
有关如何解决此问题的任何建议?
答案 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