[ASP] Object is no longer valid (Dictionary)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Flyde, 23. November 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 23. November 2012
    Zuletzt bearbeitet: 23. November 2012
    Object is no longer valid (Dictionary)

    Ich kämpf gerade gezwungenermaßen auf der Arbeit seit ein paar Tagen (vorher noch nichts mit ASP zu tun gehabt) mit ASP rum... (bin ich der einzige, der beim programmieren mit ASP gerne Fensterscheiben einschmeißen würde?)

    Ich komm direkt mal zur Sache:

    Funktion um Daten aus der Datenbank in ein Dictionary zu speichern und dieses dann zurueckzugeben:
    Code:
    ' Liefert einzelnes Event zurueck
    Function eventGet(id)
     
     Dim query, rs ' query
     Dim dictResult ' Dictionary fuer rs
     
     ' Dictionary
     Set dictResult = Server.CreateObject("Scripting.Dictionary")
     
     ' Query
     query = "SELECT `idEvent`, `name`, `description`, `country`, `street`, `postcode`, `city` FROM " & TBL_EVENT & " WHERE idEvent = " & id
     
     'ResultSet
     Set rs = objConn.execute(query)
     
     ' Daten fetchen
     dictResult.Add "idEvent", rs("idEvent")
     dictResult.Add "name", rs("name")
     dictResult.Add "description", rs("description")
     dictResult.Add "country", rs("country")
     dictResult.Add "street", rs("street")
     dictResult.Add "postcode", rs("postcode")
     dictResult.Add "city", rs("city")
     
     ' return dict
     Set eventGet = dictResult
     
    End Function
    Aufruf in meinem Script:
    Code:
    ' eventView-Objekt
    Set eventView = eventGet(idEventView) ' Klappt
    Set eventName = eventView.Item("name") ' Klappt
    
    Sowohl
    Code:
    Response.Write(eventName)
    als auch
    Code:
    Response.Write(eventView.Item("name"))
    verursachen den oben genannten Fehler in ... Zeile 0 meiner Startseite... Sehr hilfreiches Debugging -.-
    das ResultSet ist in ordnung, habe mir den kompletten Datensatz in der Funktion mal ausgeben lassen. Ebenfalls habe ich mir innerhalb der Funktion alle Dictionary-Einträge ohne Fehler ausgeben lassen

    Jemand ne Idee?
     
  2. 23. November 2012
    AW: Object is no longer valid (Dictionary)

    Ich zitiere aus einem anderen Forum:
    -_-

    Für die interessierten, hier die Lösung:


    Quasi in meinem Script:
    Code:
    ' Liefert einzelnes Event zurueck
    Function eventGet(id)
     
     Dim query, rs ' query
     Dim dictResult ' Dictionary fuer rs
     
     ' Dictionary
     Set dictResult = Server.CreateObject("Scripting.Dictionary")
     
     ' Query
     query = "SELECT `idEvent`, `name`, `description`, `country`, `street`, `postcode`, `city` FROM " & TBL_EVENT & " WHERE idEvent = " & id
     
     'ResultSet
     Set rs = objConn.execute(query)
     
     ' Daten fetchen
     sId = rs("idEvent")
     sName = rs("name") 
     sDescription = rs("description")
     sCountry = rs("country")
     sStreet = rs("street")
     sPostcode = rs("postcode")
     sCity = rs("city")
     
     dictResult.Add "idEvent", sId
     dictResult.Add "name", sName
     dictResult.Add "description", sDescription
     dictResult.Add "country", sCountry
     dictResult.Add "street", sStreet
     dictResult.Add "postcode", sPostcode
     dictResult.Add "city", sCity
     
     ' Aufraeumen und return dict
     Set eventGet = dictResult
     
    End Function
    Weil RecordSet (also rs) by reference und nicht byvalue ist. der pointer zeigt ins leere und somit der Error. Geil. Ich liebe diese Sprache. Thread closed.
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.