Newsgroup: it.comp.appl.access
Titolo: Funzione per convertire una data di una tabella

Salve a tutti, avrei bisogno di un aiutino.
In una tabella ho diversi campi con date in formato aaaammgg (provenienti da
altri file importati da altri sistemi) e vorrei convertirle nella stessa
tabella in formato ggmmaaaa con una routine o funzione che legga la tabella
e l'aggiorna nello stesso momento. Come si può fare? Grazie

 Ho giusto una funzioncina che uso per convertire date da AS400, č
impostata per convertire formati aammgg > gg/mm/aa e ggmmaa > gg/mm/aa
controllando che sia una data valida (l'argomento InserData č False se il
valore č aammgg); modificala all'occorrenza:
'Converte una data in formato numerico inverso (AAMMGG) nel formato data
(GG/MM/AA);
'Converte una data inserita in formato numerico (GGMMAA) nel formato data
(GG/MM/AA)
Function ConversioneData(InserData As Boolean, Optional ctData As Long,
Optional ctInserData As Control) As Date
On Error GoTo TerminaFunzione
Dim stDataOrigine As String, DataFine As Date, DataFine1 As Date, DataConfr
As String, DataConfr1 As String
Dim lgDataOrigine As Long
Dim lgDimData As Long
Dim stG As String, byG As Byte
Dim stM As String, byM As Byte
Dim stA As String, byA As Byte
MsgLocal = "DATA NON VALIDA"
  If InserData = False Then
    If Not IsNull(ctData) Then
      stDataOrigine = ctData
      lgDimData = Len(stDataOrigine)
      If lgDimData > 6 Or lgDimData < 3 Then GoTo esci
      Select Case lgDimData
      Case Is = 3
        stDataOrigine = "000" + LTrim$(str$(ctData))
      Case Is = 4
        stDataOrigine = "00" + LTrim$(str$(ctData))
      Case Is = 5
        stDataOrigine = "0" + LTrim$(str$(ctData))
      End Select
    Else
      Exit Function
    End If
    stA = Left(stDataOrigine, 2)
    stM = Mid(stDataOrigine, 3, 2)
    stG = Right(stDataOrigine, 2)
    byA = Val(stA)
    byM = Val(stM)
    byG = Val(stG)
'#  Solo per verifica input scrittura:
'#  DataConfr = stG + "/" + stM + "/" + stA:
    DataFine = DateSerial(byA, byM, byG)
'#  DataConfr1 = LTrim$(Str$(DataFine))
'#  If DataConfr <> DataConfr1 Then
'#    MsgBox "DATA NON VALIDA"
'#    Exit Function
'#  Else
      ConversioneData = DataFine
'#  End If
  ElseIf InserData = True Then
    If Not IsNull(ctInserData) Then
      stDataOrigine = ctInserData
      lgDimData = Len(stDataOrigine)
      If lgDimData > 6 Or lgDimData < 3 Then
        Call ControlloDimTesto(ctInserData, False, 6, , 6)
        GoTo esci
      Else
        Select Case lgDimData
        Case Is = 3
          stDataOrigine = "000" + LTrim$(str$(ctInserData))
        Case Is = 4
          stDataOrigine = "00" + LTrim$(str$(ctInserData))
        Case Is = 5
          stDataOrigine = "0" + LTrim$(str$(ctInserData))
        End Select
      End If
    Else
      Exit Function
    End If
    stG = Left(stDataOrigine, 2)
    stM = Mid(stDataOrigine, 3, 2)
    stA = Right(stDataOrigine, 2)
    byG = Val(stG)
    byM = Val(stM)
    byA = Val(stA)
    DataConfr = stG + "/" + stM + "/" + stA
    DataFine = CDate(DataConfr)
    DataFine1 = DateSerial(byA, byM, byG)
    If DataFine <> DataFine1 Then
      MsgBox MsgLocal, , MsgTtl
      ctInserData = Null
      Exit Function
    Else
      ConversioneData = DataFine
      ctInserData = ConversioneData
    End If
  End If
esci:
  Exit Function
TerminaFunzione:
  If Err.Number = 13 Then
    MsgBox MsgLocal, , MsgTtl
    ctInserData = Null
  Else
    MsgBox Err.Number & " " & Err.Description
  End If
  Resume esci
End Function

 e l'aggiorna nello stesso momento. Come si puň fare? Grazie
Esistono le QUERY di AGGIORNAMENTO "UPDATE ......ecc....!!"
combinata con la funzione FORMAT(Vedi help)....!
Alessandro.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


concordo docmd.runsql "UPDATE tabella SET campo=format(campo,'dd/mm/yyyy')
WHERE condizione;"