2011-07-11 54 views
4

我正在使用sql server 2005在vb6中編寫一個應用程序。這裏是我當前的代碼。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 

如何解決這個問題的任何建議?

+5

檢查是否已確認您的SQL語句實際返回的結果嗎? –

回答

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 
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 =文件結束=已達到記錄集的末尾。