+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Problemi con Query DISTINCT SUM

  1. #1
    pierovb non è in linea Scolaretto
    Luogo
    Reggio Calabria
    Post
    276

    Problemi con Query DISTINCT SUM

    Buongiorno,
    cerco di effettuare la somma del campo numerico nEt con la seguente routine

    codice:
    Dim t As Long
       
       Set rs = New ADODB.Recordset
    
    
       sSQL = "SELECT SUM(nEt) as t "
       sSQL = sSQL & " FROM(SELECT DISTINCT Data"
       sSQL = sSQL & " FROM Etichette WHERE "
       sSQL = sSQL & " Centro='" & Combo1.Text & "'"
       sSQL = sSQL & " GROUP By Data)"
       
       rs.Open sSQL, cn, adOpenStatic, adLockOptimistic
       If rs(0) > 0 Then
          Text2.Text = rs(0)
       Else
          Text2.Text = "0"
       End If
    
    rs.Close: Set rs = Nothing
    mi solleva l'errore :

    Nessun valore per alcuni parametri specificati

    Non riesco a capire se è un problema si concatenazione stringa, di chiusura parentesi.
    L' unico parametro che seleziono è il Centro.
    Grazie.

  2. #2
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    6,087
    A parte la manca dello spazio in
    FROM(SELECT

    mi pare non corretta dal punto di vista logico.
    La sub-query SELECT DISTINCT Data FROM Etichette restituisce un campo Data (immagino).

    Ora, come puoi anche solo immaginare di fare una SUM su un campo che non viene restituito dalla sub-query (e quindi non esiste)?

  3. #3
    Sgrubak ora è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    308
    Ciao Piero,
    andando a caso, direi che l'errore lo solleva sulla Open del RecordSet... La connessione è valida e aperta?
    In oltre di sicuro ti manca una parentesi chiusa prima del [Group By]. Anche se non capisco come tu possa trovare la colonna [nEt] se nella select annidata estrai solo [Data]

  4. #4
    pierovb non è in linea Scolaretto
    Luogo
    Reggio Calabria
    Post
    276
    Quote Originariamente inviato da gibra Visualizza il messaggio
    A parte la manca dello spazio in
    FROM(SELECT


    mi pare non corretta dal punto di vista logico.
    La sub-query SELECT DISTINCT Data FROM Etichette restituisce un campo Data (immagino).

    Ora, come puoi anche solo immaginare di fare una SUM su un campo che non viene restituito dalla sub-query (e quindi non esiste)?
    No Lo spazio c'è. purtroppo non è questo il problema.


    da "profano" ho pensato di effettuare la SUM prendendo tutti i numeri nEt di una sola data.
    per cui ho scritto la query in questo modo.
    tra l'altro ho questo esempio funzionante, con COUNT

    codice:
    "SELECT Count(*) AS t FROM (SELECT DISTINCT Colonna FROM Box WHERE Congelatore=" & Val(Combo1.Text) & ")"
    infatti se sostuisco COUNT a SUM funziona.
    Come devo impostare la query con SUM

  5. #5
    pierovb non è in linea Scolaretto
    Luogo
    Reggio Calabria
    Post
    276
    Ho risolto.
    Rileggere il tuo post mi ha acceso la lampadina, che tu hai collegato alla batteria , e ho risolto.
    codice:
    sSQL = "SELECT SUM(nEt) FROM (SELECT DISTINCT Data,nEt FROM Etichette WHERE Centro='" & Combo1.Text & "'" & ")"
    Come tu mi hai suggerito, e io non capivo, dovevo aggiungere il campo nEt.
    Grazie

  6. #6
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,851
    Per curiosità, che cosa espone Combo1 ?
    Il regolamento del forum: la prima cosa da leggere.

  7. #7
    pierovb non è in linea Scolaretto
    Luogo
    Reggio Calabria
    Post
    276
    Il nome del centro per il quale sono state stampate le etichette.

  8. #8
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,851
    e che succede se il nome di un centro contiene un apostrofo?
    Il regolamento del forum: la prima cosa da leggere.

  9. #9
    pierovb non è in linea Scolaretto
    Luogo
    Reggio Calabria
    Post
    276
    Per semplicità ho riportato il codice dove stavo smanettando.
    nella versione "ufficiale" inserisco la funzione Replace

    codice:
         Replace(Combo1.Text, "'", "''")

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi