+ Rispondi alla Discussione
Risultati da 1 a 27 di 27

scaricamento prodotti

Ultimo Messaggio di djjunior il:
  1. #1
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56

    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:0

    Il tutto deve essere salvato su db
    Io ho fatto questo script:
    Codice:
    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:
    1) PRODOTTOA : 538 ---> 538
    2) PRODOTTOA : 538 ---_> 62
    3) PRODOTTOA : 538 ----> 62
    4) PRODOTTOA : 538 ----> 62
    Naturalmente al punto 3 e punto 4 non doveva scaricare nulla, come posso ovviare?
    Dove sbaglio?
    Grazie a può aiutarmi

  2. #2
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    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

  3. #3
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    No nn c'è differenza è solo errore di battitura ma il campo è solo uno. Proverò come da te suggerito. Grazie

  4. #4
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Allora, ho provato a riscrivere il tuo codice con un po' di indentazione...
    Codice:
    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:

    Codice:
    rsa.fields("qta_spuntata") = "" & qtaultima & ""

  5. #5
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    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
    Ultima modifica di djjunior; 17-04-19 alle 12:02

  6. #6
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    A naso, senza debug proverei così:

    Codice:
    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

  7. #7
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    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...

  8. #8
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Strano, prova a farti stampare sulla pagina i valori ad ogni giro, per capire cosa va storto

  9. #9
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    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

  10. #10
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Boh, prova a ripostare il codice così com'è adesso...

  11. #11
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    Codice:
    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

  12. #12
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    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

  13. #13
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Scusa, ma queste righe?

    Codice:
    rsa.Open sql, Conn, 3, 3 
    do while not rsa.eof
    Sono sparite...

    PS: hai loggato sulla pagina i valori a ciascun giro?
    Ultima modifica di artcava; 18-04-19 alle 00:12

  14. #14
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    Citazione Originariamente Scritto da artcava Visualizza Messaggio
    Scusa, ma queste righe?

    Codice:
    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...

  15. #15
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Citazione Originariamente Scritto da djjunior Visualizza Messaggio
    resta il fatto se metto valore minore...
    Questo valore minore sta in QtaDoc? Oppure?

  16. #16
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    Citazione Originariamente Scritto da artcava Visualizza Messaggio
    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

  17. #17
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    ...

    Codice:
       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?
    Ultima modifica di artcava; 18-04-19 alle 00:34 Motivo: ortografia

  18. #18
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    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

  19. #19
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Non è possibile, puoi ripostare tutto così com'è?

  20. #20
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    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

  21. #21
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    Scusami ARTCAVA
    approfitto del tuo aiuto sempre in merito allo script di cui sopra.
    Se si presentasse il caso per di aver esaurito tutta la quantità scaricata da tutti i prodotti es di 3 prodotti uguali:

    PASTA qta 538 qtascaricata 538
    PASTA qta 538 qtascaricata 538
    PASTA qta 538 qtascaricata 538

    e provo ad inserire altra quantità tipo 20
    è possibile inserirla al primo disponibile?
    es:

    PASTA qta 538 qtascaricata 558
    PASTA qta 538 qtascaricata 538
    PASTA qta 538 qtascaricata 538

    Grazie ancora

  22. #22
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Io farei più o meno così:


    Codice:
    articolo = request.form("descrizione") 
    qta_da_scaricare = CInt(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
    
    if qta_da_scaricare > 0 Then
        sql="SELECT TOP(1) * FROM db WHERE Articolo = & "'" & articolo & "'
        Set rsa = Server.CreateObject("ADODB.Recordset")
        qtaspu = rsa.fields("QtaSpuntata")
        rsa.fields("QtaSpuntata") = qtaspu + qta_da_scaricare
        rsa.update
    End If
    Però quello che vorrei suggerirti è di verificare prima sul piano logico se questa modalità ha senso per l'attività del tuo cliente o la tua se lo stai facendo per te.
    Mi riferisco al fatto che qui intravvedo una specie di gestione del magazzino, dove ci saranno ingressi di prodotti suddivisi in lotti e vendite successive dove dalle quantità dei vari lotti vengono stornate.
    Ma come fai a gestire una quantità in uscita superiore a quella consolidata in magazzino?

  23. #23
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    Grazie ARTCAVA
    anche del suggerimento, ma è stata una richiesta specifica del cliente avere questa possibilità di aumentare perchè in magazzino potrebbe esserci stesso articolo non quantizzato.
    Grazie ancora e ti auguro con l'occasione Buona Pasqua

  24. #24
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Grazie, Buona Pasqua anche a te!

  25. #25
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    Ciao ARTCAVA, scusa se riapro questo post, ho necessità di un aiuto al suddetto script che in mysql ha funzionato alla grande, ma lo stiamo "trasformando" in sql server, i campi in mysql erano tutti testo (longtext) e non creavano problemi ora in sql sono varchar(max) e mi sembra che le operazioni di confronto non agiscono su questi tipi di campi, potresti darmi una mano a "convertirlo" per utilizzo in sql?
    Infatti ho questo errore: i tipi di dati varchar(max) e varchar(max) nell'operatore subtract sono incompatibili
    Grazie e scusa ancora...

  26. #26
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    300
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Ciao djjunior, puoi postare lo script?
    Magari nella sezione "MySQL e altri Database"

    Grazie

  27. #27
    User
    Data Registrazione
    Aug 2008
    Messaggi
    56
    Grazie ARTCAVA,
    lo script lo vorrei sottoporre primo a te che me lo hai suggerito, perchè in pratica come vedi il parametro che dovrà passare qta_da_scaricare è con decimali tipo: 151.500, il campo nel db è decimal(10,3), sicuramente dovrei utilizzare qualche funzione di conversione o formatnumber (che non so quale, visto sottrazioni e somme), essendo che dal db come saprai i campi decimali hanno valore con i decimali es: 120.000, ma è solo una visualizzazione perchè quando li stampo a video questo valore lo vedo: 120 cioè senza zeri o punto(virgola)decimale.
    ecco lo script se puoi darmi una mano:
    Codice:
    articolo = request.form("descrizione") 
    qta_da_scaricare = "151.500"
    
    sql="SELECT * FROM db WHERE Articolo = '" & articolo & "' and (QtaDoc-QtaSpuntata)>0 "
    Set rsa = Server.CreateObject("ADODB.Recordset")
    rsa.Open sql, Conn, 3, 3
    do while not rsa.eof
    
       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
    
    if qta_da_scaricare > 0 Then
        sql="SELECT top(1) * FROM db WHERE Articolo = & "'" & articolo & "'
        Set rsa = Server.CreateObject("ADODB.Recordset")
        rsa.Open sql, Conn, 3, 3
        qtaspu = rsa.fields("QtaSpuntata")
        rsa.fields("QtaSpuntata") = qtaspu + qta_da_scaricare
        rsa.update
    End If
    
    rsa.close
    Grazie 1000 per l'aiuto.

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.