Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581

    Global.asa e sub che non funge :(

    ho inglobato nel global.asa due check che mi servono in un sito:
    - uno determina la data dell'ultima mofica sul db
    - uno in base alla data attuale va a eliminare iscritti alla newsletter in attesa .. e archivia news ed iniziative

    questo il codice:
    codice:
    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    Sub Application_OnStart
    	Application("ActiveUsers") = 0
    End Sub
    
    Sub Session_OnStart
    	Session.Timeout = 10
    	'Incremento il numero di utenti all'inizio di una nuova sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") + 1
    	Aggiornamenti
    	Controlla
    	Application.UnLock
    End Sub
    
    Sub Session_OnEnd
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") - 1
    	Application("Update") = Application("Update")
    	Application("Pulizia") = Application("Pulizia")
    	Application.UnLock
    End Sub
    
    sub Aggiornamenti
    	set conn = Server.CreateObject("ADODB.Connection")
    	conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database\NOMEDB.mdb")
    	set rs = Server.CreateObject("ADODB.Recordset")
    	sql = "SELECT MAX(Campo1) AS aggiorna "
    	sql = sql & "FROM "
    	sql = sql & "(SELECT MAX(Inserito) AS Campo1 FROM TblDown "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblEletti "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblFoto "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblFotoRaccolta "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblIniziative "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblLinks "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblLinksCat "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblMemphis "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblNews "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblPagine)"
    	rs.open sql, conn, 3, 3
    		update = Mid(rs("aggiorna"),7,2) & "/" & Mid(rs("aggiorna"),5,2) & "/" & Left(rs("aggiorna"),4)
    	rs.Close()
    	Set rs = Nothing
    	if IsNull(Application("Update")) or Application("Update") <> update then
    		Application("Update") = update
    	else
    		Application("Update") = Application("Update")
    	end if
    	conn.Close
    	set Conn = Nothing
    end sub
    
    Sub CalcolaData(data)
    	aaaa = Year(data)
    	mese = Month(data)
    	giorno = Day(data)
    	if mese < 10 then
    		mm = "0" & mese
    	else
    		mm = mese
    	end if
    	if giorno < 10 then
    		gg = "0" & giorno
    	else
    		gg = giorno
    	end if
    	valoredata = aaaa&mm&gg
    end Sub
    
    Sub Controlla
    	if IsNull(Application("Pulizia")) or Application("Pulizia") <> Date() or Application("Pulizia") = "" then
    		Pulisci
    		Application("Pulizia") = Date()
    	else
    		Application("Pulizia") = Application("Pulizia")
    	end if		
    End Sub
    
    Sub Pulisci
    	valoredata = ""
    	CalcolaData(DateAdd("d",-5,Date()))
    	newsletter = valoredata
    	CalcolaData(DateAdd("m",-1,Date()))
    	iniznews = valoredata
    
    	set conn1 = Server.CreateObject("ADODB.Connection")
    	conn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database\NOMEDB.mdb")
    	conn1.Execute = "DELETE FROM TblNewsletter WHERE Attivo = 'N' AND (VariazioneMail < '" & newsletter & "' OR (Iscrizione < '" & newsletter & "' AND IsNull(VariazioneMail)))"
    	'elimino gli iscritti in attesa della newsletter
    	'archivio le iniziative
    	set rs = Server.CreateObject("ADODB.Recordset")
    	sql = "SELECT * FROM TblIniziative WHERE Al < '" & iniznews & "'"
    	rs.open sql, conn1, 3, 3
    	if not rs.eof then
    		do while not rs.eof
    			rs("Archivio") = "S"
    			rs.update
    		rs.movenext
    		loop
    	end if
    	rs.close
    	set rs = nothing
    	'archivio le news
    	set rs = Server.CreateObject("ADODB.Recordset")
    	sql = "SELECT * FROM TblNews WHERE Inserito < '" & iniznews & "'"
    	rs.open sql, conn1, 3, 3
    	if not rs.eof then
    		do while not rs.eof
    			rs("Archivio") = "S"
    			rs.update
    		rs.movenext
    		loop
    	end if
    	rs.close
    	set rs = nothing
    	conn1.close
    	set conn1 = nothing
    End Sub
    </SCRIPT>
    il problema è che la data di aggiornamento me la da, l'Application Pulizia me la imposta giusta .. ma non mi fa la pulizia!!!

    A DB uso un sistema di memorizzazione date nel formato AAAAMMGG ... quindi dopo aver calcolato i giorni o mesi di differenza in base a cosa eliminare/archiviare, trasformo quella data ricavata nel formato AAAAMMGG per poterla verificare nel db stesso

    Sembra che il famoso valoredata non le lo ricavi .. o sia vuoto .. qualcuno mi riesce ad illuminare?

    TNX MILLE

  2. #2
    Che io sappia il Server.mapPath non può essere utilizzato nella global.asa, devi mettere il percorso fisico ("D:\...\...\xxx.mdb")

    quindi probabilmente non ti crea la connessione e quindi non aggiorna il db
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  3. #3
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    se non lo accettasse .. non andrebbe manco la sub Aggiornamenti
    codice:
    sub Aggiornamenti
    	set conn = Server.CreateObject("ADODB.Connection")
    	conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database\NOMEDB.mdb")
    	set rs = Server.CreateObject("ADODB.Recordset")
    	sql = "SELECT MAX(Campo1) AS aggiorna "
    	sql = sql & "FROM "
    	sql = sql & "(SELECT MAX(Inserito) AS Campo1 FROM TblDown "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblEletti "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblFoto "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblFotoRaccolta "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblIniziative "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblLinks "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblLinksCat "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblMemphis "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblNews "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblPagine)"
    	rs.open sql, conn, 3, 3
    		update = Mid(rs("aggiorna"),7,2) & "/" & Mid(rs("aggiorna"),5,2) & "/" & Left(rs("aggiorna"),4)
    	rs.Close()
    	Set rs = Nothing
    	if IsNull(Application("Update")) or Application("Update") <> update then
    		Application("Update") = update
    	else
    		Application("Update") = Application("Update")
    	end if
    	conn.Close
    	set Conn = Nothing
    end sub
    invece questa funziona perfettamente!!!

    Sembra invece che l'errore sia nel fatto che non ricava le date di agg di newsletter e il resto ovvero una data 5 gg precedente all'attuale e 1 mese precedente all'attuale

    infatti se valorizzo in un'altra application il risultato di quelle variabili, le da come vuote :|

  4. #4
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    mah .. io non ci capisco più nulla!!!!

    ho cambiato la global.asa in questo modo ed ora funziona alla perfezione:
    codice:
    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    Sub Application_OnStart
    	Application("ActiveUsers") = 0
    End Sub
    
    Sub Session_OnStart
    	Session.Timeout = 10
    	'Incremento il numero di utenti all'inizio di una nuova sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") + 1
    	Aggiornamenti
    	Controlla
    	Application.UnLock
    End Sub
    
    Sub Session_OnEnd
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") - 1
    	Application("Update") = Application("Update")
    	Application("Pulizia") = Application("Pulizia")
    	Application.UnLock
    End Sub
    
    sub Aggiornamenti
    	set conn = Server.CreateObject("ADODB.Connection")
    	conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database\NOMEDB.mdb")
    	set rs = Server.CreateObject("ADODB.Recordset")
    	sql = "SELECT MAX(Campo1) AS aggiorna "
    	sql = sql & "FROM "
    	sql = sql & "(SELECT MAX(Inserito) AS Campo1 FROM TblDown "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblEletti "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblFoto "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblFotoRaccolta "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblIniziative "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblLinks "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblLinksCat "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblMemphis "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblNews "
    	sql = sql & "UNION SELECT MAX(Inserito) AS Campo1 FROM TblPagine)"
    	rs.open sql, conn, 3, 3
    		update = Mid(rs("aggiorna"),7,2) & "/" & Mid(rs("aggiorna"),5,2) & "/" & Left(rs("aggiorna"),4)
    	rs.Close()
    	Set rs = Nothing
    	if IsNull(Application("Update")) or Application("Update") <> update then
    		Application("Update") = update
    	else
    		Application("Update") = Application("Update")
    	end if
    	conn.Close
    	set Conn = Nothing
    end sub
    
    Sub Controlla
    	if IsNull(Application("Pulizia")) or Application("Pulizia") <> Date() or Application("Pulizia") = "" then
    		Call Pulisci(DateAdd("d",-5,Date()),DateAdd("m",-1,Date()))
    		Application("Pulizia") = Date()
    	else
    		Application("Pulizia") = Application("Pulizia")
    	end if		
    End Sub
    
    Sub Pulisci(data1,data2)
    	aaaa = Year(data1)
    	mese = Month(data1)
    	giorno = Day(data1)
    	if mese < 10 then
    		mm = "0" & mese
    	else
    		mm = mese
    	end if
    	if giorno < 10 then
    		gg = "0" & giorno
    	else
    		gg = giorno
    	end if
    	newsletter = aaaa&mm&gg
    	aaaa1 = Year(data2)
    	mese1 = Month(data2)
    	giorno1 = Day(data2)
    	if mese1 < 10 then
    		mm1 = "0" & mese1
    	else
    		mm1 = mese1
    	end if
    	if giorno1 < 10 then
    		gg1 = "0" & giorno1
    	else
    		gg1 = giorno1
    	end if
    	iniznews = aaaa1&mm1&gg1
    
    	'elimino gli iscritti in attesa della newsletter
    	set conn1 = Server.CreateObject("ADODB.Connection")
    	conn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-databaseNOMEDB.mdb")
    	conn1.Execute = "DELETE FROM TblNewsletter WHERE Attivo = 'N' AND (VariazioneMail < '" & newsletter & "' OR (Iscrizione < '" & newsletter & "' AND IsNull(VariazioneMail)))"
    	
    	'archivio le iniziative
    	set rs = Server.CreateObject("ADODB.Recordset")
    	sql = "SELECT * FROM TblIniziative WHERE Al < '" & iniznews & "'"
    	rs.open sql, conn1, 3, 3
    	if not rs.eof then
    		do while not rs.eof
    			rs("Archivio") = "S"
    			rs.update
    		rs.movenext
    		loop
    	end if
    	rs.close
    	set rs = nothing
    	
    	'archivio le news
    	set rs = Server.CreateObject("ADODB.Recordset")
    	sql = "SELECT * FROM TblNews WHERE Inserito < '" & iniznews & "'"
    	rs.open sql, conn1, 3, 3
    	if not rs.eof then
    		do while not rs.eof
    			rs("Archivio") = "S"
    			rs.update
    		rs.movenext
    		loop
    	end if
    	rs.close
    	set rs = nothing
    	conn1.close
    	set conn1 = nothing
    End Sub
    </SCRIPT>
    se qualcuno ha voglia di dare un occhio e magari capisce perchè non andava gliene sarei grato almeno capisco anche io dove sbagliavo

    Alla fine da quel che ho capito io le var non le assegnava o non ne manteneva i valori assegnati


    un ultimissima cosa ... secondo voi per quanto riguarda la seconda parte che archvia, e quindi imposta a S i campi archivio, è meglio fare in quel modo oppure è ancora meglio qualcosa del tipo:

    codice:
    Sub Pulisci(data1,data2)
    	aaaa = Year(data1)
    	mese = Month(data1)
    	giorno = Day(data1)
    	if mese < 10 then
    		mm = "0" & mese
    	else
    		mm = mese
    	end if
    	if giorno < 10 then
    		gg = "0" & giorno
    	else
    		gg = giorno
    	end if
    	newsletter = aaaa&mm&gg
    	aaaa1 = Year(data2)
    	mese1 = Month(data2)
    	giorno1 = Day(data2)
    	if mese1 < 10 then
    		mm1 = "0" & mese1
    	else
    		mm1 = mese1
    	end if
    	if giorno1 < 10 then
    		gg1 = "0" & giorno1
    	else
    		gg1 = giorno1
    	end if
    	iniznews = aaaa1&mm1&gg1
    
    
    set conn1 = Server.CreateObject("ADODB.Connection")
    conn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-databaseNOMEDB.mdb")
    
    'elimino gli iscritti in attesa della newsletter
    conn1.Execute = "DELETE FROM TblNewsletter WHERE Attivo = 'N' AND (VariazioneMail < '" & newsletter & "' OR (Iscrizione < '" & newsletter & "' AND IsNull(VariazioneMail)))"
    
    'archivio le iniziative
    conn1.Execute = "UPDATE TblIniziative SET Archivio = '"S"' WHERE Al < '" & iniznews & "'"
    
    'archivio le news
    conn1.Execute = "UPDATE TblNews SET Archivio = '"S"' WHERE Inserito < '" & iniznews & "'"
    conn1.close
    set conn1 = nothing
    End Sub

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.