Icedguardian
09-01-2004, 10:46
Ho dei problemi con il Global.asa
Ho provato a copiare il codice in una pagina asp e funziona ma mettendolo in Global.asa non va, avete idea del perchè?
Questo è il file:
<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
End Sub
Sub Application_OnEnd
End Sub
Sub Session_OnStart
End Sub
Sub Session_OnEnd
if CInt(Session("IDCliente")) > 0 then
EliminaOrdineNonConfermato
end if
End Sub
Sub EliminaOrdineNonConfermato
Dim query, dbRs, dbCon, IDOrdine
query = "SELECT IDOrdine FROM Ordine WHERE Confermato = FALSE AND Cliente = " & Session("IDCliente")
EseguiQuery query, dbRs, dbCon
if dbRs.BOF and dbRs.EOF then 'Non esiste nessun ordine a cui eliminare la riga ordine
dbRs.Close
Set dbRs = Nothing
dbCon.Close
Set dbCon = Nothing
else
IDOrdine = dbRs(0)
dbRs.Close
Set dbRs = Nothing
query = "SELECT Prodotto, Quantita FROM RigaOrdine WHERE Ordine = " & IDOrdine
EseguiQuery query, dbRs, dbCon
if dbRs.BOF and dbRs.EOF then 'Non esiste la riga ordine
dbRs.Close
Set dbRs = Nothing
dbCon.Close
Set dbCon = Nothing
else
Dim dbRsAux
while not dbRs.EOF
query = "UPDATE Prodotto SET QuantitaDisponibile = QuantitaDisponibile + " & dbRs("Quantita") & " WHERE IDProdotto = " & dbRs("Prodotto")
EseguiQuery query, dbRsAux, dbCon
dbRs.MoveNext
wend
query = "DELETE FROM RigaOrdine WHERE Ordine = " & IDOrdine
EseguiQuery query, dbRs, dbCon
query = "DELETE FROM Ordine WHERE IDOrdine = " & IDOrdine
EseguiQuery query, dbRs, dbCon
dbCon.Close
Set dbCon = Nothing
end if
end if
End Sub
Sub EseguiQuery(query, dbRecordset, dbConnection)
'-----------------------------------------------------------------------------
' Scopo: Esegue la query passata come parametro e restituisce il recordset.
' Autore: Mr Iced ;-)
' Data: 26/11/2003
'-----------------------------------------------------------------------------
Set dbConnection = Server.CreateObject("ADODB.Connection")
dbConnection.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("./BMMDist.mdb")
Set dbRecordset = Server.CreateObject("ADODB.Recordset")
dbRecordset.Open query,dbConnection
'dbRecordset è da chiudere esternamente come dbConnection
End Sub
</script>
Un altra domanda, un metodo veloce per forzare il Session End.
Ho provato a copiare il codice in una pagina asp e funziona ma mettendolo in Global.asa non va, avete idea del perchè?
Questo è il file:
<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
End Sub
Sub Application_OnEnd
End Sub
Sub Session_OnStart
End Sub
Sub Session_OnEnd
if CInt(Session("IDCliente")) > 0 then
EliminaOrdineNonConfermato
end if
End Sub
Sub EliminaOrdineNonConfermato
Dim query, dbRs, dbCon, IDOrdine
query = "SELECT IDOrdine FROM Ordine WHERE Confermato = FALSE AND Cliente = " & Session("IDCliente")
EseguiQuery query, dbRs, dbCon
if dbRs.BOF and dbRs.EOF then 'Non esiste nessun ordine a cui eliminare la riga ordine
dbRs.Close
Set dbRs = Nothing
dbCon.Close
Set dbCon = Nothing
else
IDOrdine = dbRs(0)
dbRs.Close
Set dbRs = Nothing
query = "SELECT Prodotto, Quantita FROM RigaOrdine WHERE Ordine = " & IDOrdine
EseguiQuery query, dbRs, dbCon
if dbRs.BOF and dbRs.EOF then 'Non esiste la riga ordine
dbRs.Close
Set dbRs = Nothing
dbCon.Close
Set dbCon = Nothing
else
Dim dbRsAux
while not dbRs.EOF
query = "UPDATE Prodotto SET QuantitaDisponibile = QuantitaDisponibile + " & dbRs("Quantita") & " WHERE IDProdotto = " & dbRs("Prodotto")
EseguiQuery query, dbRsAux, dbCon
dbRs.MoveNext
wend
query = "DELETE FROM RigaOrdine WHERE Ordine = " & IDOrdine
EseguiQuery query, dbRs, dbCon
query = "DELETE FROM Ordine WHERE IDOrdine = " & IDOrdine
EseguiQuery query, dbRs, dbCon
dbCon.Close
Set dbCon = Nothing
end if
end if
End Sub
Sub EseguiQuery(query, dbRecordset, dbConnection)
'-----------------------------------------------------------------------------
' Scopo: Esegue la query passata come parametro e restituisce il recordset.
' Autore: Mr Iced ;-)
' Data: 26/11/2003
'-----------------------------------------------------------------------------
Set dbConnection = Server.CreateObject("ADODB.Connection")
dbConnection.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("./BMMDist.mdb")
Set dbRecordset = Server.CreateObject("ADODB.Recordset")
dbRecordset.Open query,dbConnection
'dbRecordset è da chiudere esternamente come dbConnection
End Sub
</script>
Un altra domanda, un metodo veloce per forzare il Session End.