2011-07-11 27 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

により確認することができますか? –

答えて

4

キースは正確に正しいですが、私は、ADOとDAOの場合はもう少し詳細に

を与えたかった、あなたが開始オブファイルマーカー(BOF)とファイルの終わりマーカー(EOF)を持っています。レコードはこのように返されます

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

矢印はカーソルの位置を示します。カーソルは、戻されるレコード・セット内のレコードを指します。両方のフラグが設定されている場合、レコードが返されない場合は

、あなたはので、この

[BOF] 
[EOF] 

を取得し、レコードが存在しません。 EOFが設定されている場合は、レコードがないか、最後のレコードを移動したことになります。 (あなたは、このコマンドで次のレコードにそのカーソルを移動します。)あなたは、SQL文は、実際に結果を返すことを確認した

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 = End Of File =レコードセットの最後に達しました。

関連する問題