- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- scaricamento prodotti
-
scaricamento prodotti
Ciao a tutti
devo creare un sistema che scarica gli articoli da uguale prodotto in pratica:
Ho un form dove ho 2 campi
NOME ARTICOLO e QUANTITA' DA SCARICARE.
Nel db ho gli articoli con nome, quantità massima da consumare e quantita consumata.
Esempio: ho 2(o piu) Prodotti con id diverso ma con lo stesso nome : BORSE e possono avere quantità diverse tipo:
id: 1 - BORSE - qta 300 - qtaconsumata:0
id: 3 - BORSE - qta 100 - qtaconsumata:0
id: 6 - BORSE - qta 230 - qtaconsumata:0
ora dovrei scaricare la quantità....Se nel form faccio un richiesta tipo:
NOME ARTICOLO: BORSE
QUANTITA DA SCARICARE: 650
Se la QUANTITA' DA SCARICARE è maggiore cioè 650 deve elaborarmi:
id: 1 - BORSE - qta 300 - qtaconsumata:300
id: 3 - BORSE - qta 100 - qtaconsumata:100
id: 6 - BORSE - qta 230 - qtaconsumata:230
o
NOME ARTICOLO: BORSE
QUANTITA DA SCARICARE: 420
Se la QUANTITA' DA SCARICARE è minore cioè 420 deve elaborarmi:
id: 1 - BORSE - qta 300 - qtaconsumata:300
id: 3 - BORSE - qta 100 - qtaconsumata:100
id: 6 - BORSE - qta 230 - qtaconsumata:20
o
NOME ARTICOLO: BORSE
QUANTITA DA SCARICARE: 250
Se la QUANTITA' DA SCARICARE è ancora minore cioè 250 deve elaborarmi:
id: 1 - BORSE - qta 300 - qtaconsumata:250 (eliminare dal record con qta più alta)
id: 3 - BORSE - qta 100 - qtaconsumata:0
id: 6 - BORSE - qta 230 - qtaconsumata:0Il tutto deve essere salvato su db
Io ho fatto questo script:articolo = request.form("descrizione") qta_da_scaricare = request.form("qta_da_scaricare") sql="SELECT * FROM db WHERE Articolo =" sql=sql & "'" & articolo & "' and (qta_articolo-qta_spuntata>0) " Set rsa = Server.CreateObject("ADODB.Recordset") rsa.Open sql, Conn, 3, 3 do while not rsa.eof qtadoc = rsa.fields("qta_articolo") qtaspu = rsa.fields("qta_spuntata") qtarest = qtadoc-qtaspu rsa.fields("qta_spuntata") = "" & qtarest & "" rsa.update qtaultima = qta_da_scaricare-qtarest rsa.fields("qta_Spuntata") = "" & qtaultima & "" rsa.update rsa.MoveNext loop rsa.close
Ma ha un errore cui non riesco a risolvere:
Su 4 prodotti uguali mi fa:
al primo mi toglie la quantità giusta, al secondo la quantità restante, ma la quantità restante me la toglie anche agli altri 2 prodotti quindi 3 prodotti hanno la quantità restante, tipo:
Cerco prodottoa e imposto come quantità da scaricare 600, me ne trova 4:- PRODOTTOA : 538 ---> 538
- PRODOTTOA : 538 ---_> 62
- PRODOTTOA : 538 ----> 62
- PRODOTTOA : 538 ----> 62
Naturalmente al punto 3 e punto 4 non doveva scaricare nulla, come posso ovviare?
Dove sbaglio?
Grazie a può aiutarmi
-
Ciao djjunior, solo un dubbio:
c'è differenza nel db tra qta_spuntata e qta_Spuntata?Comunque prova a sostituire la variabile qtaultima con qta_da_scaricare
-
No nn c'è differenza è solo errore di battitura ma il campo è solo uno. Proverò come da te suggerito. Grazie
-
Allora, ho provato a riscrivere il tuo codice con un po' di indentazione...
articolo = request.form("descrizione") qta_da_scaricare = request.form("qta_da_scaricare") sql="SELECT * FROM db WHERE Articolo = & "'" & articolo & "' and (qta_articolo-qta_spuntata>0) " Set rsa = Server.CreateObject("ADODB.Recordset") rsa.Open sql, Conn, 3, 3 do while not rsa.eof qtadoc = rsa.fields("qta_articolo") qtaspu = rsa.fields("qta_spuntata") qtarest = qtadoc-qtaspu rsa.fields("qta_spuntata") = "" & qtarest & "" rsa.update qtaultima = qta_da_scaricare-qtarest rsa.fields("qta_spuntata") = "" & qtaultima & "" rsa.update rsa.MoveNext loop rsa.close
Guardando il tuo codice, secondo me già al primo giro la qta_spuntata dovrebbe essere = 62, se consideriamo anche la seconda assegnazione:
rsa.fields("qta_spuntata") = "" & qtaultima & ""
-
Grazie ARTCAVA, così come da te suggerito, su 600 (quantita da scaricare) al primo prodotto scala correttamente 538
dal secondo articolo in poi mette sempre 62
invece dal 3° articolo in poi dovrebbe lasciare 0ù
Grazie
-
A naso, senza debug proverei così:
articolo = request.form("descrizione") qta_da_scaricare = request.form("qta_da_scaricare") sql="SELECT * FROM db WHERE Articolo = & "'" & articolo & "' and (qta_articolo-qta_spuntata>0) " Set rsa = Server.CreateObject("ADODB.Recordset") rsa.Open sql, Conn, 3, 3 do while not rsa.eof qtadoc = rsa.fields("qta_articolo") qtaspu = rsa.fields("qta_spuntata") qtarest = qtadoc-qtaspu If qta_da_scaricare < qtarest Then 'se la quantità totale da scaricare è > di quella da scaricare per articolo qtarest = qta_da_scaricare End If rsa.fields("qta_spuntata") = "" & qtarest + qtaspu & "" 'se inserisci solo il resto perdi eventuale qta già spuntata in precedenza qta_da_scaricare = qta_da_scaricare-qtarest rsa.update rsa.MoveNext loop rsa.close
Se ci sono errori di sintassi, scusa, ma non scrivo in VBScript da un decennio almeno...
Dovresti anche controllare, per ciascun giro, che qta_da_scaricare sia > 0
-
Grazie per l'aiuto ARTCAVA
ho provato l'ultimo script da te modificato ma nn ora non detrae il rimanente (62) dal secondo articolo, in pratica tutti gli altri articoli restano a zero.... questo operazione mi sta facendo letteralmente impazzire...
-
Strano, prova a farti stampare sulla pagina i valori ad ogni giro, per capire cosa va storto
-
al primo articolo scarica 538 anche al secondo articolo scarica 538 (come il primo) al terzo articolo scarica 62 e agli altri scarica zero sembra che ci siamo.... ma come mai al primo lo ripete? grazie di tutto
-
Boh, prova a ripostare il codice così com'è adesso...
-
articolo = request.form("descrizione") qta_da_scaricare = request.form("qta_da_scaricare") sql="SELECT * FROM db WHERE Articolo = & "'" & articolo & "' and (QtaDoc-QtaSpuntata>0) " Set rsa = Server.CreateObject("ADODB.Recordset") qtadoc = rsa.fields("QtaDoc") qtaspu = rsa.fields("QtaSpuntata") qtarest = qtadoc-qtaspu if qta_da_scaricare < qtarest Then qtarest = qta_da_scaricare End If rsa.fields("QtaSpuntata") = "" & qtarest + qtaspu & "" qta_da_scaricare = qta_da_scaricare-qtarest rsa.update rsa.MoveNext loop
Ho provato però mettendo un valore minore della quantità dell'articolo tipo 25 e succede che il primo articolo scarica sempre 538 al secondo ancora 538 e al terzo -513 e agli altri correttamento zero
-
ho trovato scusami c'era prima di questo codice un'altro che creava il loop del primo articolo e lo ripeteva.... ora va benissimo, scusami....
ma resta il fatto se si mette un valore minore come spiegato su
-
Scusa, ma queste righe?
rsa.Open sql, Conn, 3, 3 do while not rsa.eof
Sono sparite...
PS: hai loggato sulla pagina i valori a ciascun giro?
-
@artcava said:
Scusa, ma queste righe?
> rsa.Open sql, Conn, 3, 3 do while not rsa.eof >``` Sono sparite... Durante il copia incolla le ho omesse, ma come ti dicevo il problema era al di fuori dello script che ho corretto, scusami, resta il fatto se metto valore minore...
-
@djjunior said:
resta il fatto se metto valore minore...
Questo valore minore sta in QtaDoc? Oppure?
-
@artcava said:
Questo valore minore sta in QtaDoc? Oppure?
sta in
qta_da_scaricare = request.form("qta_da_scaricare")
se
qta_da_scaricare = 25
invece di 600 come provato finora
-
...
qtadoc = rsa.fields("QtaDoc") qtaspu = rsa.fields("QtaSpuntata") qtarest = qtadoc-qtaspu if qta_da_scaricare < qtarest Then qtarest = qta_da_scaricare End If rsa.fields("QtaSpuntata") = "" & qtarest + qtaspu & "" qta_da_scaricare = qta_da_scaricare-qtarest ----------- qtadoc = 538 qtaspu = 0 qtarest = 538-0 = 538 if 25 < 538 Then qtarest = 25 End If rsa.fields("QtaSpuntata") = "" & 25 + 0 & "" = 25 qta_da_scaricare = 25-25 = 0
Succede qualcosa di diverso da questo?
-
effettivamente no, però come ti dicevo tu se la quantità da scaricare è meno di 538, cioè esempio 25
ho il primo articolo scaricato 538 e il secondo -513
-
Non è possibile, puoi ripostare tutto così com'è?
-
ho trovato l'inghippo, ho utilizzato la funzione CInt:
qta_da_scaricare = CInt(request.form("qta_da_scaricare"))
e va tutto benissimo....
grazie 1000 ARTCAVA