Newsgroup: it.comp.www.asp
Titolo: ASP e Upload del Database

Help:
se mentre faccio un upload del database per aggiornarlo gli utenti accedono
alle pagine Asp, lanciando le relative query, si beccano un bell'errore
dall'ODBC. Come segnalare all'utente questo momentaneo "disservizio" in modo
meno cruento?
Qualcuno ha giŕ gestito questa evenienza? Ogni dritta č gradita.
Grazie di esistere!! :-)
Francesco Capanni


Io utilizzo un metodo un po' artigianale ma funzionale.
Nella pagine che accedono al database, all'inizio, ho inserito questo
codice:
<%
if Application("aggiornamento")="si" then redirect "attendere.htm"
%>
Il file "attendere.htm" contiene un messaggio di scuse per l'utente, che lo
informa che il sito è momentaneamente bloccato e verrà riattivato in pochi
minuti.
Quindi ho creato una pagina ASP (blocca.asp) che permette di bloccare o
sbloccare la variabile application.
<%
if Application("aggiornamento")="si" then
response.write "Ciao capo, ti sblocco il sito!"
Application("aggiornamento")="no"
else
response.write "Ciao capo, ti blocco il sito per l'aggiornamento!"
Application("aggiornamento")="si"
end if
%>
Quando voglio aggiornare un database, faccio partire il file asp
"blocca.asp". Faccio l'upload del database e faccio ripartire "blocca.asp"
per riattivare le connessioni.
Un po' artiginale come ho detto, ma funzionante.
Ciao!
Andrew

Ciao,
	c'è un articolo postato poco tempo fa in cui ho scritto la
seguente cosa:
"Ciao,
	questo problema ci attanaglia (noi programmatori ASP), e
proprio per questo sto sviluppando una applicazione (un programma vero
e proprio) per eseguire a sincronizzazione del Db. Sarà una
sincronizzazione non AMBO i lati, ma permeterà SOLAMENTE :)) di
aggiornare il prorpio Db remoto con quello in Locale oppure il
viceversa.
Appena sarà pronta una versione DEMO o una BETA posterò un msg su
questo newsgroup...."
Spero di esserti stato utile
Liga97
ICQ: 11362849
E-mail: 
lig...@alo.it
 oppure 
a...@ligasoft.com
Web: 
www.ligasoft.com/asp

La cosa + logica è quella di intercettare l'errore
e di restituire un messaggio un pò + user friendly
lo statment da utilizzare è il seguente : On Error Resume Next
+ o - la l'evento errore lo recuperi in questo modo
On Error Resume Next
**** tuo codice ****
if err.number then
errore = 'Ci scusiamo per la momentanea interruzione del servizio.'
response.write(errore)
end if
RS.close
Conn.close
Bye.


Una soluzione tanto semplice era fuori portata della mia mente intricata. Me
lo segno questo codice.
Ciao e grazie!
Andrew

Ottimo: ingegnoso e funzionale.
Mi rimane solo un pb. di "coerenza dei dati": se l'utente accede ad una asp
che interroga il db, poi si fuma una sigaretta, nel frattempo il db viene
completamente aggiornato, finita la sigaretta l'utente ricomincia a
interrogare le varie asp,  può darsi che veda dei dati completamente
incompatibili con quelli visti prima della sigaretta. Questo può essere
dovuto a due possibili motivi:
1. il fumo gli ha nuociuto gravemente alla salute e allla testa -:));
2. i nuovi dati sono "molto" cambiati;
nel caso 2 andrebbe avvertito... ma come?
Grazie mille.
Francesco Capanni


Nel primo caso: ma che cosa mette al posto del tabacco? ;-)))
Scherzi a parte non ho mai affrontato questo problema, ma
posso cercare di darti un'idea.
Il file teorico "blocca.asp" modificalo così:
<%
if Application("aggiornamento")="si" then
   response.write "Ciao capo, ti sblocco il sito!"
   Application("aggiornamento")="no"
   Application("ultimoagg")=now() ' nuova linea!!!!!!!
else
   response.write "Ciao capo, ti blocco il sito per l'aggiornamento!"
   Application("aggiornamento")="si"
end if
%>
E nei vari files che leggono i database o quelli a te interessati,
all'inizio metti:
<%
if Application("aggiornamento")="si" then response.redirect "attendere.htm"
if Application("ultimoagg")="" then Application("ultimoagg")=now()
'
if session("aggiorna")="" then
   ' utente che accede la prima volta a un database
   session("aggiorna")=application("ultimoagg")
else
   ' controlla se è stato avviato il file "blocca.asp"
   if session("aggiorna")<>application("ultimoagg") then
   response.write "Attenzione, i dati sono stati appena aggiornati<br>"
   response.write "Smetti di fumare che è ora!<br>"
   ' o quello che vuoi... :-)))
   ...
end if
%>
Il file "blocca.asp" crea una variabile application che sarà visibile a
tutte le pagine. Questa variabile avrà come contenuto la data e l'ora
precisa di quando sbloccherai il sito.
Lo script successivo, controlla che non esiste la variabile session e in tal
caso la crea, così come nel caso di quella application. Se
esiste la variabile session si confronta il contenuto con quello della
variabile application, se sono diverse vuol dire che tu hai bloccato e
sbloccato il database e si avvisa l'utente che il database è stato
aggiornato...
E' solo un'idea buttata lì la mia (non l'ho provata), puoi farci tutte le
modifiche che vuoi.
Ciao e, se vuoi, fammi sapere!
Andrew

2. i nuovi dati sono "molto" cambiati;
...perchè il DB è stato aggiornato! Potrebbe anche arrivarci da solo a
capire questo l'utente. Non credo sia un problema.
-- 
Rhodion
"I will show you fear in a handful of dust"