Conteggio Righe in una query con campo calcolato DateDiff

di il
27 risposte

27 Risposte - Pagina 2

  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    Philcattivocarattere ha scritto:


    StefanoR ha scritto:


    posso mandarvi un allegato tramite un link al mio googledrive che pubblico qui oppure è possibile mandarvelo direttamente tramite altro canale?
    Se non hai a disposizione la scheda "Allegati" per caricare il file su questo sito direttamente (diventa disponibile dopo un tot di post) google drive è uno dei tanti sistemi che vedo usare, va bene.
    Non è disponibile in questo Forum.
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    @Alex ha scritto:


    Non è disponibile in questo Forum.
    Tieni ragggggione, è solo per le immagini. Bene, sciocchezza di inizio settimana compiuta.
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    Ho preparato il materiale (file Access e File Excel, depurato con i dati incriminati); è scaricabile a questo link (che terrò disponibile per i giorni sufficienti a Philcattivocarattere, Beachman, se vorrete)
    https://drive.google.com/file/d/1eTSzz9uN1wYLnz-zi7i-5cNTo5nX0wpQ/view?usp=sharing
    Tra il materiale ho messo un blocco note con una serie di dubbi rimasti; mentre per dare un finale a questo piccolo giallo, indico, dalle prove fatte, le conclusioni se potranno essere utili ai posteri:
    - il file excel da cui erano stati importati i dati aveva la data scritta in questo modo 97671946 e 217671945 (abbastanza ovvio il problema del tasto barra al posto del "7"); Access non ha fatto storie per l'importazione con questi due appunti da un paio di prove fatte: impostando il formato Data durante la procedura d'importazione il dato assumeva valore zero (ma non mi spiego ancora quel 30/12/1899 di cui si è detto, seppure Philcattivocarattere ha spiegato che questa è la data spartiacque); nella seconda prova il campo veniva importato come Testo, cambiandolo nel formato Data nella Tabella ad importazione avvenuta, si viene avvisati di una cancellazione del dato (quindi di nuovo non so spiegarmi come sia uscito il 30/12/1899).
    Grazie!
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    StefanoR ha scritto:


    ...
    - il file excel da cui erano stati importati i dati aveva la data scritta in questo modo 97671946 e 217671945 (abbastanza ovvio il problema del tasto barra al posto del "7"); Access non ha fatto storie per l'importazione con questi due appunti da un paio di prove fatte: impostando il formato Data durante la procedura d'importazione il dato assumeva valore zero (ma non mi spiego ancora quel 30/12/1899 di cui si è detto, seppure Philcattivocarattere ha spiegato che questa è la data spartiacque);
    Inspiegabile, almeno per me.
    Ho ripetuto su un db nuovo l'importazione dal file xls ed ottengo lo stesso risultato: forzando il tipo campo a data/ora nessun messaggio d'errore, tutto importato regolarmente, "visivamente" i due record incriminati mostrano "00:00:00" come DataRimpatrio.
    In una query ho fatto la conversione in Long del campo ed ho ottenuto i numeri di partenza, quindi 97671946 e 217671945. Quindi la visualizzazione "00:00:00" a mio avviso è dovuta solo all'incapacità-impossibilità di Access di rappresentare in "formato data" quei numeri.
    Se cambio il tipo di dato nella tabella, da Data/Ora a Numerico PrecisioneDoppia fila tutto liscio. Quando effettuo l'operazione inversa quei due valori spariscono per errore di conversione. Giustamente, sono al di fuori del range ammesso per essere considerate date.
    La funzione Year non riesce a ricavare l'anno perché... non è una data gestibile da vba. Ma IsDate restituisce vero.
    Da una procedura di importazione automatica mi sarei aspettato un messaggio d'errore, non certo il caricamento di un numero fuori range per essere una data.
    Inspiegabile. Si accettano spiegazioni.
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    Ho fatto anche io le stesse prove di Phil e sono giunto alle stesse conclusioni.

    Direi che è un bug della procedura di importazione che ha permesso l'inserimento di una data non corretta e pure della funzione isdate che ritorna vero anche se la data è fuori dal range ammesso.
    Immagino che la procedura di importazione chiami la isdate per fare il controllo sulla data e quindi l'errore di isdate fa si che il dato venga importato.
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    Secondo me state prendendo un abbaglio sia procedurale che concettuale.
    Se il campo è Data, ma il valore non è riconosciuto o riconoscibile come data è assurdo procedere con la forzatura alla lettura, il valore... viene DEFORMATO in modo illogico per assurgere al Type.
    Omettendo la forzatura che deve essere fuori discussione, il valore viene giustamente skippato ed assume valore NULL o meglio assume il DefaultValue, se non definito NULL.
    Questo è un comportamento assolutamente corretto e coerente.

    Per il resto prima di definire un BUG... magari... ci riflettiamo...?
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    Le formule di data, in Microsoft Excel, possono utilizzare solo le date immesse tra il 1/1/1900 e il 31/12/9999.
    Infatti è da considerare che se si vogliono effettuare operazioni con date precedenti al 1/1/1900 si devono impiegare delle ulteriori funzioni VBA:
    https://docs.microsoft.com/it-it/office/troubleshoot/excel/calculate-age-before-1-1-1900

    Qualora si impieghino delle date errate, come quelle sotto riportate, da te indicate nel link:

    StefanoR ha scritto:


    - L'estratto del foglio Excel spiega tutto: i due record problematici erano stati scritti
    97671946
    217671945
    (chiaramente con il problema di digitazione con il tasto barra)
    Si verifica un errore in quanto il valore è al di fuori dell'intervallo gestito.
    Infatti se la cella fosse stata convertita nel tipo data ti accorgeresti che verrebbe presentato un errore di tipo "#####":
    https://www.lifewire.com/errors-in-excel-312385
    https://support.microsoft.com/it-it/office/come-correggere-un-errore-di-tipo-bf801d0a-2a6e-44bd-a70e-0f780ae8f11e

    Per informazioni su come viene gestita la data (parte intera) e ora (parte decimale) come valore numerico puoi vedere:
    http://mikevba.altervista.org/macro/mikevba063.ph
    https://macerayarislari.com/it/300-examples/289-compare-dates-and-times-in-excel-vba.html
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    @Alex ha scritto:


    Per il resto prima di definire un BUG... magari... ci riflettiamo...?
    Non ho avuto il coraggio di chiamarlo subito bug (anche se il pensiero di segnalarlo come tale m'è venuto e non se n'è ancora andato), però credo che sia quanto meno "migliorabile" il comportamento della procedura di importazione che accetta senza fare una piega di salvare in un campo di tipo Data/Ora un valore che non può essere tale.
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    Non è vero che lo accetta senza batter ciglio... a me esce l'avviso relativo, se seleziono FORZA sbagliando, ottengo quello che dite, se non forzo, ricevo allarme di mancata importazione.
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    @Alex ha scritto:


    Non è vero che lo accetta senza batter ciglio...
    Non so come spiegarlo se non "con immagini". Procedura guidata di importazione. Dati esterni - Nuova origine dati - Da file - Excel. Seleziono il file.
    Ecco cosa vedo. (spero di riuscire ad allegare le immagini). Notare cosa ho scritto tra la seconda e la terza immagine Questo è l'unico momento in cui intervengo con una "forzatura", modifico il tipo dati da Testo a Data/Ora
    immagine1.png
    immagine1.png


    immagine2.png
    immagine2.png


    immagine3.png
    immagine3.png

    E mi trovo con la tabella importata.
    Eseguo questa query
    SELECT Foglio1.DataCattura, Foglio1.DataRimpatrio, IsDate([datarimpatrio]) AS FVIsDate, 
    CDbl([datarimpatrio]) AS PrecisioneDoppia, CLng([datarimpatrio]) AS InteroLungo
    FROM Foglio1;
    DataCattura	DataRimpatrio	FVIsDate	PrecisioneDoppia	InteroLungo
    09/09/1943	25/11/1945	-1	        16766	                16766
    09/09/1943	09/09/1945	-1	        16689	                16689
    05/01/1941	00:00:00	-1	        97671946	        97671946
    17/09/1943	00:00:00	-1	        217671945	        217671945
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    Da me non funziona così... a me viene rilasciato ERRORE con le indicazioni che ho esposto, tuttavia siccome si importa in una tabella ESISTENTE, prova a non andare a RIDEFINIRE il CAMPO in Import e vedi cosa succede...., ovvero NON FARE quell'operazione che hai proposto, che si fa solo se Importi in una Tabella NUOVA da creare al momento dell'importazione.
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    @Alex ha scritto:


    siccome si importa in una tabella ESISTENTE, prova a ...
    Se accodo ad una tabella esistente sempre tramite la procedura guidata c'è l'errore e i campi dei due record incriminati sono Null.
  • Re: Conteggio Righe in una query con campo calcolato DateDiff

    Philcattivocarattere ha scritto:


    @Alex ha scritto:


    siccome si importa in una tabella ESISTENTE, prova a ...
    Se accodo ad una tabella esistente sempre tramite la procedura guidata c'è l'errore e i campi dei due record incriminati sono Null.
    Appunto.
Devi accedere o registrarti per scrivere nel forum
27 risposte