Newsgroup: it.comp.www.asp
Titolo: ASP e Access

Salve a tutti!
                        Vi scrivo quasi per disperazione dopo aver tentato
invano nei NG di cercare una soluzione al mio quesito.
Ho realizzato un piccolo applicativo che serve a registrare tutte le
richieste di assistenza tecnica che necessitano nei vari uffici dislocati su
edifici diversi tutti collegati tramite una intranet e LAN interne ai vari
uffici. Questo applicativo è stato realizzato in linguaggio ASP (e se mi
permettete lo giro anche al Gruppo it.comp.www.asp) e come base dati  ho
usato ACCESS.
Ho realizzatore un contatore numerico (ahimè!!!) che numera i record ogni
volta che si effettua una richiesta e, mannaggia!!, questo serve anche come
numero assegnato alla pratica da espletare.
All'inizio fatte delle prove via web tutto funzionava alla perfezione...
senonchè... inserito su di un web server interno alla intranet capita non
sempre che il contatore numerico salti dei numeri (per esempio dal record 21
al 27) senza lasciare traccia di quelli intermedi (22, 23, 24, etc.)
scomparsi!!!
Dopo varie ricerchè e prove anche durante un tentativo di richiesta fatta da
fruitori del servizio in rete ho potuto verificare che,  in particolar modo
oggi, succede che dopo aver compilato il form per l'invio non compare la
pagina che visualizza il numero di prot. assegnato (corrispondente al numero
di record occupato) e che risponde che la richiesta è andata a buon fine,
con un "errore visualizzazione pagina". Per cui il richiedente tornando
indietro sul form con le freccette di internet explorer riclicca su invia
diverse volte ed alla fine i record mancanti corrispondono a gli input dati
sul tasto invio non andati a buon fine.
Penso che il problema sta proprio qui e pertanto volevo chiedervi se pensate
possa essere un problema di programmazione che si possa ovviare magari con
un controllo e se esiste una opzione in Access che blocca la possibilità di
eliminare un record o evitare di far scrivere un record inesistente.
Spero di essere stato chiaro.
Max

 sul tasto invio non andati a buon fine.
Secondo me dovresti lavorare su questo problema, del perché capita che una 
pagina va a buon fine ma compare l'errore di visualizzazione pagina.
Il resto sarebbero trucchi per raggirare questo problema (sempre se l'ho ben 
capito).
Ciao
-- 
AZ [Microsoft - .NET MVP]
Mia Home page: 
http://ciclismo.sitiasp.it
Asp.Net community: 
http://www.aspitalia.com
Il mio blog: 
http://blogs.aspitalia.com/az
 

Se ho capito bene hai un problema abbastanza comune che è quel del
invio multiplo di una data richiesta da un form.
Per ovviare a questo problema puoi ricorrere alla tecnica dei TOKEN,
cerca in google ma brevemente assegni al form un numero casuale (di
almeno una decina di cifre) in un campo HIDDEN.
Nella pagina che riceve la richiesta controlli che il token appena
ricevuto sia diverso da quello salvato nell'ultima richiesta (dopo
vedrai).
Se sono diversi allora esegui tutte le elaborazioni regolarmente,
altrimenti non fai nulla...
Infine tieni in sessione l'ultimo token ricevuto!
Spero di essere stato chiaro e soprattutto di aver centrato il problema!

Se hai programmato in asp basta che, dopo che hai inserito il record vai a
recuperare l'id dell'ultimo record inserito facendo un sort by id!!!
usa bene il lock altrimenti se piu' di una persona puň accedere in
contemporanea ti si creano dei casini
Un caso in cui si hanno id con buchi .. tipo 20, 25,26,30,31 ecc ecc č
quando si eliminano dei record
se per esempio hai gli ultimi che hanno id:
50, 51, 52, 53, 54, 55
ed ilimini il 53,54,55 ... access dara' id 56 al nuovo record che inserirai
dara' id 53 solo ed esclusivamente nel caso in cui prima fai un "compatta e
ripristina database"
comunuqe se vuoi un consiglio non tener conto dell'id contatore ma dai tu un
id possibilmente univoco del tipo
anno_mese_giorno_ora_minuti_secondi
e vedrai che i problemi non si verificano piů
;)

Grazie a tutti per la risposta.
In effetti il problema l'ho risolto (almeno credo) direttamente sulla pagina
ASP e modificando sul db il valore dell'ID (protocollo) da contatore a
numerico (grazie Damiano per l'indicazione). Ho poi scritto la seguente
istruzione sulla pagina ASP che genera
il nuovo record con questo script:
sql="SELECT MAX(id) AS [max] FROM richiestamanutenzione;"
rs.Open sql, connessione,3,3
max=rs("max")
rs.close
che non fa altro che estrapolare il valore massimo della colonna id, mentre
un po' più sotto c'è l'assegnazione per il nuovo record fatta
dall'istruzione
rs("id")=max+1
e cioè legge il valore massimo e aggiunge +1 al successivo, cosi anche se
dovesse generare l'errore di pagina non dovrebbe saltarmi il numero
successivo.
Il dubbio rimane nel caso in cui il db dovesse comunque assegnare un numero
ad un record visibile ma vuoto.
Sto testando, vi terrò informati...
Ciao
Max