Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1

    query aggiornamento vb6 errata

    ciao ragazzi. non riesco a capire dove sbaglio in questa query

    rs.open "Update analisi set spese in(Select sum(prezzo) from prezzario group by voci)", db, adOpenStatic


    è una semplice query di aggiornamento. ma non capisco dove sbaglio.
    - DenvEr -

  2. #2
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755

    Re: query aggiornamento vb6 errata

    Originariamente inviato da DenvEr87
    ...
    rs.open "Update analisi set spese in(Select sum(prezzo) from prezzario group by voci)", db, adOpenStatic

    ...
    :master:
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  3. #3
    scusa. ma nell'impazzire ho dimenticato qualcosa.
    mi spiego meglio

    sto lavorando su un .mdb access

    ho due tabelle

    voglio che un campo della tabella 1 venga aggiornato con la somma di 2 determinati campi della tabella due.

    quindi provo cosi'

    rs.open "update listino set prezzo in (select sum (totale) from prezziario group by voci) where tariffa='" & Text1.Text &"' ", db, adOpenStatic

    non capisco dove sbaglio. l'utilizzo di "IN" che io sappia serve a far annidare due query ed è proprio quello che sto cercando di fare. solo che non capisco perchè non funziona se la query è di tipo update!
    - DenvEr -

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    759
    E' sbagliata in varie parti, e comunque una query di aggiornamento non restituisce un recordset.
    Spiega cosa vorresti fare e indica anche a quale tipo di database è rivolta.

  5. #5
    sto creando un applicazione in vb6 che carica i dati in un mshflexgrid da un file .mdb di microsoft access 2007. tutto funziona o almeno sembra

    provo a renderlo piu facile.

    ora son arrivato al punto che mi serve modificare un campo della tabella 1 che chiamerò listino. il campo è "prezzo". voglio che "prezzo" prenda come valore, la somma di due determinati valori di un campo che si chiama totale, della tabella2 che si chiama prezziario.
    come posso fare?
    - DenvEr -

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da DenvEr87
    rs.open "update listino set prezzo in (select sum (totale) from prezziario group by voci) where tariffa='" & Text1.Text &"' ", db, adOpenStatic

    non capisco dove sbaglio. l'utilizzo di "IN" che io sappia serve a far annidare due query ed è proprio quello che sto cercando di fare. solo che non capisco perchè non funziona se la query è di tipo update!
    Come ti ha già detto Grumpy, sbagli in varie parti.

    1. set prezzo = ... (e NON set prezzo IN ...)
    2. la query (select sum .... cosa restituisce se eseguita da sola?
    3. di norma per fare un'aggiornamento non serve un recordset, basta il metodo Execute della connessione, o meglio, si dovrebbe usare un Command, quindi Command.Execute
    4. il tuo recordset è ReadOnly, come fa ad aggiornarsi?
    (sempre ammesso che l'enunciato SQL sia corretto, il che non è)

    E comunque non funziona l'update in quel modo.
    Perchè quasi sicuramente restituisce un'errore "E' necessaria una query aggiornabile'.

    Soluzione diretta:
    Prendi il valore dalla tabella prezziario, poi usalo nella query di aggiornamento della tabella listino.




  7. #7
    come faccio a prendere quel valore e ad annidare il tutto?
    - DenvEr -

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da DenvEr87
    come faccio a prendere quel valore e ad annidare il tutto?
    Non capisco la domanda.
    Hai già l'enunciato SELECT che prende il valore dal prezziario, perchè ora lo chiedi a noi?

    Spiega anche cosa intendi per 'annidare il tutto' ...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    759
    La parola chiave "IN" serve ad indicare che la tabella fa parte di un altro database.
    Sum(totale) non ti darebbe la somma di due campi ma la somma di tutti i valori del campo totale della tabella prezziario.
    (Oltre alle osservazioni di gibra)

  10. #10
    allora.mi spiego meglio

    tabella1 ha 3 record e 2 campi che sono nomevoce e prezzo

    voce1 che vale 5
    voce2 che vale 10
    voce3 che vale 15

    tabella2 ha 2 record e 2 campi che sono nomevoce e somma

    voce1 che vale 2
    voce1 che vale 3


    ora se modifico il primo valore di tabella 2 ( che è 2) e metto per esempio 4 voglio che in tabella 1 al posto di 5 mi dia 7. una cosa del genere.

    ora non so se ho incasinato il discorso.
    - 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 © 2025 vBulletin Solutions, Inc. All rights reserved.