Problème d'utilisation Dlookup [Résolu] - Forum Access

Problème d'utilisation Dlookup Utilisation dlookup » Forum - Access Utilisation dlookup » Forum - Access Utilisation de Dlookup » Forum - Access Changer nom utilisateur windows 10 (Résolu) » Forum - Windows 10 Commen changer mon nom de l'ordinateur [Résolu] (Résolu) » Forum - Windows

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.

Forum

Problème d'utilisation Dlookup Utilisation dlookup » Forum - Access Utilisation dlookup » Forum - Access Utilisation de Dlookup » Forum - Access Changer nom utilisateur windows 10 (Résolu) » Forum - Windows 10 Commen changer mon nom de l'ordinateur [Résolu] (Résolu) » Forum - Windows

Web: www.shapebootstrap.net

3 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 yg_be 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 26538 internautes ce mois-ci

Reply
réponses:
  • lulu16100

    Bonsoir,

    Merci pour votre réponse. Au final voici le code que j'ai réalisé (avec DAo :D ) :

    Dim occurence As Integer
    Dim date_temp As Date
    Dim rech As Date
    occurence = DateDiff("d", DATE_DEB, DATE_FIN) + 1
    'regarde les dates une à une
    Dim count As Integer
    count = 0
    For i = 1 To occurence
    date_temp = DATE_DEB + i - 1
    'rech retourne date_temp si la date existe déjà dans la table sinon retourne 01/01/1900
    rech = Nz(DLookup("[DATE_JOUR]", "REPARTITION_TPS_REELLE", "[ID_SALARIE] = ID_EMP.Value And [DATE_JOUR] =#" & Format(date_temp, "mm/dd/yyyy") & "#"), "01/01/1900")
    If rech = "01/01/1900" Then
    'regarde si pas week-end
    If Not (Weekday(date_temp) = 7 Or Weekday(date_temp) = 1) Then

    Dim t As Recordset

    Set t = CurrentDb.OpenRecordset("REPARTITION_TPS_REELLE", DB_OPEN_DYNASET)
    count = count + 1
    t.AddNew
    t![DATE_JOUR] = date_temp
    t.Update
    t.MoveLast
    End If
    End If
    Next
    MsgBox (count & " dates ont été créées!")
    End If
    End If

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

En allant sur un autre forum j'ai trouvé la solution :
rech = Nz(DLookup("[DATE_JOUR]", "REPARTITION_TPS_REELLE", "[DATE_JOUR] =#" & Format(date_temp, "mm/dd/yyyy") & "#"), "01/01/1900")

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed