Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Differenza aritmetica

  1. #1
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Differenza aritmetica

    Ciao.

    Con una query select estraggo questi record:

    codice:
    if Rs("Quant") <> "0" then
       strQuant = cDbl(Rs("Quant"))
    end if
    
    if Rs("QuantitaUn") <> "0" then
       strQuantitaUn = cDbl(Rs("QuantitaUn"))
    end if
    
    if Rs("QuantitaKg") <> "0" then
       strQuantitaKg = cDbl(Rs("QuantitaKg"))
    end if
    
    if Rs("QuantitaLT") <> "0" then
       strQuantitaLT = cDbl(Rs("QuantitaLT"))
    end if
    Adesso devo fare la differenza tra:

    strQuant - strQuantitaUn
    strQuant - strQuantitaKg
    strQuant - strQuantitaLt

    ed aggiornare il campo Quant della tabella.

    Ma come faccio a distinguere tra i record estratti quelli a cui devo sottrarre strQuantitaUn o strQuantitaKg o strQuantitaLt ?


  2. #2

  3. #3
    Se non ci spieghi la logica del dominio applicativo... come facciamo a risponderti?
    Prova a rileggere quello che hai scritto e noterai che non ci sono elementi sufficenti per comprendere il problema.

    Ciao.

    PS. Volete risposte... e non volete consumare neanche 5 minuti a formulare meglio la domanda? Pazzi.

  4. #4
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Avete ragione, scusate; ma non tutti abbiamo il dono di spiegarsi come si deve.

    Faccio il mio migliore sforzo:

    1) Le due tabelle si chiamano TABELLA_A e TABELLA_B;

    2) Ho scritto una query INNER JOIN che estrae un campo comune tra le due tabelle diverse, il campo si chiama CODICECOMUNE;

    3) Dalla TABELLA_A estraggo il CODICECOMUNE con i valori dei campi delle colonne QuantitaUn, QuantitaKg e QuantitaLT;

    4) Per ogni CODICECOMUNE In realtà solo una delle colonne ha un valore, ad esempio:

    CodiceComune = F23
    QuantitaUn = 0
    Quantitakg = 0
    QuantitaLT = 0,007

    5) Ciò che devo fare è la differenza tra il campo valorizzato di una delle tre colonne QuantitaUn, QuantitaKg e QuantitaLT della TABELLA_A e la quantità presente nel campo Quantità della TABELLA_B corrispondente al CodiceComune;

    6) Eseguita la differenza devo aggiornare il campo quantità della TABELLA_B registrando la differenza;


    Come faccio a distinguere quando devo sottrare strQuantitaUn o strQuantitaKg o strQuantitaLt ?

    Spero si capisca meglio, altrimenti....

  5. #5
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da Mizushi
    Avete ragione, scusate; ma non tutti abbiamo il dono di spiegarsi come si deve.

    Faccio il mio migliore sforzo:

    1) Le due tabelle si chiamano TABELLA_A e TABELLA_B;

    2) Ho scritto una query INNER JOIN che estrae un campo comune tra le due tabelle diverse, il campo si chiama CODICECOMUNE;

    3) Dalla TABELLA_A estraggo il CODICECOMUNE con i valori dei campi delle colonne QuantitaUn, QuantitaKg e QuantitaLT;

    4) Per ogni CODICECOMUNE In realtà solo una delle colonne ha un valore, ad esempio:

    CodiceComune = F23
    QuantitaUn = 0
    Quantitakg = 0
    QuantitaLT = 0,007

    5) Ciò che devo fare è la differenza tra il campo valorizzato di una delle tre colonne QuantitaUn, QuantitaKg e QuantitaLT della TABELLA_A e la quantità presente nel campo Quantità della TABELLA_B corrispondente al CodiceComune;

    6) Eseguita la differenza devo aggiornare il campo quantità della TABELLA_B registrando la differenza;

    In sostanza è una specie di scarico magazzino....

    Come faccio a distinguere quando devo sottrare strQuantitaUn o strQuantitaKg o strQuantitaLt ?

    Spero si capisca meglio, altrimenti....

  6. #6
    somma le tre quantità e sottrai la somma. che te frega? quelle che sono a zero non contano

  7. #7
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    somma le tre quantità e sottrai la somma. che te frega? quelle che sono a zero non contano
    Mizzica, quindi mi sono spiegato?

    Grazie Optime io non ci sarei mai arrivato...

    Ho solo un problema, non so perchè ma la query di aggiornamento mi viene visualizzata anche se nella TABELLA_B quel CODICECOMUNE non è ancora previsto, cioè:

    codice:
    If Not Rs.EOF Then
    Rs.MoveFirst 
    Do While Not Rs.Eof
    
    strSommaColonne = cDbl(Rs("QuantitaUn")) + cDbl(Rs("QuantitaKg")) + cDbl(Rs("QuantitaLT"))
    
    if Rs("Quant") <> "0" then
       strQuant = cDbl(Rs("Quant"))
    end if
    
    strDifferenza = cDbl(strQuant) - cDbl(strSommaColonne)
    
       SQL_UPDATE = " UPDATE "
       SQL_UPDATE = SQL_UPDATE & " TABELLA_B "
       SQL_UPDATE = SQL_UPDATE & " SET "
       SQL_UPDATE = SQL_UPDATE & " QUANT = " & replace(strDifferenza, ",", ".") & " "
       SQL_UPDATE = SQL_UPDATE & " WHERE "
       SQL_UPDATE = SQL_UPDATE & " CODICECOMUNE = '" & Rs("CODICECOMUNE") & "' "
       objconn.Execute(SQL_UPDATE)
       response.write "Aggiorna Quantità ===> " & SQL_UPDATE & " 
    "
    
    Rs.MoveNext 
    Loop
    
    else 
        
        response.write "NON AGGIORNA
    "
    
    end if
    Cioè:

    codice:
    Aggiorna Quantità ===> UPDATE TABELLA_B SET QUANT = 854 WHERE CODICECOMUNE = 'F29'
    Ma il CODICECOMUNE F29 non esiste nella TABELLA_B....

  8. #8
    ma codicecomune lo prendi dal recordset già aperto... che c'entra con l'update?

  9. #9
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    ma codicecomune lo prendi dal recordset già aperto... che c'entra con l'update?
    Si; questa è la query che estrae il codicecomune dalle due tabelle:

    codice:
    SQL = " SELECT " 
    SQL = SQL & " C.*, " 
    SQL = SQL & " S.* "
    SQL = SQL & " FROM " 
    SQL = SQL & " TABELLA_A AS C "
    SQL = SQL & " LEFT OUTER " 
    SQL = SQL & " JOIN TABELLA_B AS S " 
    SQL = SQL & " ON S.CODICECOMUNE= C.CODICECOMUNE " 
    SQL = SQL & " WHERE "
    SQL = SQL & " IDCD = " & strVar

  10. #10
    se debbono essere comuni, usa la INNER JOIN

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.