• User

    @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


  • Moderatore

    ...

    
       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?


  • User

    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


  • Moderatore

    Non è possibile, puoi ripostare tutto così com'è?


  • User

    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


  • User

    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


  • Moderatore

    Io farei più o meno così:

    
    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?


  • User

    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


  • Moderatore

    Grazie, Buona Pasqua anche a te!


  • User

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


  • Moderatore

    Ciao djjunior, puoi postare lo script?
    Magari nella sezione "MySQL e altri Database"

    Grazie


  • User

    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:

    
    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.