Comment récupérer une valeur dans un champs d'une table. [Résolu]

Messages postés
19
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
6 avril 2016
- - Dernière réponse : mjsm
Messages postés
19
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
6 avril 2016
- 12 oct. 2010 à 22:30
Bonjour
J'ai fait une base de données pour gérer des cours.
Dans le module ??Jour de Pâques?? je dois déclarer DPannee qui est la seconde année de la période scolaire.
L'année en question se trouve dans la table [T_Vacances_Scolaires] où le champ [PerScol_Fin] contient une date du style 30/06/2011?
Cette table ne contient qu'une seule ligne.

J'ai fait ce petit bout de programme qui refuse de fonctionner : erreur 13 ? Incompatibilité de type à la ligne set rst = currentDp?.

J'ai essayé beaucoup de choses, consulté tout ce que j'ai trouvé?.
Bref : Pouvez-vous m?aider ? D'avance merci
---------------------

Private Sub Commande43_Click()
Dim DPannee As Date ? In fine sera égal à l'année N°2 de la période scolaire

Dim rst As DAO.Database
Set rst = CurrentDb.OpenRecordset("SELECT [PerScol_Fin] FROM [T_Vacances_Scolaires]WHERE [PerScol_Fin] < #01/01/2099#", dbOpenSnapshot)

DPannee = rst(Year("PerScol_Fin"))

MsgBox DPannee

End Sub ? fin provisoire le programme continue avec le calcul de la date de Pâques que j'ai trouvé sur le net.

Dim G, C, C_4, E, H, K, P, Q, I, B, J1, J2, R
Dim Dpaques as date

G = DPannee Mod 19
C = DPannee \ 100
C_4 = C \ 4
E = (8 * C + 13) \ 25
H = (19 * G + C - C_4 - E + 15) Mod 30
K = H \ 28
P = 29 \ (H + 1)
Q = (21 - G) \ 11
I = (K * P * Q - 1) * K + H
B = DPannee \ 4 + DPannee
J1 = B + I + 2 + C_4 - C
J2 = J1 Mod 7
R = 28 + I - J2
If R <= 31 Then
DPaques = DateValue(CStr(R) & "/3/" & CStr(DPannee))
Else
DPaques = DateValue(CStr(R - 31) & "/4/" & CStr(DPannee))
End If

MsgBox DPaques
Rst.Close
Set rst = Nothing
End Sub
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
Salut

Erreur 13, mais sur quelle ligne ?

Si ta table n'a qu'un seul champ, pourquoi avoir utiliser une clause WHERE ?
A mon avis, tu peux l'enlever.

Un RecordSet (rst) n'est pas un tableau, c'est un RecordSet - Lapalisse (1470-1525).
Méthode de lecture d'un champ (facilement trouvable dans l'aide) :
DPannee = Year(rst.Fields("PerScol_Fin").Value)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
19
Date d'inscription
mardi 5 janvier 2010
Statut
Membre
Dernière intervention
6 avril 2016
3
Merci
Merci Jack
Votre solution a fonctionnée du premier coup ! Super !

Je mets le programme qui fonctionne ci-dessous pour info

Private Sub Commande43_Click()

Dim rst As DAO.Recordset 'Database
Set rst = CurrentDb.OpenRecordset("SELECT [PerScol_Fin] FROM [T_Vacances_Scolaires]")
DPannee = Year(rst.Fields("PerScol_Fin").Value)

'MsgBox DPannee

'MsgBox "test ok", vbInformation, "ok"

Dim G, C, C_4, E, H, K, P, Q, I, B, J1, J2, R

G = DPannee Mod 19
C = DPannee \ 100
C_4 = C \ 4
E = (8 * C + 13) \ 25
H = (19 * G + C - C_4 - E + 15) Mod 30
K = H \ 28
P = 29 \ (H + 1)
Q = (21 - G) \ 11
I = (K * P * Q - 1) * K + H
B = DPannee \ 4 + DPannee
J1 = B + I + 2 + C_4 - C
J2 = J1 Mod 7
R = 28 + I - J2
If R <= 31 Then
DPaques = DateValue(CStr(R) & "/3/" & CStr(DPannee))
Else
DPaques = DateValue(CStr(R - 31) & "/4/" & CStr(DPannee))
End If

' MsgBox DPaques
rst.Close
Set MaDate = Nothing
End Sub

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de mjsm