Funzione di dominio Dlookup per trovare ultima data di consegna di un capo di vestiario.

Anonimo
2020-08-04T08:20:32+00:00

Buongiorno a tutti.

Ho le seguenti tabelle in relazione tra loro.

Ho la necessità di conoscere per ogni dipendente ( contraddistinto in modo univoco dal campo Matricola: tipo testo breve es. 112233A) l'ultima data ( quindi data più recente) di consegna dei capi di vestiario.

 La consegna dei capi di vestiario la gestisco tramite una maschera ( come da immagine allegata) in cui il campo dove viene inserita la Matricola ( =[cboFornitore].column con questa modalità si chiama txtCap

Ho creato sulla stessa una casella di testo non associata con questo codice :

=DLookUp("DataPagamento";"tblfatture";"Matricola = '" & [Maschere]![frmFattura]![txtCap]) & "'"

ma come potete notare dall'immagine allegata, la casella di testo mi segnala #Errore.

Ho pensato di gestire il tutto tramite query:

SELECT tblFatture.DataPagamento, tblAzienda.Matricola

FROM (tblAzienda INNER JOIN tblFatture ON tblAzienda.ID_Azienda = tblFatture.ID_Azienda) INNER JOIN tblRigheFattura ON tblFatture.ID_Fattura = tblRigheFattura.ID_Fattura

WHERE (((tblAzienda.Matricola)=[forms]![frmFattura]![txtCap]))

ORDER BY tblFatture.DataPagamento DESC;

sembra funzionare, ma non so abbinarla alla casella di testo con la funzione dlookup.

Come posso risolvere questo problema?

Ringrazio in anticipo chi mi aiuta in questo.

Ciao Nicola.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

26 risposte

Ordina per: Più utili
  1. Anonimo
    2020-08-04T18:30:48+00:00

    Ciao Sandro ho seguito il tuo consiglio, ho creato la seguente query:

    SELECT Max(tblFatture.DataPagamento) AS Data_Consegna

    FROM tblAzienda INNER JOIN tblFatture ON tblAzienda.ID_Azienda = tblFatture.ID_Azienda

    WHERE (((tblAzienda.Matricola)=[forms]![frmFatture]![Cap]))

    GROUP BY (DataPagamento);

    L'ho eseguita ed ottengo per ogni Matricola una sola data e l'ultima.

    Non capisco perchè devo usare la clausola Having. Ma la clausola Where non è la stessa cosa ( chiedo a te per imparare ed apprendere cose nuove).

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-08-04T10:51:48+00:00

    Ciao Sandro, grazie per i tuoi suggerimenti.

    Mi metto all'opera e ti aggiorno.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-08-04T10:41:08+00:00

    ciao Nicola,

    elimina dal predicato la tabella lato molti relativa alla righe fatture ed estrai solamente la matricola e la data di pagamento ponendo la funzione max(dataPagamento) come raggruppamento con clausola having matricola=[forms]![frmFattura]![txtCap].

    Valuta che il predicato restituisca una sola riga in base alla matricola selezionata ed effettua la dlookup su questa query oppure apri un recordset su questa query estraendo il field relativo alla data massima ed assegnalo al controllo che ti interessa.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-08-04T09:02:35+00:00

    Ciao Sandro, grazie come sempre per il tuo puntuale riscontro.

    Per quanto riguarda le consegne , queste avvengono, in date diverse, per vari dipendenti e per molteplici capi di vestiario.

    Le ricerche di quanto ogni dipendente ha ottenuto, persino la visualizzazione della data lo ottengo con delle maschere che mi filtrano i dati di mio interesse, quindi tutto perfettamente studiato e dati regolarmente ottenuti.

    Questo che cerco di ottenere con la Dlookup mi serve solo ed esclusivamente per visualizzare, appena seleziono il dipendente dalla combobox la data più recente in cui ho consegnato qualcosa al medesimo.

    Quindi solo questo perché come ti dicevo poco fa le altre tipologie di interrogazioni le ottengo con delle maschere apposite che fanno questo.

    Spero di essere stato chiaro.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2020-08-04T08:30:21+00:00

    ciao Nicola,

    aldila' dell'errore, la dlookup cosi' impostata come puo' restituire l'ultima data in ordine crescente relativa all'ultima consegna alla matricola specifica?

    Inoltre, credo che i capi di vestiario siano molteplici, come molteplici a rigor di logica, siano le consegne effettuate, non dovrebbe quindi essere discriminato oltre che la matricola anche il capo consegnato ?

    Altra domanda.....se la ricerca viene effettuata basandosi sulla data di pagamento, dobbiamo supporre che nelle stessa data di pagamento vengano anche consegnati i capi ? direi si si, ma in linea di massima la data di consegna dovrebbe essere presente sul lato molti e non lato 1....

    facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento