report da query campo data calcolato (con campi in errore) non filtra per data

Anonimo
2024-10-18T06:05:42+00:00

Buongiorno a tutti, chiedo aiuto per questo. ho una query di raggruppamento. In un campo chiamato datafinescorta calcolo una data con la funzione DateAdd. Non tutti i record della query producono una data utile perchè per alcuni mancano i dati ( scorta iniziale e data di inizio calcolo) necessari al calcolo della data nel campo datafinescorta. Quindi per questi record il campo datafinescorta esce con #errore#.

Da questa query ho comunque fatto un report con il quale vorrei filtrare tutte le date del campo datafinescorta del mese corrente o della settimana corrente. Ma non lo fa e mi dice tipo di dati non rispondenti. Inoltre appena apro il report ricevo un messaggio attesa connessione alla stampante che non capisco da dove viene fuori.

grazie dell'aiuto!

Sara

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
Risposta accettata dall'autore della domanda
Anonimo
2024-10-21T17:12:07+00:00

Ecco l'istruzione Sql corretta:

SELECT [piano terapia].ospite, Sum([piano terapia].qtà) AS SommaDiqtà, [piano terapia].medicinale, [piano terapia].specificasomministrazione, Min([piano terapia].[qtà ingresso]) AS scorta, Min([piano terapia].[data inizio calcolo]) AS MinDataInizioCalcolo, Min([piano terapia].appoggio) AS MinDiappoggio, Min([piano terapia].datamodifica) AS MinDidatamodifica, consumogiornalieroqry.[consumo giornaliero], [lista medicinali].[Qtà cfz], [SommaDiqtà]*[consumogiornalieroqry]![consumo giornaliero] AS qtaconsgg, DateDiff("d",[MinDataInizioCalcolo],Date()) AS ggtrasc, ([scorta]-([qtaconsgg]*7))/[qtaconsgg] AS ggconsumoscorta, [scorta]-([qtaconsgg]*[ggtrasc]) AS qtanow, DateDiff("d",[MinDataInizioCalcolo],[MinDidatamodifica]) AS ggtrascmodifica, IIf(IsNull([MinDataInizioCalcolo]),Null,DateAdd("d",Nz([ggconsumoscorta],0),[MinDataInizioCalcolo])) AS datafinescorta, [scorta]-([qtaconsgg]*[ggtrascmodifica]) AS qtamod, Format([datafinescorta],"dd-mm-yyyy") AS dfs, Min([piano terapia].IDpianoterapia) AS MinDiIDpianoterapiaFROM [lista medicinali] INNER JOIN (AnagraficaOspite INNER JOIN ([piano terapia] INNER JOIN consumogiornalieroqry ON [piano terapia].specificasomministrazione = consumogiornalieroqry.specifichegiorni) ON AnagraficaOspite.IDOspite = [piano terapia].ospite) ON [lista medicinali].ID = [piano terapia].medicinaleWHERE ((([piano terapia].[terapia in corso])=No) AND ((AnagraficaOspite.Presente)=Yes))GROUP BY [piano terapia].ospite, [piano terapia].medicinale, [piano terapia].specificasomministrazione, consumogiornalieroqry.[consumo giornaliero], [lista medicinali].[Qtà cfz]HAVING ((([piano terapia].specificasomministrazione)<>49));

mi dispica dirlo ma il database ha una struttura fatta male:

  • manca l'uso corretto delle proprietà dei campi (vedi Cognome dovrebbe avere impostato a sì, in quanto deve essere garantito sempre il suo inserimento per poter salvare un record, ecc...)
  • manca la normalizzazione dei dati (vedi seconda dose terza dose, assistente assegnata, ecc...)
  • manca l'integrità referenziale fra molte tabelle
  • i nomi dei vari oggetti Tabelle, query, ecc... debbono essere privi di spazi per non complicarti la vita soprattutto usando il codice
  • un database di 5068 KB è divendato di 25000 KB non avendo impostato la Compattazione dello stesso in chiusura.
  • ecc...

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

13 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2024-10-20T14:12:08+00:00

    Ciao e grazie!

    però non capisco mi dice operatore mancante. la prima riga sql scritta da me e la seconda la tua. mi sembrano identiche . non capisco

    IIf(IsNull([MinDidata inizio calcolo]),Null,DateAdd("d",[ggconsumoscorta],[MinDidata inizio calcolo])) AS datafinescorta

    IIf(IsNull([MinDidata inizio calcolo]),Null,DateAdd("d",[ggconsumoscorta],[MinDidata inizio calcolo])) AS datafinescorta

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2024-10-20T06:33:48+00:00

    All'interno dell'ambiente grafico per la definizione delle query (detto Query By Example o QBE) come separatore dei paramentri devi usare:

    se sei in modalità visualizzazione Struttura il ";"

    IIf(IsNull([MinDidata inizio calcolo]);Null; DateAdd("g";[ggconsumoscorta];[MinDidata inizio calcolo]))

    se sei in modalità visualizzazione Sql la "," e cambiare il parametro "interval" da "g" in "d"

    IIf(IsNull([MinDidata inizio calcolo]),Null; DateAdd("d",[ggconsumoscorta],[MinDidata inizio calcolo]))

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-10-19T15:04:59+00:00

    grazie dell'aiuto

    IIf(IsNull([MinDidata inizio calcolo]),Null, DateAdd("g";[ggconsumoscorta];[MinDidata inizio calcolo]))

    mi restituisce errore di sintassi nell'espressione ... ho controllato più volte. non riesco a capire l'errore di sintassi dov'è nell'espressione.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2024-10-18T15:00:16+00:00

    Sostituire:

    [scorta]-([qtaconsgg]*[ggtrascmodifica]) AS qtamod

    con:

    Nz([scorta],0)-([qtaconsgg]*[ggtrascmodifica]) AS qtamod

    La risposta è stata utile?

    0 commenti Nessun commento