128 messaggi dal 01 febbraio 2006
Nella mia pagina ho il seguente form ed il valore di ID_Ordine viene assegnato quando la pagina viene aperta. Come posso fare ad assegnare tale valore quando il form viene inviato?

<form name="frm_ordine" method="POST" action="<%=MM_editAction%>" onSubmit="return validateform(this.form)" >

<input name="ID_Ordine" type="Hidden" id="ID_Ordine" value= <%=prog%>_<%=anno%>>

<input type="submit" name="Submit" value="Concludi Ordine"
</form>

Grazie mille..

Agostino Pasquin
2.584 messaggi dal 14 maggio 2001
Su questa pagina non valorizzi l'Id e metti una label in cui dici che il "progressivo" verrà comunicato a salvataggio concluso.

Nella pagina di salvataggio fai i controlli sull'ultimo progressivo presente nel Db, aggiungi uno e lo salvi sul Db, fatto questo fai comparire una schermata in cui dici "salvataggio concluso - fattura N: xx/2006"
128 messaggi dal 01 febbraio 2006
Ma non è che c'è un sistema per fare in modo che il valore per il campo Hidden venga assegnato nel momento in cui avviene l'evento onsubmit del form ?
Mi servirebbe perchè il salvataggio avviene con l'invio del form.

Io avevo pensato di aggiungere uno script javascript di questo tipo:

<script language="javascript">
function fattura()
{
form1.ID_Ordine.Value = 'prog'
}
</script>

e poi inserire nel form l'evento onsubmit in questo modo:

<form ACTION="<%=MM_editAction%>" METHOD="POST" name="form1" onSubmit="fattura()" >

lasciando il campo Hidden senza valore in questo modo:

<input name="ID_Ordine" type="Hidden" id="ID_Ordine" value="">


Ho provato, ma non funziona...


Ciao e grazie ancora...
Modificato da pasqua1981 il 27 novembre 2006 13.24 -

Agostino Pasquin
2.584 messaggi dal 14 maggio 2001
Idealmente tu avrai una pagina di visualizzazione con dei campi modulo da inserire a cura dell'utente (Pagina1) e poi una pagina in cui scriverai sul db i valori inseriti dall'utente (Pagina2).

Il valore l'avrai solo su Pagina2 se vuoi avere la certezza di evitare problemi di simultaneità d'accesso, via javascript prima del submit sei sempre sulla Pagina1 e lì non sei sicuro di avere proprio l'ultimo record...
128 messaggi dal 01 febbraio 2006
I dati vengono presi automaticamente da un'altra tabella, in quanto l'utente è registrato.
Quella di cui ti parlo è la Pagina2 nella quale mediante l'invio del Form avviene il salvataggio dei dati.
Per questo io inserirei javascript in "onsubmit", in questo modo il valore del progressivo viene preso solo nel momento in cui l'utente effettua l'invio, pertanto direi che in questo modo la possibilità di duplicazione è quasi nulla.

Il problema è che lo script come l'ho riportato non funziona. Perchè?

Grazie ancora

Agostino Pasquin
2.584 messaggi dal 14 maggio 2001
Quanto potrebbe stare il tuo utente, senza fare azioni, sulla tua Pagina2?
se può rimanerci fino a che non clicca su un tasto, significa che potrebbe esserci una collisione con un altro utente...
128 messaggi dal 01 febbraio 2006
L'utente può rimanere quanto vuole, finchè non conferma cliccando.

Però, come era impostata all'inizio, che al campo hidden veniva assegnato un valore, bastava che fossero sulla pagina in due che la collisione era avvenuta, ma passando il valore al campo tramite javascript solo nel momento in cui viene cliccato il pulsante, la collisione può avvenire solo se due utenti cliccano in tempi molto ravvicinati. Questa quindi mi sembra una possibilità molto più remota.

Mi sto ostinando sulla soluzione javascript perchè non ho tempo di cambiare tutta la struttura e questo mi sembra un buon compromesso, ma forse mi sbaglio...

La mia idea è che il valore del contatore preso da DB, che risiede in una DIM, venga estratto solo quando javascript lo richiede per assegnarlo al campo hidden e non quando viene caricata la pagina.

Ciao...

Agostino Pasquin
2.584 messaggi dal 14 maggio 2001
Sono d'accordo che così la collisione rimane più remota...
Ma quello che dico nella cosiddetta Pagina3 tu farai una query di INSERT per il nuovo record\Fattura... giusto?

Perché non fai una cosa del genere su quella pagina:
1) SELECT Max(NumeroFattura) From Tabella
2) INSERT INTO ..... NumeroFattua=" & QuelloCheHaiOttenuto+1 & "...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.