access convertire formato data da americano ad europeo

14 views
Skip to first unread message

Marco Ferrato

unread,
Sep 23, 2022, 12:00:24 PM (7 days ago) Sep 23
to
buon pomeriggio a tutti. Non riesco a capire come risolvere il problema che mi pongo.
Ho una tabella A e non devo modificare alcuna formattazione dei suoi campi , visto che è collegata ad altro database che poi entrerebbe in conflitto in caso di cambiamento della formattazione. Contiene due campi (DataRilascio e DataScadenza) formattati come test , ordinato come YYYYDDMM (nota bene: 8 caratteri senza alcuna separazione).
Ho creato una maschera m_A che ricalca ogni campo che mi serve per correggere alcuni dati che riscontro essere errati o da aggiornare. Vorrei trovare un modo per visualizzare DataRilascio e DataScadenza in formato DDMMYYYY e per effettuarvi gli aggiornamenti nello stesso formato DDMMYYY. Parallelamente, in maniera del tutto automatica, questa data vorrei fosse aggiornata nella tabella A con il formato originario YYYYDDMM .

in rete avevo trovato una soluzione da riportare in VBA ma non riesco ad adattarla alla mia maschera ed ai suoi campi

vardtedate = CDate(Format(Me.dtedate.Value, "dd/mm/yyyy"))
DoCmd.RunSQL "INSERT INTO table (dtedate) VALUES (#" & Format(vardtedate, "yyyy-mm-dd") & "#);"

al posto di Me.dtedate.Value ho provato con Me.DataRilascio
e dal posto di INSERT INTO table (dtedate) ho provato con
INSERT INTO table (A)

Tra l'altro mi chiedo, se inserire l'istruzione all'evento afterupdate del campo DataRilascio o se inserirla nell'evento Load della Maschera m_A

Sicuramente faccio qualche sbaglio madornale visto che uso il VBA solo a tentoni senza averlo mai studiato tramite un libro, i vs chiarimenti sono graditi e vi ringrazio anticipatamente

Marco Ferrato

unread,
Sep 23, 2022, 4:01:22 PM (7 days ago) Sep 23
to
in alternativa pensavo di ingannare access attivando all'apertura della maschera m_A la richiesta di sostituire tutti i campi della colonna DataRilascio con un nuovo ordine di lettura dove aggiungerei lo slash di separazione e succesivamente all'evento di chiusura della stessa maschera aggiungere una formula più o meno inversa che riporta i numeri alla versione originale, compatibile con l'altro database.
Questa sarebbe l'istruzione della prima fase (all'apertura della maschera) ma purtroppo vedo che non funziona

Private Sub Form_Open(Cancel As Integer)

[tables]![A]![DataRilascio] = CDate(Right([tables]![A]![DataRilascio], 2) & "/" & Mid([tables]![A]![DataRilascio], 5, 2) & "/" & Left([tables]![A]![DataRilascio], 4))
End Sub

La formula inversa non vien riportata perché dipende ovviamente dalla riuscita di quella precedente che non mi è andata a buon fine
Reply all
Reply to author
Forward
0 new messages