Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407

    Errore su query estrazione Anno

    Buonasera a tutti.

    Nel campo DataVisita di un db access ho registrato la data in questo formato:
    codice:
    2006/01/07
    Vorrei eseguire una query che estragga i records per "Anno" e scrivo:
    codice:
    strAnno = cInt(2006)
    
       SQLDown = "SELECT * FROM myTable WHERE Left(DataVisita, 4) = "& strAnno &" "
    Perchè va in errore ???:

    Error Type:
    Microsoft JET Database Engine (0x80040E07)
    Data type mismatch in criteria expression.

  2. #2
    codice:
    SQLDown = "SELECT * FROM myTable WHERE Left(DataVisita, 4) = 2006"
    Anche così ti dà errore?

  3. #3
    mancano gli apici. ma se la data è in formato data dubito funzioni

  4. #4
    A me funziona... ma il campo anche se contiene la data (formato ISO) è settato come numerico (int visto che sono su MySql).
    Consiglio, usare sempre campi numerici per inserire le date e sempre in formato aaaammgg.

  5. #5
    io consiglio formato testo. nel tuo caso è un caso ( ! ) che funzioni. Non si può fare la LEFT di un numero. Se funzia vuol dire che il server ha fatto un extra lavoro di conversione. Implicita. Non è detto che tutti i DB lo facciano.

  6. #6
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Così funziona... :


    codice:
    SQLDown = "SELECT * FROM myTable WHERE Right(DataVisita, 4) = "& strAnno &" "

  7. #7
    E' probabile che Access ti "giri" la data per adattarla allo standard italiano, quindi prelevando 4 caratteri a destra ti restituisce proprio l'anno.
    Questo esempio per comprendere come Access sia molto poco affidabile con le date.

  8. #8
    Originariamente inviato da optime
    io consiglio formato testo. nel tuo caso è un caso ( ! ) che funzioni. Non si può fare la LEFT di un numero. Se funzia vuol dire che il server ha fatto un extra lavoro di conversione. Implicita. Non è detto che tutti i DB lo facciano.
    Formato testo? E per i confronti? Usi sempre cInt?

  9. #9
    Originariamente inviato da Dirk Pitt
    E' probabile che Access ti "giri" la data per adattarla allo standard italiano, quindi prelevando 4 caratteri a destra ti restituisce proprio l'anno.
    Questo esempio per comprendere come Access sia molto poco affidabile con le date.
    non confondiamo la memorizzazione con la visualizzazione. se il formato è "data" access memorizza in formato MM/GG/AAAA. In fase di visualizzazione poi la gira (correttamente) secondo quanto specifica l'utente. Non tirerei in ballo l'affidabilità (in questo caso).

  10. #10
    Originariamente inviato da Dirk Pitt
    Formato testo? E per i confronti? Usi sempre cInt?
    CINT? e perché mai?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.