Champs date - access - open office [Fermé]

Signaler
-
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
-
Bonjour,

Je travaille actuellement sous access de Open Office et j ai un petit probleme. J'ai un champs date dans une de mes tables et je voudrais que lors d une saisie dans un formulaire ce champs date prenne la valeur de la date systeme. Idem pour l heure.
Pourriez vous m aider.
Merci d avance

23 réponses

Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonsoir Raf,
Afin de résoudre votre problème, insérer la date du jour par défaut, il faut ouvrir le formulaire en mode "Modifier" et ensuite vous ouvrez les propriétées du champs "Date" puis sur l'onglet Evénement" et vous renseigner La propriétée "Réception de focus" en lui assignant la macro InsertDate.
Au cas ou elle n'est pas présente en voici une copie que vous devez enregistrer sous "OpenOffice.org Basic" qui se trouve sous : Outils - Macros - Gérer les macros -et clic sur OpenOffice.org Basic. Et là sous le nom de votre formulaire (qui doit être présent) clic sur le + puis + Standart et clic module1 ....le module s'ouvre et vous enregistez la macro ci dessous.
Sub InsertDate
    oDesktop = createUnoService("com.sun.star.frame.Desktop")
    oController = oDesktop.CurrentFrame.Controller
    oSelection = oController.Selection

    ' fixer la valeur de la date
    oDocument = oController.Model
    oFunction = CreateUnoService("com.sun.star.sheet.FunctionAccess")
    oFunction.NullDate = oDocument.NullDate
    dim aEmpty()
    oSelection.Value = oFunction.callFunction("TODAY", aEmpty())

    ' fixer le format de la date
    oFormats = oDocument.NumberFormats
    dim aLocale as new com.sun.star.lang.Locale
    oSelection.NumberFormat = oFormats.getStandardFormat(_
                    com.sun.star.util.NumberFormat.DATE, aLocale)
End Sub


Bon travail.
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 82905 internautes nous ont dit merci ce mois-ci

Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991 > Maël
Bonjour Maël,
Si vous suivez exactement la description du poste 20 votre problème de :
PS: je cherche aussi la macro qui fixe à jamais la date de la première enregistrement (je pense, la fonction =date() dans MS Access) ;)
Sera réglé.
Si non par là : http://user.services.openoffice.org/fr/forum/ftopic9183.html
> Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019

Merci pour ta réponse Jean-Pierre,

Je ne dois pas être doué, mais je n'arrive toujours pas à appliquer ta macro.

Peut-être fais-je une erreur de méthode dans le processus suivant :

- ouvrir en mode modifié le formulaire
- sélectionner le champ date
- comme je ne retrouve pas insertdate dans les macros préenregistrés, enregistrer la macro au chemin : outils […] macro openoffice.org basic.. à l’onglet formulaire >standard>module 1, clic sur nouveau, dans la page Basic après les deux lignes « main », la coller directement
- après quoi, je reviens aux propriétés du champ date pour appliquer la macro enregistrer, à l’événement « réception de focus »

Ensuite, lorsque je touche au champ date lors d’un nouvel enregistrement, la fenêtre Basic s’ouvre et le message d’erreur « propriété ou méthode introuvable » à la ligne : oFunction.NullDate = oDocument.NullDate apparait.

Voilà mon désarroi !
A toutes fins utiles, j’utilise openoffice 3.0 et windows XP.

Merci encore pour tout,
Maël.

PS : cette macro cherche à fixer la date de création de l’enregistrement ou de sa modification ? (drôle de question après tant de travail ;)
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991 > Maël
Bonjour Maël,
La macro est mal placé, elle ne doit pas être coller dans le module et non pas à l'intérieur d'un autre code
Sub Main ...... End Sub.
Coller avant le Sub Main ou après le End Sub.--

Salutations.
Jean-Pierre
> Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019

Merci Jean-Pierre pour cette nouvelle réponse,

Malgré mon manque de connaissances en programmation, je n'avais pas fait l'erreur de coller le code au milieu d'un autre.

De toute façon, j'ai encore essayé toutes les possibilités d'inscription, sans trouver l'erreur commise. Je me résigne, pour l'instant, à passer à d'autres stades de la création de la base, en espérant résoudre ce problème plus tard.

Si jamais vous avez d'autres instructions je suis preneur, sinon je vous remercie encore pour vos réponses et votre temps.

Maël.

PS : cette macro cherche à fixer la date de création de l’enregistrement ou de sa modification ?
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991 > Maël
Bonjour Maël,
Si vous mettez votre Base (la compresser en ZIP ou RAR avant) sur http://www.cjoint.com/ et poster le lien, je pourrais trouver l'erreur ...
Bonjour,

Merci beaucoup à tous les 2 pour votre réponse... Oui le Pingou c'est bien en dessous (mais ce n'est pas onglet général mais "propriétés du champs") et hélas ça ne fonctionne pas. Je lui indique =Format(Date();"Date, abrégé") je ferme, j'enregistre et ce n'est pas pris en compte, quand je retourne dans ma table en mode création, la valeur par défaut est de nouveau vide... Idem dans le formulaire. Il refuse de prendre une formule... en tout cas dès que je mets un = ou qqchose qui n'est pas au format date il ne le prend pas en compte...

:( Pas d'autres idées ?

Merci en tout cas :)
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonsoir Raf,
Je pense que le problème est lié aux différences existantes MS Access et OpenOffice.org Base. Je viens de télécharger l'Open office.org 2.3 et l'ai installé en double sur ma machine.
A première vue la différence existe au niveau de la valeur par défaut, il semble que la possibilité d'Access n'est pas applicable à Open Office.
Je vais regarder un peu plus par curiosité et je vous tiendrez informer.......
Bonjour,

Je suis en train d'essayer de faire une base de maintenance préventive. il y a un moment ou l'opérateur doit, dans un formulaire, cliquer sur un bouton "FAIT" pour valider une tâche de maintenance. Je souhaiterai que lorsque l'opérateur clique sur ce bouton,la date du jour s'enregistre automatiquement dans une table ( T_Taches)qui a un champ prédéfini "Date dernière intervention". J'ai essayé la réponse deLe pingou donnée le 12 Fevrier 2008 mais rien ne se passe.

Je suis débutant en access je voudrais bien un ptit coup de main.

Merci
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonjour,
Juste au passage, c'est vieux tout cela, qu'avez-vous fait exactement et la version d'access?
Bonjour,

Je travaille sur une version access 2007. J'ai créé une table T_Taches dans laquelle j'ai mis des champs de renseignements pour effectuer l'opération de maintenance ( N° tache(clé primaire) ;nom machine; description de la tache; niveau de difficulté; outil utilisé;etc) et il y a un champ qui s'appelle "date derniere intervention" en format date.

J'ai ensuite fais un formulaire ou les renseignements donnés dans les champs de la table T_taches apparaissent.
Sur ce formulaire il y a un bouton "Fait" qui permet d'enregistrer la date du jour, le n° de la tache, le nom de la machine ainsi que la personne ayant effectué la tache dans une table T_historique. Mais l'appui sur ce bouton doit également écraser la date rentrée dans le champ " date derniere intervention" de la table T_Taches.

Pouvez vous m'aider sur ce point svp!

merci
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonjour wiiking73,
Merci pour les informations.
Quel liens avez-vous entre la table [T_Taches] et [T_historique] ?
Quel code est déclenché avec le bouton de commande [Fait] ?
Bonjour,

La liaison entre table historique et taches est relié par une relation un à plusieur ( le symbole infini est sur la table historique) avec les champs N° taches.

J'ai mis le code ce code sur le bouton:

Private Sub Réalisé_tache_Click()
[ Date derniere intervention ] = Now()
End Sub

Cordialement
J'ai exactement le même soucis,
je souhaite que le champ prenne la date du jour automatiquement mais qu'elle soit enregistrée comme date fixe,
si j'ouvre un registre créé hier, cest la date d'hier qui doit apparaître et non celle du système qui sera celle d'aujourd'hui,
A L'AIIIIDE!!!!! lol:
merci
j'ai oublié ceci:
windows vista
openoffice 2.2.1
merci
S'agit-il d'un formulaire créé dans Base ou d'une feuille Calc ?
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonjour chaum2,
Faire comme décrit au poste 1.
En effet la valeur par défaut sera utilisé uniquement s'il n'y a pas de date pour le champ concerné. Donc une date enregistrée ne sera pas modifier par la valeur par défaut.
Vous êtes bien sur Access..... à vous entendre parlet de : j'ouvre un registre créé hier
c'est étrange.
Messages postés
10
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
26 février 2008

bonjour,
j'ai presque la même question, sauf que je voudrais que mon champ (DateEntree) prenne la valeur de date et heure du systeme (fonction Now () si j'ai tout compris) lorsqu'on appuie sur un bouton du formulaire, et non pas quand on l'ouvre.
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonjour kelex,
Que voulez-vous dire par (lorsqu'on appuie sur un bouton du formulaire) ?
Merci.
Messages postés
10
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
26 février 2008

Je veux dire que je souhaite créer un bouton sur mon formulaire, qui permette à un opérateur d'enregistrer la date et heure du système au moment où il clique dessus, dans un champ défini.

Merci
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonjour kelex,
Je vous propose ceci :
Sur votre formulaire vous créez un bouton de commande (expl : cmdDateHeureENG).
Créer une [Procédure événementielle] dans ses propriétés sous Evénement « sur Clic » et vous complétez la fonction de code.
Elle doit être comme suit :

Private Sub cmdDateHeureENG_Click()
Texte9 = Now()
End Sub

Texte9 = le nom du champ défini.

Bonne fin de journée.
Messages postés
10
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
26 février 2008

Merci ça marche !

J'ai un autre problème. Voilà le code que j'écris :

Private Sub Vérif_tps_Click()

Dim result As Date

If [DateEntree] = Null Or [DateSortie] = Null Then
MsgBox ("Veuillez entrer une date valide SVP")
End If

If [DateEntree] <> Null And [DateSortie] <> Null Then
result = DateDiff ("h", [DateEntree], [DateSortie])
If result < 24 Then
MsgBox ("il n'y a eu que" & result & " heures d'écoulées")
Else
MsgBox ("Tout est ok")
End If
End If

End Sub

Avec ce code quand je clique sur le bouton, rien ne se passe !!

mon probleme est que si je veux faire un DateDiff entre DateEntree et DateSortie sans faire le If pour savoir s'ils différents de Null,au moment de cliquer sur le bouton j'ai un message d'erreur "utilisation incorrecte de Null" et ca m'envoie sur le débogueur en me mettant la ligne : result = DateDiff ("h", [DateEntree], [DateSortie]) en jaune.
donc je voulais faire ce If pour que le calcul DateDiff ne puisse se faire que si DateEntree et DateSortie ne soient pas vides.

et dans le cas où ils seraient vide, afficher le message d'erreur : "Veuillez entrer une date valide SVP"
mais il ne s'affiche pas, même lorsque les deux champs sont vides (donc égaux à Null).
je ne comprends pas pourquoi...

et enfin dernier probleme, en supposant que je ne fasse pas mes If pour vérifier si les DateEntree et Sortie sont Null (car apparemment ce sont ces If qui posent probleme).
le message "il n'y a eu que X heures d'écoulées". si je met "result" dans ma formule, dans mon message ca m'affiche une date du genre 08/01/1900 (mais ce n'est jamais la meme en fonction que DateEntree et Sortie changent), alors que si je met directement la formule DateDiff (donc sans passer par le tampon "result"), ca me l'affiche bien avec la valeur numérique en heures, comme je le souhaite.


Auriez vous une solution SVP car là je ne comprends pas d'où vient le probleme.

Merci bcp

Alexandre
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonjour kelex,
Vous est-il possible de mettre une copie de votre base de données sur www.cjoint.com ?
Dans ce cas je serai sur la même base que vous et se sera plus simple de vous comprendre et vous aider.
A vous de voir.
J'attends votre réponse pour poursuivre.
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonsoir kelex,
Voici votre code à bien plaire, selon se que j'ai compris de vos explications !

Private Sub Verif_tps_Click()
Dim result '---> pas de précision nécessaire
If IsNull(DateEntree) Or IsNull(DateSortie) Then '---->modifier Null en isNull
MsgBox ("Veuillez entrer une date valide SVP")
End ' interrompre immédiatement la procédure, il manque une date.....
End If

' Le If / End If --- n'est pas nécessaire les dates sont présentent selon teste précédent
'----->If [DateEntree] <> Null And [DateSortie] <> Null Then

result = DateDiff("h", DateSortie, DateEntree)
If result < 24 Then
MsgBox ("il n'y a eu que" & result & " heures d'écoulées")
Else
MsgBox ("Tout est ok")
End If

'------> End If

End Sub

Bonne soirée.
Messages postés
10
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
26 février 2008

merci beaucoup pour le mal que vous vous donnez c'est très gentil !
effectivement c'était juste quelques erreurs de syntaxe.
j'ai fait du C donc j'ai codé ca de la meme facon.
mais en fait plutot que de mettre :
If nomvariable = Null
il fallait mettre
If IsNull (nomvariable) !
ca marche mieux comme ca :-)

merci encore

a bientot
Alexandre
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Merci kelex, de rien.
Bonjour,

Je m'immisce dans la conversation car j'ai le même besoin que Valérie (premier post) mais la solution proposée ne convient pas.

Mon formulaire en mode création, j'ouvre les propriétés de la zone de texte (en fait une zone de date et je crois que le problème est là ?) Il n'y a pas la propriété "Valeur par défaut" pour y renseigner =Date() ou =Now() mais un champ "date par défaut" qui n'accepte que le format date (autrement dit qqchose du genre JJ/MM/AA qui est bien différent de =Date())

Donc ma valeur par défaut n'est pas acceptée. Pareil si je vais directement dans la table pour y mettre cette valeur par défaut, elle n'est pas acceptée.

Quelqu'un a une idée ?

Pour information supplémentaire, ce champ date doit enregistrer de manière automatique, la date de création ou de mise à jour de l'enregistrement.

Je suis sous OOo Base 2.3 sous windows xp
Bonsoir, dans la table ouverte en mose création, tu fait proprieté sur le champs "DATE"
et dans la case "valeur par défaut" tu écrit :
=Format(Date();"Date, abrégé")

Ensuite pour l'heure :tu fait proprieté sur le champs "HEURE"
et dans la case "valeur par défaut" tu écrit :
=Format(Temps();"Heure, abrégé")

Ainsi l'heure inscrite dans la table sera celle du moment de l'enregistrement du champ et ne sera pas actualisée.

Voilà si ça peut t'aider...
Bye
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonsoir,
Petit détail, se n'est pas faire propriété sur le champ "Date" mais plutôt sélectionner le champ "Date" et en dessous dans l'onglet "Général" il suffit de renseigné la "valeur par défaut"-----etc. ou alors c'est différent sur OOo Base 2.3
Splendide formidable ça MARCHE (il n'y avait pas la macro en question !!!!!!)

Un ENORME merci

:) :) :)
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
991
Bonjour Raf,
Merci, je suis heureux que cela fonctionne et en plus j'ai découvert une petite partie d'Open Office.
Bonne semaine.
> Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019

C'est moi qui te remercie (et si tu as l'occasion penche toi sur Openoffice c'est vraiment une chouette suite !!) ;)

Sinon j'avais aussi posé la question sur le forum d'aide francophone d'OOo on m'a donné une solution différente qui fonctionne également http://user.services.openoffice.org/fr/forum/ftopic9183.html
:)

Merci encore à toi et bonne semaine !!
> Raf
En fait, il y-a une solution très simple ... et compliquée à la fois :)
en demandant modifier table, dans propriété du champ, Valeur par défaut, il suffit de mettre =maintenant() et de choisir ensuite le format de date.
Sauf que, probablement un bug d'Open Office 2.3, des fois ça marche, des fois ça marche pas (fonction Garcimore(hihihihi)).
1 2