Hallo zusammen
Nach langer Fehlersuche wende ich mich jetzt hier an diese Liste. Ich hoffe, ihr könnt mir weiterhelfen.
Code
wie diesen verwende ich in meiner Anwendung überall um Daten
auszulesen, nur an dieser stelle geht es schief und ich weiß nicht
warum...
Public Sub LoadUserqueryFromDb()
Dim Rs, Sql, Join, Where
Join = ""
Where = ""
If Not m_isAdmin Then
Join = "INNER JOIN querytool_alloc_employees_sql AS es ON (s.d_queryId=es.d_queryId) "
Where = " es.d_employeeId = "&PN&" "
End If
Sql = "SELECT " _
& "qs.d_savedId " _
& "FROM querytool_savedqueries AS qs " _
& "INNER JOIN querytool_sql AS s ON (qs.d_queryId=s.d_queryId) "_
& Join _
& "WHERE qs.d_employeeId = " & PN & " " _
& Where _
& "ORDER BY " _
& "s.c_category, s.c_title, s.d_queryId"
Set Rs = Server.CreateObject("ADODB.Recordset")
With Rs
.ActiveConnection = IntraConnection
.CacheSize = 15
Call .Open(Sql)
Do While Not .EOF AND Not .BOF
Set Query = New Querytool_Query
Call Query.LoadUserqueryFromDb(.Fields("d_savedId").Value)
If Not m_Queries.Exists(Query.Id) Then Call m_Queries.Add(Query.Id, Query)
Loop
Call .Close()
End With
Set Rs = Nothing
End Sub
In der Datenbank existiert genau 1 Datensatz, der über diese
Abfrage gefunden wird. Wenn ich die Anweisung ausgeben lasse und
manuell ausführe bekomme ich exakt diesen einen Datensatz.
Das Skript allerdings läuft in eine Endlosschleife.
Folgendes habe ich getestet:
Den Inhalt der While-Schleife komplett auskommentieren: keine Änderung
Die Schleife komplett auskommentieren: keine Schleife mehr
Den Datensatz in der DB ändern, damit 0 Sätze zurückgegeben werden: keine Endlosschleife mehr
Einen weiteren Datensatz hinzufügen: keine Änderung
Sämtliche
Tests habe ich nur mit der Schleife selbst, nicht mit ihrem Inhalt
getestet um zu verhindern, dass ein möglicher Fehler der aufgerufenen
Funktionen noch eine Schleife auslöst.
Habt ihr vielleicht irgendeine Idee, was hier schief läuft?