+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [Access] Valore predefinito nei campi data

  1. #1
    davideleo non è in linea Scolaretto
    Luogo
    Milano
    Post
    154

    Question [Access] Valore predefinito nei campi data

    In una maschera con un campo di tipo Data che si chiama Competenza viene eseguito il codice seguente:
    codice:
    Me!Competenza.DefaultValue = "#" & DateSerial(2006, 6, 1) & "#"
    Perchè il valore predefinito viene impostato a 06/01/06 anzichè 01/06/06?

    Ho ipotizzato che il problema fosse nella funzione DateSerial e ho fatto la prova scrivendo
    codice:
    Me!Competenza.DefaultValue = "#" & Date & "#"
    Anche in questo caso il valore restituito è una data con mese e anno invertiti.

    La cosa è ancora più misteriosa perchè se imposto il valore predefinito senza usare il codice, direttamente nella finestra delle proprietà del campo con l'espressione '=DateSerial(2006, 6, 1)' o '=Date()' mi restituisce la data corretta.

    Qualcuno mi sa spiegare questo strano fenomeno?
    Davide

  2. #2
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734
    il problema di VBA è che alcune volte devi usare la simbologia inglese
    Es

    per noi i numeri vengono suddivisi così
    1.222.254,032

    per gli inglesi lo stesso numero è
    1,222,254.023

    per le date idem (cambia la posizione del mese e del giorno).

    Suppongo che sia legato a questo.
    hai provato ad usare un format per riordinare la data.

    Ciao

  3. #3
    davideleo non è in linea Scolaretto
    Luogo
    Milano
    Post
    154

    Question

    Ho provato come segue:

    codice:
    Me!Competenza.DefaultValue = "#" & Format(DateSerial(2006, 6, 1), "dd/mm/yyyy") & "#"
    Niente da fare.

    Ti fornisco un altro elemento che rende il tutto ancora più enigmatico. Ho creato una funzione che ho chiamato FineMese(Data as Date) che restituisce l'ultimo giorno del mese della Data.

    Ora scrivendo:

    codice:
    Me!Competenza.DefaultValue = "#" & FineMese(DateSerial(2006, 6, 1)) & "#"
    dal momento che la funzione DateSerial con quegli argomenti restituisce 06/01/06 ci si dovrebbe aspettare che FineMese dia la data del 31/01/06 e invece...sorpresa: 30/06/06!!!????
    Davide

  4. #4
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734
    usa il cdate che converte la stringa in data

    codice:
    Cdate("12/12/2006")
    'sel vuoi dinamico
    Cdate(Giorno & "/" & Mese & "/" & Anno)
    Giorno Mese e Anno sono delle variabili

    Ciao

  5. #5
    davideleo non è in linea Scolaretto
    Luogo
    Milano
    Post
    154
    Avevo già provato anche quello. Idem
    Davide

  6. #6
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734

    Question

    UNa domanda

    Il valore predefinito è il quel fomato ma dopo quando lo inserisce nel campo il formato è sempre lo stesso??

    Ciao

  7. #7
    davideleo non è in linea Scolaretto
    Luogo
    Milano
    Post
    154
    Sì è sempre lo stesso
    Davide

  8. #8
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734
    Non so più cosa pensare.
    mi dispiace

  9. #9
    davideleo non è in linea Scolaretto
    Luogo
    Milano
    Post
    154
    Ma, così per curiosità, funziona così anche nel tuo Access? Io ho la versione 2003
    Davide

  10. #10
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734
    Fa lo stesso con il mio ma
    Per l'impostazione inverti il mese con il giorno.

    se vuoi impostare il 13 maggio 2005 scrivi la data così
    #5/13/2006#

    Se tu fai questa prova lo scopri facilmente
    imposta a mano il valore predefinito el leggilo da vba

    codice:
    MsgBox Me!Testo0.DefaultValue
    ti restituirà la data con questa inversione.
    Non so perchè ma è così e funziona

    ES:
    codice:
    Me!Competenza.DefaultValue = "#5/13/2006#"
    non usare il data serial

    Ciao

+ Rispondi al Thread

Discussioni simili

  1. eseguire sql con VB
    Da sivodave nel forum Microsoft Office, Access, VBA
    Risposte: 18
    Ultimo Post: 18-10-2006, 10:14
  2. Risposte: 14
    Ultimo Post: 25-08-2006, 10:27
  3. [ACCESS] ricerca intervallo data con BETWEEN
    Da andromeda nel forum Access
    Risposte: 3
    Ultimo Post: 08-06-2006, 16:52
  4. [ACCESS] Data in formato ISO
    Da Vanessa nel forum Access
    Risposte: 2
    Ultimo Post: 29-05-2006, 17:04
  5. problema in mozzila
    Da zilucas nel forum HTML, CSS, Javascript, AJAX
    Risposte: 3
    Ultimo Post: 01-07-2005, 13:07

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi