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]