webForumDet fria alternativet
Logga in / Bli medlem

Fel: Object variable or With block variable not set

.NET

2 svar · 206 visningar · startad av Vide

Medlem sedan dec. 19998 577 inlägg
Frågan#1

Tjenare,

Efter att ha slitit av nästan allt mitt hår vänder jag mig nu till wF för hjälp...

Jag har en ActiveX-komponent med några klasser...

Relaterade funktioner funktioner som anropas när jag får felmeddelande är dessa:

DatabaseClass:

Private strDB As String
Private objConnection As Connection

Private Sub Class_Initialize()
  SetDB = "xxx"
  openDatabase = 1
End Sub

Public Property Get GetDB() As String
  GetDB = strDB
End Property

Public Property Let SetDB(strDBString As String)
  strDB = strDBString
End Property

Public Function openDatabase() As Integer
  Set objConnection = New ADODB.Connection
  objConnection.Open strDB
  openDatabase = 1
End Function

Public Function getDatabase() As Connection
  getDatabase = objConnection
End Function

Public Function getRecordset(objCon As ADODB.Connection, strSQL As String) As ADODB.Recordset
  Set getRecordset = objCon.Execute(strSQL)
End Function

UserClass:

Private intUserId As Integer
Private rsUser As Recordset
Private rsAgUser As Recordset
Private clsDB As DatabaseClass

Private Sub Class_Initialize()
  Set clsDB = New DatabaseClass
End Sub

Public Property Get GetUserId() As Integer
  GetUserId = intUserId
End Property

Public Property Let SetUserId(ByVal intNewUserId As Integer)
  intUserId = intNewUserId
End Property

Public Function InitUser() As Integer
  If Len(intUserId) > 0 Then
    Dim strSQL As String
  
    strSQL = "select * from tblUsers where UserId = " & intUserId
    Set rsUser = clsDB.getRecordset(clsDB.getDatabase(), strSQL)
    
    strSQL = "select count( message ) as agCount from tblMessages where UserId = " & intUserId
    Set rsAgUser = clsDB.getRecordset(clsDB.getDatabase(), strSQL)
    InitUser = 1
  Else
    InitUser = 0
  End If
End Function

Och jag får alltså felmeddelandet:
Object variable or With block variable not set

När jag kör denna koden (i ASP):
set clsUser = createobject( "SweQuake.UserClass" )
clsUser.SetUserId = 3
clsUser.InitUser <-- Felmeddelande

InitUser ropar på getRecordset och getDatabase ifrån DatabaseClass

Så, har någon lust att hjälpa mig med felsökningen innan jag sliter av resten av håret...

Mvh, Vide

Medlem sedan juni 200032 967 inlägg
#2

En liten gissning:

Public Function getDatabase() As Connection
  [b]Set [/b]getDatabase = objConnection
End Function

Mvh,

Medlem sedan dec. 19998 577 inlägg
#3

En jäkligt bra gissning... :D

Tack @!!

Nu är det bara att gå till frizzan och göra det bästa av vad som är kvar av håret... :e

263 ms totalt · 4 externa anrop · v20260731065814-full.05830320
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)