Also ich glaub wenn du deine Recordsets und Connections immer mit
Nothing freigibst dann gibt es kein Problem...

-----Urspr�ngliche Nachricht-----
Von: Matthias Winkler [mailto:[EMAIL PROTECTED]] 
Gesendet: Sonntag, 27. Januar 2002 17:40
An: ActiveServerPages German
Betreff: [aspgerman] global.asa


Hallo Liste,

ich habe bei meinem Provider auf dem Server einen kleinen
Immobilienmarkt laufen. Als DB benutze ich Access 97. Nun kommt es in
letzter Zeit h�ufiger vor, dass der Server h�ngt. Als Antwort auf meine
Anfrage hie� es, das der Server stabil laufen w�rde, nur der Aufbau
meiner global.asa sowie meine DB Scripte w�ren nicht f�r Last und
parallel-Nutzung geeignet.

Die global.asa nutze ich nur daf�r den ersten Besucher des Tages dazu zu
missbrauchen einige updates in der DB duchzuf�hren. (Script auf Server
um DB zu Updaten ist bei Provider nicht m�glich)

Nun meine Frage, bin ich zu bl�d so eine global.asa zu coden? Kann man
das noch optimieren?

In dankbarer Erwartung

Matthias



************* CODE *****************



<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
        Application("myAktuellesDatum") = "16.07.01"
End Sub

Sub Session_OnStart
        Application.Lock
        Application("myAnzahlAktuelleUser") =
Application("myAnzahlAktuelleUser") + 1
        Application.Unlock

        Session("myAktuellesDatum") = Date()

        IF NOT CDate(Session("myAktuellesDatum")) =
CDate(Application("myAktuellesDatum")) THEN
                Application("myAktuellesDatum") =
Session("myAktuellesDatum")

                strConnection = "Driver={Microsoft Access Driver
(*.mdb)};DBQ="
                strConnection = strConnection &
Server.MapPath("meine.mdb")
                strConnection = strConnection & ";DriverId=25;FIL=MS
Access;MaxBufferSize=512;PageTimeout=5;"

                set MyConn=Server.CreateObject("ADODB.Connection")
                MyConn.Open strConnection

                ' Oeffnen Recordset, Anzahl der Wohnungen auslesen
                sqlSelect = "SELECT COUNT(*) FROM tOBJEKTEINTRAG"
                Set MyRS = MyConn.execute(sqlSelect)

                Application("myAnzahlObjekte") = MyRS(0)

                ' Schliessen Recordset
                MyRS.Close
                Set MyRS = Nothing

                ' Oeffnen Recordset, Anzahl der Kunden auslesen
                sqlSelect = "SELECT COUNT(*) FROM tKUNDEN"
                Set MyRS = MyConn.execute(sqlSelect)

                myFeldgroesse = MyRS(0) - 1
                Application("myAnzahlKunden") = myFeldgroesse + 1
                ReDim myFeld(myFeldgroesse,5)

                ' Schliessen Recordset
                MyRS.Close
                Set MyRS = Nothing

                sqlSelect = "SELECT DB_KUNDENID,
DB_INTERNOBJEKTLAUFZEITDEAKTIVIERUNG,
DB_INTERNOBJEKTLAUFZEITLOESCHUNG, DB_GESCHLECHT, DB_NAME, DB_EMAIL FROM
tKUNDEN"
                Set MyRS = MyConn.execute(sqlSelect)

                ' Feld fuellen mit Daten der Kunden
                DO WHILE NOT MyRS.EOF
                        myFeld(x,0) = MyRS("DB_KUNDENID")
                        myFeld(x,1) =
MyRS("DB_INTERNOBJEKTLAUFZEITDEAKTIVIERUNG")
                        myFeld(x,2) =
MyRS("DB_INTERNOBJEKTLAUFZEITLOESCHUNG")
                        myFeld(x,3) = MyRS("DB_GESCHLECHT")
                        myFeld(x,4) = MyRS("DB_NAME")
                        myFeld(x,5) = MyRS("DB_EMAIL")
                        x = x + 1
                        MyRS.MOVENEXT
                LOOP

                ' Schliessen Recordset
                MyRS.Close
                Set MyRS = Nothing

                For x = 0 to UBound(myFeld)
                        sqlDelete = "DELETE FROM tOBJEKTEINTRAG WHERE
DB_KUNDENID=" & myFeld(x,0) & " AND DB_INTERNAENDERUNGDATUM <= #" &
getDatum(Date()-myFeld(x,2)) & "#"
                        'Response.Write(sqlDelete & "<br>")
                        MyConn.execute(sqlDelete)
                Next

                For x = 0 to UBound(myFeld)
                        sqlSelect = "SELECT DB_KUNDENID,
DB_INTERNAENDERUNGDATUM, DB_INTERNOBJEKTSICHTBAR FROM tOBJEKTEINTRAG
WHERE DB_KUNDENID=" &
myFeld(x,0)
                        Set MyRS = MyConn.execute(sqlSelect)

                        IF NOT MyRS.EOF AND NOT MyRS.BOF THEN
                                myKundenID = MyRS("DB_KUNDENID")
                                myInternAenderungsdatum =
MyRS("DB_INTERNAENDERUNGDATUM")
                                myInternObjektSichtbar =
MyRS("DB_INTERNOBJEKTSICHTBAR")

                                ' Schliessen Recordset
                                MyRS.Close
                                Set MyRS = Nothing

                                IF NOT myInternAenderungsdatum <
getDatum(Date()-myFeld(x,1)) AND NOT myInternObjektSichtbar = 0 THEN
                                        sendMail
myFeld(x,5),"[EMAIL PROTECTED];[EMAIL PROTECTED]","IMSAX.NET
Objektdeaktivierung",myMailbody(myFeld(x,3),myFeld(x,4))
                                END IF
                        ELSE
                                ' Schliessen Recordset
                                MyRS.Close
                                Set MyRS = Nothing
                        END IF

                        sqlUpdate = "UPDATE tOBJEKTEINTRAG SET
DB_INTERNOBJEKTSICHTBAR = 0 WHERE DB_KUNDENID=" & myFeld(x,0) & " AND
DB_INTERNAENDERUNGDATUM < #" &
getDatum(Date()-myFeld(x,1)) & "# AND NOT DB_INTERNOBJEKTSICHTBAR = 0"
                        MyConn.execute(sqlUpdate)

                Next

                ' Schliessen Connection
                MyConn.Close
                Set MyConn = Nothing
        END IF
End Sub

Sub Session_OnEnd()
   Application.Lock
     Application("myAnzahlAktuelleUser") =
Application("myAnzahlAktuelleUser") - 1
   Application.Unlock
End Sub

'*** Funktionen um deutsches Datumsformat in amerikanisches Datumsformat
zu konvertieren *** Function getDatum(myDatum)

        myTag = getFormatDatum(day(myDatum))
        myMonat = getFormatDatum(month(myDatum))
        myJahr = year(myDatum)

        getDatum = myMonat & "/" & myTag & "/" & myJahr

End Function

Function getFormatDatum(myFormatDatum)

        IF LEN(myFormatDatum) = 1 THEN
                getFormatDatum = 0 & myFormatDatum
        ELSE
                getFormatDatum = myFormatDatum
        END IF

End Function
'*** Ende // Funktionen um deutsches Datumsformat in amerikanisches
Datumsformat zu konvertieren *** </SCRIPT>


| [aspgerman] als [EMAIL PROTECTED] subscribed 
| http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv Sie k�nnen 
| sich unter folgender URL an- und abmelden: 
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp



| [aspgerman] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp

Antwort per Email an