Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Uso della funzione LIMIT o TOP

  1. #1
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Buongiorno, ho un problema di visualizzazione, dovrei visualizzare con questa query
    SELECT TOP 2 DB.[Definizione Sede Tecnica], Count(IIf(([DB].[Data creazione avviso]>=#3/18/2021# And [DB].[Data creazione avviso]<=#3/31/2021#+1 And ([Data Fine Lavori] Is Not Null Or [Data Chiusura avviso] Is Not Null)),[Ordine])) AS Ore_Lavorate_2021
    FROM DB
    WHERE (((DB.[Tipo Ordine])="z002"))
    GROUP BY DB.[Definizione Sede Tecnica]
    ORDER BY Count(IIf(([DB].[Data creazione avviso]>=#3/18/2021# And [DB].[Data creazione avviso]<=#3/31/2021#+1 And ([Data Fine Lavori] Is Not Null Or [Data Chiusura avviso] Is Not Null)),[Ordine])) DESC;
    
    funziona rappresentando i primi due record ma se il valore di "Ore_Lavorate_2021" e uguale, visualizza tutti i record con il valore uguale, come da screen allegato:
    https://www.dropbox.com/s/lkq82qktp3...agine.jpg?dl=0
    ho letto che LIMIT non può essere usato, quindi avete una idea di come potrei fare ?
    ℹ️ Leggi di più su attila666 ...

  2. #2
    Ho problemi a far quadrare la SQL. O c'è un errore di copia incolla o... c'è qualcosa che non va.
    Nella IIf non mi ci trovo, c'è solo la parte relativa al True, manca quella del False. Vogliamo un editor SQL decente!!!! (su Access, non qui sul forum)
    Posto solo la parte della IIf cercando con un po' di indentazione di rendere anche visivamente quello che mi lascia dubbioso.
    Count(
    IIf(
    ---inizio epressione da valutare
    ([DB].[Data creazione avviso] >= #3 / 18 / 2021 #
    AND [DB].[Data creazione avviso] <= #3 / 31 / 2021 # + 1
    AND ([Data Fine Lavori] IS NOT NULL OR [Data Chiusura avviso] IS NOT NULL)
    ),
    ---fine dell'espressione da valutare
    [Ordine] --parte da eseguire se Vero
    ) ----fine della IIf
    ) AS Ore_Lavorate_2021

    Se non mi chiarisci questo non mi avventuro nel resto.
    Ultima modifica di Phil_cattivocarattere; 07-04-2021 11:50 

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    JET non ha LIMIT... prova a leggere questo, mi pare un discreto punto di partenza:
    https://stackoverflow.com/questions/...cess-limit-x-y
    ℹ️ Leggi di più su @Alex ...

  4. #4
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Ho problemi a far quadrare la SQL. O c'è un errore di copia incolla o... c'è qualcosa che non va.
    Nella IIf non mi ci trovo, c'è solo la parte relativa al True, manca quella del False. Vogliamo un editor SQL decente!!!! (su Access, non qui sul forum)
    Posto solo la parte della IIf cercando con un po' di indentazione di rendere anche visivamente quello che mi lascia dubbioso.
    Count(
    IIf(
    ---inizio epressione da valutare
    ([DB].[Data creazione avviso] >= #3 / 18 / 2021 #
    AND [DB].[Data creazione avviso] <= #3 / 31 / 2021 # + 1
    AND ([Data Fine Lavori] IS NOT NULL OR [Data Chiusura avviso] IS NOT NULL)
    ),
    ---fine dell'espressione da valutare
    [Ordine] --parte da eseguire se Vero
    ) ----fine della IIf
    ) AS Ore_Lavorate_2021

    Se non mi chiarisci questo non mi avventuro nel resto.
    hai ragione, non me ne sono neanche accorto perché come è composta la tabella non può essere false
    ℹ️ Leggi di più su attila666 ...

  5. #5
    Quote Originariamente inviato da attila666 Visualizza il messaggio
    hai ragione, non me ne sono neanche accorto perché come è composta la tabella non può essere false
    A cosa serve quindi l'intera IIf, verrebbe da chiedersi, o no? Almeno adesso lo sai.
    Non ha niente a che fare il con problema del TOP (e dell'inesistenza di LIMIT in Jet) ma... si fa quello che si può.

  6. #6
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    A cosa serve quindi l'intera IIf, verrebbe da chiedersi, o no? Almeno adesso lo sai.
    Non ha niente a che fare il con problema del TOP (e dell'inesistenza di LIMIT in Jet) ma... si fa quello che si può.
    Perdonami, ma anche senza la condizione FALSE (che ovviamente ora integrerò ) la IIF fa il suo lavoro filtrando comunque no ?

    Edit; stavo cercando di mettere la condizione FALSE alla funzione, e mi sono perso (premetto che in questo ambiente sono un newbie) perché visto che la funzione conta gli [ordini] (campo numerico) solo se la condizione IIF viene soddisfatta, cosa dovrei mettere come FALSE e che non venga a sua volta conteggiata ? qualsiasi condizione aggiungo la query la conteggia e mi sballa il risultato...
    Ultima modifica di attila666; 07-04-2021 13:22 
    ℹ️ Leggi di più su attila666 ...

  7. #7
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    JET non ha LIMIT... prova a leggere questo, mi pare un discreto punto di partenza:
    https://stackoverflow.com/questions/...cess-limit-x-y
    Grazie del link, ci sono molti spunti per studiare il problema
    ℹ️ Leggi di più su attila666 ...

  8. #8
    L'avatar di muttley005
    muttley005 ora è in linea Topo di biblioteca
    secondo me potresti provare seguendo questi passi
    1. togli il TOP dalla SQL e lascia l'ordine che ti interessa (in realtà potresti lasciarlo per ridurre i record passati alla SQL "padre", vedi secondo punto)
    2. metti la tua SQL risultante come SUB di un'altra in cui metti il TOP

  9. #9
    Quote Originariamente inviato da attila666 Visualizza il messaggio
    Perdonami, ma anche senza la condizione FALSE (che ovviamente ora integrerò ) la IIF fa il suo lavoro filtrando comunque no ?
    Forse perché qualcosa ci mette la pezza in assenza della "parte false". Ad intuito e da un paio di prove volanti, nel tuo caso equivale ad un IIf(espressione da verificare, [campo], Null).
    Il Count non considera il Null e quindi hai il risultato giusto. Ecco che mi aggancio a questo
    Quote Originariamente inviato da attila666 Visualizza il messaggio
    Edit; stavo cercando di mettere la condizione FALSE alla funzione, ... la funzione conta gli [ordini] (campo numerico) solo se la condizione IIF viene soddisfatta, ...
    invece di contare, sommi così: Sum(IIf(espressione da verificare, 1, 0))

  10. #10
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    invece di contare, sommi così: Sum(IIf(espressione da verificare, 1, 0))
    E si, questo ha senso
    Grazie
    ℹ️ Leggi di più su attila666 ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 3
    Ultimo Post: 26-08-2017, 05:57
  2. Uso della funzione API PrintDlg
    Da ganzos nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 23-07-2011, 10:59
  3. corrispettivo della funzione VALORE in VBA?
    Da caracalla nel forum Microsoft Access
    Risposte: 10
    Ultimo Post: 25-03-2011, 12:06
  4. [Access] Esiste una funzione LIMIT?
    Da Zigo nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 25-09-2007, 21:45
  5. funzione giorni della settimana
    Da papy2 nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 19-04-2006, 17:19