Bonsoir Damien, ... ou Aurélien
Damien a écrit :
Bonjour,

Soit une base de donnée et une table Historique

Dans cette table, un champ Dateheure qui enregistre la date et l'heure d'un
évnènement sous le format DD/MM/AA HH:MM

Cette base de données et tables sont créées par un logiciel tiers et il
nm'est impossible de modifier / affecter les champs de la table.

En revanche, je peux exploiter la table sous open office base

Je souhaite pouvoir à partir du champ Dateheure, disposer de deux champs
Date :  DD/MM/AA
Heure HH:MM

Une macro devrait pouvoir faire cela vu que le format  DD/MM/AA HH:MM est
constant

Si quelqu'un a une idée.

Merci


voici une idée

sub Main
 dim oBaseContext as object
 dim oDataSource as object
 dim oConnexion as object
 dim nameBase
 nameBase = "splitdate"
 oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")

 if oBaseContext.hasByName(nameBase) then
  msgbox "connexion à la base OK"
  oDataSource = oBaseContext.getByName(nameBase)
  oConnexion = oDataSource.getConnection("","")
  call BaseTraitement(oConnexion)
  else
  msgbox "connextion avec [" & nameBase & "] non établie !"
 end if
 oConnexion.Close()
end sub

sub BaseTraitement(oConnect as object)
 dim oTable as object
 dim oStatement as object
 dim oResult as object
 dim nameTable as string
 dim sQuery as string
 dim aName as string
 dim aDate as string
 dim aHeure as string
 dim sMsg as string
 dim splitDate()
 dim aTimeStamp

 nameTable = "Table1"
 oTable = oConnect.getTables.getByName(nameTable)

 oStatement = oConnect.createStatement
 sQuery = "Select * from " & chr(34) & nameTable & chr(34)
 oResult = oStatement.executeQuery(sQuery)

 if NOT IsNull(oResult) then
 do while oResult.next()
  aDate = oResult.getString(3) 'champ n° 3 (contenant une date/heure)

  REM Methode 1
  'explose aDate
  splitDate() = split(aDate, " ")
  if ubound(splitDate()) > 0 then
    aDate  = splitDate(0)          'YYYY-MM-DD (à convertir)
    aDate = right(aDate,2) & "/" & mid(aDate,6,2) & "/" & left(aDate,4)
    aHeure = mid(splitDate(1),1,5) 'HH:MM
    sMsg = "Methode 1" & chr(10) & _
           "Date = " & aDate & chr(10) & _
           "Heure = " & aHeure & chr(10)
    else
    msgbox "Format de date incorrect"
 end if
        
 REM Methode 2 'Preferable
 aTimeStamp = oResult.getTimestamp(3)
 with aTimeStamp
   'il faut formater les champs sur le nombre de caractères voulus
   aDate = right("0" & .Day, 2) & "/" & _
           right("0" & .Month, 2) & "/" & _
           .Year
   aHeure = right("0" & .Hours, 2) & ":" & _
            right("0" & .Minutes, 2)
   sMsg = sMsg & chr(10) & _
          "Methode 2" & chr(10) & _
          "Date = " & aDate & chr(10) & _
          "Heure = " & aHeure
 end with
 msgbox sMsg
 loop
 end if
end sub

--
Francois Gatto

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à