Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 30
  1. #11
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    per collegarti al database come fai?
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  2. #12
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Allora prima esegui la query che ti recupera il valore (in questo caso ti serve un recordset per incamerarlo):

    Supponiamo che CN è la tua connessione al database:

    codice:
    Dim sSQL As String
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    sSQL = " SELECT voce1+voce2 As Totale FROM Tabella 2 "
    sSQL = sSQL & " WHERE <condizione_che_identifica_il_record_modificato>"
    Set rs = CN.Execute(sSQL)
    Ora rs("totale") contiene la somma

    Adesso puoi fare l'aggiornamento

    codice:
    sSQL = ""
    sSQL = " UPDATE Tabella1 SET voce1 = " & rs("totale") 
    sSQL = sSQL & " WHERE <condizione_che_identifica_il_record_da_modificare>"
    CN.Execute sSQL
    
    rs.Close
    Set rs = Nothing
    Comunque non andrebbe fatto così come te l'ho mostrato io.
    Ma d'altra parte questi sono i campi che hai indicato e non sapevo cosa mettere.

    Nella realtà, le due clausole WHERE vanno impostate correttamente sulla PK della tabella.
    Perchè c'è una PK in entrambe le tabelle, vero?


  3. #13
    in realtà NO!
    la pk l ho impostata solamente nella prima tabella. ora metto un cattura schermata e vi mostro quello che voglio fare. cosi si capisce molto. comunque grazie all ultimo esempio di gibra e all'aiuto di tutti ho piu o meno risolto (penso). solo che manca ancora qualcosa perchè non fa l aggiornamento.

    ora da come si vede nell immagine vorrei che in tabella "analisi" si faccia una somma
    di "TOTAL" e che vengano raggruppate tutte le stringhe per "VOCEC"


    in tabella2, "LISTINO" ovviamente voce1 non dovrebbe piu valere 49,34 ma 220,11. quindi lo sovrascrive.
    io ho pensato di far cosi' ma non mi sovrascrive nulla in listino.



    Dim sSQL As String
    sSQL = " SELECT vocec, sum(total) as totale from analisi group by vocec"
    Set rs = db.Execute(sSQL)

    sSQL = " UPDATE listino SET prezzo = " & rs("totale") & " where tariffa= " & rs("vocec") & ""

    rs.close
    Immagini allegate Immagini allegate
    - DenvEr -

  4. #14
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da DenvEr87
    in realtà NO!
    AHI!!! Devi SEMPRE avere una chiave primaria univoca che ti consenta di identificare inequivocabilmente una riga della tabella, altrimenti prima o poi avrai problemi di aggiornamento.
    In linea di massima io uso sempre un campo extra di nome <ID + nometabella>, esempio IDListino, IDAnalisi, ...


    Originariamente inviato da DenvEr87
    ora da come si vede nell immagine vorrei che in tabella "analisi" si faccia una somma
    di "TOTAL" e che vengano raggruppate tutte le stringhe per "VOCEC"

    in tabella2, "LISTINO" ovviamente voce1 non dovrebbe piu valere 49,34 ma 220,11. quindi lo sovrascrive.
    io ho pensato di far cosi' ma non mi sovrascrive nulla in listino.

    Dim sSQL As String
    sSQL = " SELECT vocec, sum(total) as totale from analisi group by vocec"
    Set rs = db.Execute(sSQL)

    sSQL = " UPDATE listino SET prezzo = " & rs("totale") & " where tariffa= " & rs("vocec") & ""

    rs.close
    Prima di tutto, non può fare l'aggiornamento semplicemente perchè la condizione è sbagliata.

    codice:
    where tariffa= " & rs("vocec") & ""
    Infatti tu stai dicendo al motore database (mi esprimo in pseudo-codice):
    codice:
    Aggiornami il campo prezzo   della tabella listino  
    ma solo per i record in cui il campo tariffa   è = 'vocec '
    Adesso guarda la tua tabella listino : non esiste un campo tariffa con valore 'vocec'!

    Ma anche la SELECT vocec, sum(total) as totale non è propriamente corretta.
    il campo vocec non va messo, infatti ti costringe ad aggiungere un 'GROUP BY vocec' inutile e dannoso e che, in realtà, ti 'divide' le righe (restituisce 3 record) invece quando tu ne vuoi UNA sola con la somma totale, quindi la SELECT corretta è:

    codice:
    sSQL = " SELECT sum(total) as totale FROM analisi"
    Ora veniamo all'UPDATE. A parte quanto ho già scritto sopra, tu scrivi questo enunciato SQL
    codice:
    sSQL = " UPDATE listino SET prezzo = " & rs("totale") & " where tariffa= " & rs("vocec") & ""
    Ora guarda bene il tuo enunciato SQL e rispondimi:
    dove hai indicato che il valore rs("totale") dovrà sostituire quello esistente (49,34) del campo 'voce1' della tabella Listino ?

    Devi indicare espressamente la condizione che identifica la riga da modificare, in pratica:
    WHERE campo=valore_corrente
    ovvero:

    codice:
    sSQL = " UPDATE listino SET prezzo = " & rs("totale") & " WHERE voce1 = 49,34


  5. #15
    grazie gibra!!!

    in effetti mi sono spiegato abbastanza male. in effetti non ho detto in maniera esplicita di modificare " WHERE voce1 = 49,34" perchè a me interessava far si che le somme di "ANALISI" dove vocec = X, venissero aggiornate in "LISTINO" dove tariffa è = X.
    anche quelle somme che comunque rimangono invariate
    - DenvEr -

  6. #16
    penso che sia una cosa del genere alla fine. ma non aggiorna.


    Dim sSQL As String
    sSQL = " SELECT sum(total) as totale FROM analisi"
    Set rs = db.Execute(sSQL)
    sSQL = " UPDATE listino SET prezzo = " & rs("totale") & " WHERE listino.tariffa= analisi.vocec"
    - DenvEr -

  7. #17

  8. #18
    uuufffffffff ma perchè?
    - DenvEr -

  9. #19
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Rileggi i messaggi precedenti. Ne abbiamo già parlato, e continui a fare lo stesso errore.



  10. #20
    sto IMPAZZENDO!!!!
    - DenvEr -

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.