Intervallo di date

di il
5 risposte

Intervallo di date

Ho un problema che non riesco a risolvere per cui chiedo il vostro aiuto.
Ho una maschera "OPERAI" dove inserisco la "Data", il Nome/i dell'operaio che è presente nella data inserita.
Nell'inserire i dati dall'11/01/2016 al 22/01/2016 (gg 11 01-12 01 - 13 01 ecc fino al gg 22 01) mi sono accorto di aver saltato il giorno 20/01/2016. Ho inserito il gg 20 01 alla fine e cioè dopo il gg.22 01.
Quando vado a filtrare le presenze degli operai dall'11/01/2016 al 22/01/2016 ho un risultato errato (8 gg lavorati in luogo di 9) poichè mi esclude il gg. 20 seppur compreso tra il 11/01 e il 22/01.
Vedendo l'idDa (id data) mi accorgo che questi è in sequenza ovvero:
iddata 44=11/ 01
'' 45= 12/01
fino a
iddata 51= 22/01
iddata 52=20/01
Capisco che l'esclusione è dovuta al fatto che l'iddata del 20/01 è successivo a quello del 22/01 per cui è forse il filtro che non va.
Il filtro è chiaramente applicato sull'iddata.
Tabella DATA
iddata
Between [Forms]![MRicDataOp]![CasellaCombinata8] And [Forms]![MRicDataOp]![CasellaCombinata10]
Come faccio x risolvere questo problema

Per i piu esperti la query ed il filtro è (copiando e incollando la query in SQL):
SELECT Operai.IDOp, Operai.Cognome, Operai.Nome, collDataOperai.H, Data.Data, Data.IDDa, Operai.CH, Operai.Subapp
FROM Operai INNER JOIN (Data INNER JOIN collDataOperai ON Data.IDDa = collDataOperai.idda) ON Operai.IDOp = collDataOperai.idop
WHERE (((Operai.IDOp)=[Forms]![MRicDataOp]![CasellaCombinata21]) AND ((Data.IDDa) Between [Forms]![MRicDataOp]![CasellaCombinata8] And [Forms]![MRicDataOp]![CasellaCombinata10]));

5 Risposte

  • Re: Intervallo di date

    Devi applicare il filtro direttamente sul campo Data e non IDData.
    Temo che l'errore nasca qui
    Between [Forms]![MRicDataOp]![CasellaCombinata8] And [Forms]![MRicDataOp]![CasellaCombinata10]
    perchè le caselle combinate puntano su IDData. La risposta l'hai già fornita da solo

    zonevinc ha scritto:


    Capisco che l'esclusione è dovuta al fatto che l'iddata del 20/01 è successivo a quello del 22/01 per cui è forse il filtro che non va.
    Il filtro è chiaramente applicato sull'iddata.
    Tabella DATA
    iddata
    Between [Forms]![MRicDataOp]![CasellaCombinata8] And [Forms]![MRicDataOp]![CasellaCombinata10]
  • Re: Intervallo di date

    Si Osvaldo ci avevo pensato e ho provato "velocemente" a tagliare il filtro dall'iddata ed incollarlo "semplicemente" nel campo Data. Mi da errore. Forse devo riprovare con maggior calma
    Ti aggiorno
  • Re: Intervallo di date

    Si ... ho riprovato e funziona. E' come dicevi: "perchè le caselle combinate puntano su IDData."
    Ho cambiato le caselle combinate (eliminando l'iddata) e ho spostato il filtro dall'iddata a Data e "per incanto" - Funziona
    Grazie OsV

    Ps... Quando non mi riferisco all'id tremo ..... Potrei avere qualche problema che dici? ci sarebbe altro modo x risolverlo (riferendomi all'iddata - starei piu tranquillo)
  • Re: Intervallo di date

    E poi una curiosità
    Ho riletto il mio post e non ci ho capito nulla - da cosa hai capito che il problema erano le caselle combinate?
  • Re: Intervallo di date

    Che una casella combinata punti su un ID è generalmente corretto sempre.
    Ma dietro una casella combinata c'è sempre un "nuvolo" di campi/colonne che le stanno accanto. Se sfrutti la proprietà Column di una casella combinata riesci a focalizzare l'attenzione sulle colonne successive. Ricordando che:
    1aColonna = Column(0)
    2aColonna = Column(1)
    3aColonna = Column(2)
    ecc...
    per prelevare il valore del tuo campo Data che (mi pare) corrisponde alla 2aColonna, puoi dichiarare così:
    [Forms]![NomeMaschera]![NomeCasellaCombinata].Column(1)
Devi accedere o registrarti per scrivere nel forum
5 risposte