Problème d'utilisation Dlookup
Résolu
lulu16100
Messages postés
95
Date d'inscription
Statut
Membre
Dernière intervention
-
lulu16100 Messages postés 95 Date d'inscription Statut Membre Dernière intervention -
lulu16100 Messages postés 95 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Voici une brève explication de ce que je veux faire:
J'ai un formulaire où je saisie une date de début et une date de fin.
Je veux créer un enregistrement par date du début à la fin mais seulement s'il n'existe pas. J'ai regardé pas mal de forum, ne connaissant rien au DAO (et mes connaissances étant limité en vba) j'ai vu une alternative avec la fonction Dlookup.
Voici mon code:
Private Sub BOUTON_CREER_Click()
Dim occurence As Integer
Dim date_temp As Date
Dim rech As Date
occurence = DateDiff("d", DATE_DEB, DATE_FIN) + 1
For i = 1 To occurence
date_temp = DATE_DEB + i - 1
rech = Nz(DLookup("[DATE_JOUR]", "REPARTITION_TPS_REELLE", "[DATE_JOUR] =" & date_temp), "01/01/1900")
MsgBox (date_temp & " " & rech)
Next
End If
End Sub
La fonction ne fonctionne pas car même si la date existe dans ma table j'ai toujours la valeur par défaut qui s'affiche... j'ai également essayé de ne mettre que date_temp dans le critère mais dans ce cas c'est toujours la date de début qui s'affiche.
Sauriez-vous d'où cela vient?
Je vous remercie d'avance.
Voici une brève explication de ce que je veux faire:
J'ai un formulaire où je saisie une date de début et une date de fin.
Je veux créer un enregistrement par date du début à la fin mais seulement s'il n'existe pas. J'ai regardé pas mal de forum, ne connaissant rien au DAO (et mes connaissances étant limité en vba) j'ai vu une alternative avec la fonction Dlookup.
Voici mon code:
Private Sub BOUTON_CREER_Click()
Dim occurence As Integer
Dim date_temp As Date
Dim rech As Date
occurence = DateDiff("d", DATE_DEB, DATE_FIN) + 1
For i = 1 To occurence
date_temp = DATE_DEB + i - 1
rech = Nz(DLookup("[DATE_JOUR]", "REPARTITION_TPS_REELLE", "[DATE_JOUR] =" & date_temp), "01/01/1900")
MsgBox (date_temp & " " & rech)
Next
End If
End Sub
La fonction ne fonctionne pas car même si la date existe dans ma table j'ai toujours la valeur par défaut qui s'affiche... j'ai également essayé de ne mettre que date_temp dans le critère mais dans ce cas c'est toujours la date de début qui s'affiche.
Sauriez-vous d'où cela vient?
Je vous remercie d'avance.
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, je ferais ainsi (désolé, avec DAO):
option explicit Private Sub BOUTON_CREER_Click() Dim date_temp As Date Dim db As DAO.Database, tb As DAO.Recordset Set db = CurrentDb Set tb = db.OpenRecordset("REPARTITION_TPS_REELLE", dbOpenDynaset) date_temp = CLng(DATE_DEB) Do While date_temp <= DATE_FIN tb.FindFirst ("DATE_JOUR = " & CLng(date_temp)) If tb.NoMatch Then tb.AddNew tb!DATE_JOUR = date_temp tb.Update End If date_temp = date_temp + 1 Loop 'Do While date_temp <= DATE_FIN End Sub
Merci pour votre réponse. Au final voici le code que j'ai réalisé (avec DAo :D ) :