开发者

Failed to handle null or empty recordset in VB6

It's been a day I've cracked my head to solve this....I've googled for solutions but none of it resolve my issue...

The code is like this:

    Private Sub guh()
Dim oConn As Connection
Dim Record As Recordset
Dim SqlStr As String

SqlStr = "select * from dbo.Msg_History where Client_ID='2' AND Update_Msg='4'"
Set oConn = New Connection

With oConn
.CursorLocation = adUseClient
.CommandTimeout = 0
.Open "Provider=SQLOLEDB;Server=127.0.0.1;Initial Catalog=Table_Msg;UID=Admin;PWD="

End With

Set Record = oConn.Execute(SqlStr)

If IsNull(Record) Then
    MsgBox "There are no records"

    Else
    MsgBox "There are records"

End If

oConn.Close
Set oConn = Nothing
End Sub

The sql statement is returning null recordset ..when i run the code...it always go to the "else" condition which is the line MsgBox "There are records"

I've tried change the line : If IsNull(Record) Then

to

If IsNull(Record.Fields(0).Value) Then

but then it throws an error like this:-

error: Either BOF or EOF is true, or the current record has been deleted. Requested operation requires a current record.

I've checked http://support.microsoft.com/kb/304267 and use eof and bof to th开发者_StackOverflow社区e condition...n still get the same error..

please anyone help me...


I would use something like this:

' returns true if there is non empty recordset
Function isRSExists(rs) AS boolean
  ' has to exists as object
  If Not rs Is Nothing Then
    ' has to be opened with recordset (could be empty)
    If rs.State > 0 Then
      ' has to have some records
      If Not rs.EOF Then
         isRSExists = true
      End If
    End If
  End If
End Function


Change this

If IsNull(Record) Then

to

If Record.RecordCount = 0 Then


I think you can test for if not Record.Eof.

If I recall correctly (it's been a long time), it only works with one type of cursor, I think it should be adUseServer. (EDIT No, it's actually RecordCount which has this problem)

I'll try and dig out some old code to check.


Thanks for the replies guys :D ...will test it later anyway...I havent's tested all of your suggestions at the time I'm posting this reply...I tested this: –

If Record.BOF And Record.EOF Then

and this works...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜