Règles du forum Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Bonjour,
Je continue lentement mon formulaire Emprunt...
Cette fois-ci, je souhaite ajouter des jours à une date. La date de départ est dans le champs Date_emprunt et la date de retour calculée est dans le champs Date_retour_prévu. Le nombre de jours à ajouter dépend de la date d'emprunt. Un table contient les durées d'emprunt selon la date d'emprunt (table Durée). J'ai bien tenté qqchose, mais sans succès (pour vous faire sourire, voici mon essai avec un ajout de 15 jours pour faire simple) :
Sub autofillDateRetour(oEv as Object)
Dim oDate_emprunt as Object
oEv.Source.Model.Date = DateAdd('d',15,"Date_emprunt")
oEv.Source.Model.Commit
End Sub
Avez-vous lu le bandeau rouge en haut de la page ?
Que dit le paragraphe 8 ?
Merci de votre participation sur notre forum et de nous faciliter le travail de modération.
Nettoyez votre PC du piratage, utilisez des logiciels libres à chaque lavage.
Une seule dose de OpenOffice suffit à éliminer durablement toute trace de MS-Office.
Bonjour,
Le principe de ma base de donnée est que la date d'emprunt est une variable. Dans l'exemple de l'aide, la date de référence est une constante : "1/31/2004". Je vois bien que ma syntaxe dans ma macro est mauvaise, c'est l'objet de ma question...
Merci pour vos lumières
Bonjour
Décidément l'événement à la réception du focus sur la colonne Date emprunt ne me convient pas J'ai donc passer la procédure sur l'événement perte du focus.
Tu peux tester :
Sub autofillDateJour(oEv as Object)
If isEmpty(oEv.Source.Model.CurrentValue) Then
oEv.Source.Model.Date = CDateToIso(Date)
oEv.Source.Model.Commit
End If
autofillDateRetour(oEv.Source.Model.Parent,CDateFromIso(oEv.Source.Model.Date))
End Sub
Sub autofillDateRetour(oGrille as Object,dteEmprunt as Date)
Dim maConnexion as Object, maRequete as Object,Resultat as Object
Dim instrSQL as String, Debut as Date, Fin as Date, Jour as Integer
maConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
strSQL = "SELECT ""Début période"", ""Fin période"", ""Durée"" FROM ""Durée"""
maRequete = maConnexion.createStatement()
Resultat = maRequete.executeQuery(strSQL)
Do While Resultat.Next
Debut = DateValue(Resultat.Columns.getByName("Début période").String)
Fin = DateValue(Resultat.Columns.getByName("Fin période").String)
If dteEmprunt >= Debut And dteEmprun <= Fin Then
Jour = Resultat.Columns.getByName("Durée").Int
oGrille.getByName("Date_retour_prévu").Date = CDateToIso(DateAdd("d",Jour,dteEmprunt))
oGrille.getByName("Date_retour_prévu").Commit
Exit Do
End If
Loop
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Le code tourne pas mal, mais il y a un petit bug : Une erreur de structure de script s'est produite lors de l'exécution du script
Standard.Module3.autofillDateRetour de Basic
Message : Wrong number of parameters!
J'ai rajouté un
t
à emprunt sur la ligne If dteEmprunt >= Debut And dteEmprun <= Fin Then
A ton interrogation sur le déclenchement de la macro autofillDateEmprunt: j'espère un jour être capable de scanner un code barre (va compléter le champ code_ISBN) et aller directement dans le champs suivant : Date_Emprunt. Ainsi, l'utilisateur n'aura pas à entrer dans le champs Date_emprunt pour mettre la date. Il entrera dans ce champs uniquement pour corriger la date si la date par défaut (date du jour).