

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
5 messages in org.openoffice.fr.progRe: [prog] Calcul sur les dates (suite)| From | Sent On | Attachments |
|---|---|---|
| Bernard Marcelly | Jun 29, 2005 5:39 am | |
| GeGe | Jun 29, 2005 12:16 pm | |
| GeGe | Jun 29, 2005 12:26 pm | |
| Bernard Marcelly | Jun 29, 2005 1:05 pm | |
| GeGe | Jun 29, 2005 11:35 pm |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] Calcul sur les dates (suite) | Actions... |
|---|---|---|
| From: | GeGe (ggn...@free.fr) | |
| Date: | Jun 29, 2005 12:16:06 pm | |
| List: | org.openoffice.fr.prog | |
Ça ne marche pas avec: dim nouvDate as new com.sun.star.util.date n'est pas accepté avec l'erreur: "Impossible d'accéder à l'objet Référence d'ogjet incorrecte"
En fait, il faut mettre date avec une majuscule: dim nouvDate as new com.sun.star.util.Date
On arrive à:
dim nouvDate as new com.sun.star.util.Date dim vDate as date dim vDateFin as date dim vYear as double, vMonth as double, vDay as double if oForm.DateDebut.date>0 then vDate= cdatefromiso(oForm.DateDebut.date) vDateFin =dateserial (year (vDate)+1, month (vDate), day (vDate)) nouvDate.Day = day(vDateFin) nouvDate.Month = month(vDateFin) nouvDate.Year = year(vDateFin) oForm.updateDate(oForm.findColumn ("DATEFIN"),nouvDate)
et ça marche Où trouver les syntaxes de programmation? Je n'aurais jamais pensé à "dim nouvDate as new com.sun.star.util.Date" tout seul! On est obligé de passer par les nouvDate.Day ... Month ... Year? Y a pas plus simple?
En tout cas: Merrrrrrrci
[ANTISPAM: Pour me répondre, pensez à retirer le tiret avant l'arobase (-@) dans l'adresse d'envoi] [Ecoutez http://www.radioparadise.com - http://www.bide-et-musique.com]
----- Message d'origine ----- De : "Bernard Marcelly" <marc...@club-internet.fr> À : "Liste Prog-fr" <pr...@fr.openoffice.org> Envoyé : mercredi 29 juin 2005 14:39 Objet : [prog] Calcul sur les dates (suite)
Bonjour, Ma contribution à la question, avec un certain retard, mais le sujet est complexe.
D'une part le "plus un an" fonctionne correctement entre deux contrôles Date d'un formulaire, sans nécessiter de correction:
Sub Plus1An dim oDocument as object, oForm as object dim vDate as date, vDateFin as date
oDocument = ThisComponent oForm = oDocument.DrawPage.Forms.Standard
vDate= cdatefromiso(oForm.DateDebut.date) vDateFin =dateserial (year (vdate)+1, month (vdate), day (vdate)) oForm.DateFin.date = cdatetoiso(vDateFin) End Sub
La routine donne un résultat intelligent : 28/02/2004 + 1 an donne 01/03/2005. Noter qu'ici le type date des deux variables locales est un type interne à Basic.
D'autre part, la mise à jour d'un champ Date dans une base dBase. Quand on récupère ce champ avec un .getDate (ou .Date) on obtient un objet com.sun.star.util.date. Aucun rapport avec le type date de Basic. Cet objet est une structure composée des éléments: .Day (exemple : 18) .Month (exemple : 12) .Year (exemple : 1975) Il faut donc que tu remplisses une telle structure pour mettre à jour ton champ dBase, en utilisant un updateDate. Quelque chose comme:
dim nouvDate as new com.sun.star.util.date nouvDate.Day = day(vDateFin) nouvDate.Month = month(vDateFin) nouvDate.Year = year(vDateFin) oForm.updateDate(oForm.findColumn ("DATEFIN"),nouvDate)
Alors, pourquoi cela marchait presque ? Parce que lorsqu'on lit ou met à jour un champ de la base en employant un autre type que celui prévu (par exemple .updateDouble) l'API effectue des conversions en espérant que ça marche. Et ici ça marche mal. Bernard







