Rechercher : dans
Par :

Champs date - access - open office

Dernière réponse le 27 mai 2009 à 18:39:29 Valerie, le 12 nov 2007 à 10:42:58 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 7.0

1

Le Pingou, le 12 nov 2007 à 23:17:25

Bonsoir,
Votre formulaire en mode création et ouvrir les propriétés de la zone de texte.
Chercher la propriété Valeur par défaut et la renseigner avec =Date() .
Salutations.
Jean-Pierre

Répondre à Le Pingou

2

chaum2, le 8 déc 2007 à 17:10:41

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

Répondre à chaum2

3

chaum2, le 8 déc 2007 à 17:12:04

J'ai oublié ceci:
windows vista
openoffice 2.2.1
merci

Répondre à chaum2

4

OOo Forum, le 9 déc 2007 à 12:01:07

S'agit-il d'un formulaire créé dans Base ou d'une feuille Calc ?

Répondre à OOo Forum

5

Le Pingou, le 9 déc 2007 à 15:02:30

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.
Salutations.
Jean-Pierre

Répondre à Le Pingou

6

kelex, le 11 fév 2008 à 16:37:55

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.

Répondre à kelex

7

Le Pingou, le 11 fév 2008 à 18:26:31

Bonjour kelex,
Que voulez-vous dire par (lorsqu'on appuie sur un bouton du formulaire) ?
Merci.
Salutations.
Jean-Pierre

Répondre à Le Pingou

8

kelex, le 12 fév 2008 à 08:49:36

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

Répondre à kelex

9

Le Pingou, le 12 fév 2008 à 16:44:20

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.

Salutations.
Jean-Pierre

Répondre à Le Pingou

10

kelex, le 13 fév 2008 à 10:48:35

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

Répondre à kelex

11

Le Pingou, le 13 fév 2008 à 13:41:33

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.
Salutations.
Jean-Pierre

Répondre à Le Pingou

12

Le Pingou, le 13 fév 2008 à 21:54:46

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.
Salutations.
Jean-Pierre

Répondre à Le Pingou

13

kelex, le 14 fév 2008 à 16:17:01

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

Répondre à kelex

14

Le Pingou, le 14 fév 2008 à 16:51:12

Merci kelex, de rien.
Salutations.
Jean-Pierre

Répondre à Le Pingou

15

Raf, le 7 mar 2008 à 12:30:26

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

Répondre à Raf

16

Laurent-47, le 7 mar 2008 à 22:42:43

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

Répondre à Laurent-47

17

Le Pingou, le 7 mar 2008 à 23:25:19

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
Salutations.
Jean-Pierre

Répondre à Le Pingou

18

Raf, le 10 mar 2008 à 14:30:04

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 :)

Répondre à Raf

19

Le Pingou, le 10 mar 2008 à 20:17:42

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.......
Salutations.
Jean-Pierre

Répondre à Le Pingou

20

Le Pingou, le 10 mar 2008 à 22:46:37
  • +1

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.
Salutations.
Jean-Pierre

Répondre à Le Pingou

24

Maël, le 24 mar 2009 à 16:31:08

Bonjour à tous,

N'ayant que peu de connaissances en langages informatiques et seulement une petite expérience en base de données sur MS ACCESS alors qu'aujourd'hui je travaille sur openoffice BASE; je cherche exactement la réponse à la question de Raf, cad actualiser automatiquement un champ date d'un enregistrement à chaque modification.

Malheureusement lorsque j'exécute le code de la macro de Pingou le message d'erreur ("propriété ou méthode introuvable") apparait aux lignes oSelection = oController.Selection et oFunction.NullDate = oDocument.NullDate .


Après avoir chercher sans succès, je fais appel à votre indulgence pour m'indiquer la solution à mon problème.

Merci d'avance pour vos réponses,
Maël.

PS: je cherche aussi la macro qui fixe à jamais la date de la première enregistrement (je pense, la fonction =date() dans MS Access) ;)

Répondre à Maël

25

Le Pingou, le 24 mar 2009 à 17:00:28

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­
Salutations.
Jean-Pierre

Répondre à Le Pingou

26

Maël, le 24 mar 2009 à 19:09:22
  • +1

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 ;)

Répondre à Maël

27

Le Pingou, le 24 mar 2009 à 22:11:15

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

Répondre à Le Pingou

28

Maël, le 25 mar 2009 à 12:16:10

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 ?

Répondre à Maël

29

Le Pingou, le 25 mar 2009 à 22:37:42

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 ...
Salutations.
Jean-Pierre

Répondre à Le Pingou

21

Raf, le 11 mar 2008 à 11:46:22

Splendide formidable ça MARCHE (il n'y avait pas la macro en question !!!!!!)

Un ENORME merci

:) :) :)

Répondre à Raf

22

Le Pingou, le 11 mar 2008 à 12:02:56

Bonjour Raf,
Merci, je suis heureux que cela fonctionne et en plus j'ai découvert une petite partie d'Open Office.
Bonne semaine.
Salutations.
Jean-Pierre

Répondre à Le Pingou

23

Raf, le 11 mar 2008 à 12:23:13

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 !!

Répondre à Raf

30

Lylandra, le 3 avr 2009 à 15:55:35

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)).

Répondre à Lylandra
Collection CommentÇaMarche.net