J'essaie d'obtenir une base de données MS Access pour ouvrir un formulaire soit à la date d'aujourd'hui s'il se trouve dans le champ de date de la base de données, soit à la date la plus proche dans le futur. J'ai essayé le code ici, mais ça ne marche pas. Il met simplement en surbrillance le champ de date et passe au premier enregistrement au lieu du plus proche à l'avenir.

Le champ Date est WorshipDate et la table est wp_elements. (Je suis un pasteur qui utilise cette table pour planifier le culte du dimanche).

Private Sub Form_Load()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Dim TheDate As Date

Set db = CurrentDb
strSQL = "SELECT TOP 1 * FROM wp_elements WHERE wp_elements.WorshipDate >= Date() ORDER BY wp_elements.WorshipDate;"
Set rst = db.OpenRecordset(strSQL)
TheDate = rst.Fields(0)
WorshipDate.SetFocus
DoCmd.FindRecord TheDate, , True, , True
Set rst = Nothing
Set db = Nothing
'DoCmd.RunCommand acCmdRecordsGoToLast
End Sub

Je sais que le code SQL que j'ai inclus fonctionne car je l'utilise dans un script Python qui fonctionne assez bien.

Qu'est-ce que je rate? Ou existe-t-il un autre moyen plus simple de le faire?

1
Python Pastor 11 févr. 2020 à 18:57

1 réponse

Meilleure réponse

Vous ne devriez avoir besoin que d'une seule ligne de code :

me.RecordSet.FindFirst "Date() >= WorshipDate"
1
Albert D. Kallal 12 févr. 2020 à 02:27