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 11

Prova su query

  1. #1
    CESABAS non  in linea Scribacchino
    Buongiorno, ho un problema con una query e sinceramente non riesco a capire il perch.

    TBL_fatture

    numero | data
    1 | 01/01/2013

    Maschera M_fatture con un controllo "data" formattato come data generica
    nel controllo data inseriamo il valore 01/01/2013

    Creiamo una query con i campi Numero e data, impostiamo come totali (max) entrambi e come criterio su data
    <=[Maschere]![M_FATTURE]![DATA]

    SELECT Max(tbl_fatture.Data) AS MaxDiData, Max(tbl_fatture.Numero) AS MaxDiNumero
    FROM tbl_fatture
    HAVING (((Max(tbl_fatture.Data))=[Maschere]![M_FATTURE]![DATA]));
    
    Visualizzando la qry avrete
    Maxdinumero | maxdidata
    1 | 01/01/2013


    ___________________________________

    ora aggiungete un record alla tbl_fatture

    numero | data
    1 | 01/01/2013
    2 | 05/01/2013

    ora visualizzate la qry e non ci sar alcun record...

    Perch??????????

    Grazie e buona domenica

  2. #2
    L'avatar di nman
    nman non  in linea Topo di biblioteca
    Quote Originariamente inviato da CESABAS Visualizza il messaggio
    ....... Perch??????????
    Perch il 5 gennaio viene interpretato come 1 maggio
    poi fra i criteri minori e/o maggiori che hai messo resti senza record


    devi usare Format( ....... )

    .

  3. #3
    CESABAS non  in linea Scribacchino
    ma il generatore di query non imposta automaticamente il format?

  4. #4
    CESABAS non  in linea Scribacchino
    cmq nman non pu essere come dici tu...anche se interpreta 5 maggio dovrebbe comunque restare il record
    1 | 01/01/2013

    infatti se il criterio 01/01/2013, ma uguale con 02/01/2013 comunque il valore data <= a 01/01/2013 sempre il primo record

    credo di aver trovato la soluzione...il criterio non deve essere su max

    SELECT Max(tbl_fatture.Numero) AS MaxDiNumero, Max(tbl_fatture.Data) AS MaxDiData
    FROM TBL_BIS RIGHT JOIN tbl_fatture ON TBL_BIS.ID = tbl_fatture.BIS
    HAVING (((tbl_fatture.Data)<=[Maschere]![M_FATTURE]![DATA] Or (tbl_fatture.Data)=[Maschere]![M_FATTURE]![DATA]));
    

  5. #5
    L'avatar di nman
    nman non  in linea Topo di biblioteca
    Ho detto una scemata

    Vedo solo ora che si tratta di SQL e non VBA

    I record che visualizzi dipendono dal criterio che metti in maschera.

    se in maschera hai 1 gennaio e in tabella hai solo 1 gennaio allora lo visualizzi

    ma se in maschera hai 1 gennaio e in tabella hai 1 gennaio e 5 gennaio
    allora il Max 5 gennaio

    ma nel criterio hai scritto che il Max sia uguale a 1 gennaio

    Non so se ho interpretato bene il problema ..........



    PS: in ogni caso quella query ( post #1 ) ti restituisce la massima data e il massimo numero
    ma non ti garantisce assolutamente che i 2 valori arrivino dallo stesso record




    Facci sapere

  6. #6
    CESABAS non  in linea Scribacchino
    Hai ragione devo ragionarci un attimo su

  7. #7
    CESABAS non  in linea Scribacchino
    Dovrei fare 2 qry, la prima mi trova la data MAX (e quindi quella immediatamente prima alla data da me inserita nel controllo) e la seconda che mi trova il numero max con criterio datamax della precedente qry

  8. #8
    CESABAS non  in linea Scribacchino
    ....una domanda, ma possibile utilizzare un campo della prima qry come criterio per la seconda?
    Ci provato ma mi chiede di inserire il valore.

    SELECT Max(tbl_fatture.Numero) AS MaxDiNumero
    FROM tbl_fatture
    HAVING (((tbl_fatture.Data)=[qry_fatture_bis].[MaxDiData]));
    

  9. #9
    L'avatar di nman
    nman non  in linea Topo di biblioteca
    Quote Originariamente inviato da CESABAS Visualizza il messaggio
    ....una domanda, ma possibile utilizzare un campo della prima qry come criterio per la seconda?
    Si possibile, fai una sottoquery racchiusa fra parentesi
    per esempio (SELECT Max(NomeCampo) FROM NomeTabella)

    il criterio deve restituire solamente 1 record ( caso del max )

    diversamente devi usare anche IN
    IN (SELECT NomeCampo FROM NomeTabella)




    Pero in effetti non ho capito nel complesso il problema,

    prima avevi solo tbl_fatture
    poi hai aggiunto TBL_BIS
    poi hai aggiunto qry_fatture_bis e hai tolto TBL_BIS
    ?????


    .

  10. #10
    CESABAS non  in linea Scribacchino
    La tbl_bis una tabella relazionata.

    In sostanza con la prima query devo trovare la prima data in tbl_fatture massima, < o = alla data indicata nel controllo
    con la seconda qry devono trovare il numero massimo in tbl_fatture con criterio la data uguale al maxdidata della prima qry

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. prova excel per concorso
    Da crisp nel forum Microsoft Excel
    Risposte: 8
    Ultimo Post: 18-06-2020, 08:52
  2. Prova
    Da Pasquale63 nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 15-05-2014, 16:23
  3. Prova Mazda 2
    Da marco13 nel forum Pausa caff
    Risposte: 0
    Ultimo Post: 13-01-2009, 10:11
  4. prova di travaso
    Da Smith nel forum Altri linguaggi e strumenti
    Risposte: 10
    Ultimo Post: 05-07-2006, 01:59
  5. [ASP]Server di prova
    Da Mephiston nel forum ASP 3, ASP .Net
    Risposte: 1
    Ultimo Post: 01-04-2006, 15:06