Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2010, 10h55   #1
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Par défaut Fonction alimentant filtre d'un recordset

Bonjour à tous,

J'ai un petit soucis avec une fonction ( anneesco) qui me sert de paramètre de filtre n°2 lors de l'ouverture du recordset figurant dans le code ci dessous.

Mon soucis semble t-il se trouve dans le SQL définissant la valeur de anneesco ( qui fonctionne très bien dans l'éditeur SQL) dont je n'ai visiblement pas trouvé la bonne syntaxe sur la clause WHERE = "ASEN" de la donnée "type-contrat"...

De plus lors du débogage, l'éditeur VBE m'indique: dbOpenForwardOnly =8 ( et là je ne sais pas si cette indication a une quelconque importance..)


En vous remerciant par avance pour vos réactions éclairées,

Bien cordialement.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Option Compare Database
 
Function idrecrut() As Integer
             idrecrut = Form_SForm_recrut.id_recrut
 
End Function
Function anneesco() As Integer
             anneesco = "SELECT DISTINCT Table_annee_scolaire.id_annee_scolaire" & _
" FROM Table_type_contrat INNER JOIN ((Table_personnels INNER JOIN (Table_annee_scolaire INNER JOIN Table_affectation_perso ON Table_annee_scolaire.id_annee_scolaire = Table_affectation_perso.id_annee_scolaire) ON Table_personnels.id_personnel = Table_affectation_perso.id_personnel) INNER JOIN Table_recrutement ON Table_personnels.id_personnel = Table_recrutement.id_personnel) ON Table_type_contrat.id_type_contrat = Table_recrutement.id_type_contrat" & _
" WHERE (((Table_recrutement.id_recrutement)=idrecrut()) AND ((Table_type_contrat.type_contrat)=" & ASEN & ") AND ((Table_recrutement.date_debut_contrat)>=[Table_annee_scolaire].[date_debut]) AND ((Table_recrutement.date_fin_contrat)<=[Table_annee_scolaire].[date_fin]));"
 
 
End Function
Sub oRecordset()
    Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
    Dim sSQL As String
    ' Ouverture de la base de données
    Set db = CurrentDb
    sSQL = "SELECT * FROM [R_Asen_contrat_annee_n] WHERE (R_Asen_contrat_annee_n.id_recrutement)=" & idrecrut & " AND (R_Asen_contrat_annee_n.id_annee_scolaire)=" & anneesco
    ' Ouverture du recordset
    Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
    If rst.EOF Then
    MsgBox "Ce contrat  (ou avenant) ne peut pas être imprimé car il n'est pas affecté à un élève."
    DoCmd.Close acForm, "SForm_chx_impr_indiv_ASen"
    End If
 
    ' Fermeture du Recordset
    rst.Close
End Sub
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h21   #2
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 805
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 805
Points : 3 003
Points : 3 003
Bonjour,

Peut-être ?

Code :
1
2
 
..... AND ((Table_type_contrat.type_contrat)='" & ASEN & "') .....
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h27   #3
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Bonjour pc75,

L'ajout de simples cotes autour des doubles ne semble pas mieux fonctionner: au débogage la syntaxe SQL est toujours en jaune...

Une autre idée peut-être ?
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h37   #4
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 805
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 805
Points : 3 003
Points : 3 003
Re,

Il y a un truc qui me gène ; Tu déclares ta fonction comme integer
Citation:
function anneesco() As Integer
et cette fonction retourne une variable de type string !
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h41   #5
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Merci pour le petit truc qui chiffonne... la cible est atteinte: le problème était visiblement là

Bonne fin de journée à toi." Kénavo." Visiblement je suis allé un peu vite, il reste le bogue sur le recordset dont la ligne suivante reste en jaune:

Code :
Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
Une autre idée serait la bien venue...
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h00   #6
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 584
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 584
Points : 2 143
Points : 2 143
Bonjour,

Déjà dans ta fonction anneesco :
Code :
1
2
...
WHERE (((Table_recrutement.id_recrutement)= " & idrecrut & ") ....
Puis pour la chaine SQL :
Code :
1
2
3
4
...
    sSQL = "SELECT * FROM [R_Asen_contrat_annee_n] WHERE (R_Asen_contrat_annee_n.id_recrutement)=" & idrecrut & " AND (R_Asen_contrat_annee_n.id_annee_scolaire) IN (" & anneesco & ")"
...
et lance un Debug.print sur la chaine avant le Openrecorset().
Tu pourras voir toi m^me tes erreurs de syntaxe
__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h28   #7
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Bonjour Micniv,

Merci beaucoup, je n'ai plus de bogue apparent et je note pour la suite le Debug.print

En revanche le rst est vide ( et ne devrait pas, j'ai droit au message de ma msgbox...) alors je replonge dans mon code.

Je sais pourquoi le rst est vide: anneesco remonte une chaine vide ( un point d'arrêt dur la fonction m' a permi de voir ' anneesco="" ').
Donc le sql qui définit la fonction anneesco n'est pas bon... je remonte les manches

Donc voici le pb:
J'ai fait une requête SQL enregistrée sous le nom R_blabla dont le SQL est le suivant:
Code :
1
2
3
SELECT DISTINCT Table_annee_scolaire.id_annee_scolaire
FROM Table_type_contrat INNER JOIN ((Table_personnels INNER JOIN (Table_annee_scolaire INNER JOIN Table_affectation_perso ON Table_annee_scolaire.id_annee_scolaire = Table_affectation_perso.id_annee_scolaire) ON Table_personnels.id_personnel = Table_affectation_perso.id_personnel) INNER JOIN Table_recrutement ON Table_personnels.id_personnel = Table_recrutement.id_personnel) ON Table_type_contrat.id_type_contrat = Table_recrutement.id_type_contrat
WHERE (((Table_recrutement.id_recrutement)=idrecrut()) AND ((Table_type_contrat.type_contrat)="ASEN") AND ((Table_recrutement.date_debut_contrat)>=[Table_annee_scolaire].[date_debut]) AND ((Table_recrutement.date_fin_contrat)<=[Table_annee_scolaire].[date_fin]));
Ce même SQL est transposé en VBA pour définir la fonction anneesco:
Code :
1
2
3
anneesco = "SELECT DISTINCT Table_annee_scolaire.id_annee_scolaire" & _
" FROM Table_type_contrat INNER JOIN ((Table_personnels INNER JOIN (Table_annee_scolaire INNER JOIN Table_affectation_perso ON Table_annee_scolaire.id_annee_scolaire = Table_affectation_perso.id_annee_scolaire) ON Table_personnels.id_personnel = Table_affectation_perso.id_personnel) INNER JOIN Table_recrutement ON Table_personnels.id_personnel = Table_recrutement.id_personnel) ON Table_type_contrat.id_type_contrat = Table_recrutement.id_type_contrat" & _
" WHERE (((Table_recrutement.id_recrutement)=" & idrecrut & ") AND ((Table_type_contrat.type_contrat)='" & ASEN & "') AND ((Table_recrutement.date_debut_contrat)>=[Table_annee_scolaire].[date_debut]) AND ((Table_recrutement.date_fin_contrat)<=[Table_annee_scolaire].[date_fin]));"
Mais alors que l'exécution de la R_blabla remonte la valeur "4" , celle de la fonction annnesco remonte : "" ,

Et là , désolé mais l'erreur que j'ai faite ne me saute pas aux yeux ...Help please
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 15h19   #8
Membre du Club
 
clément
Étudiant
Inscription : septembre 2010
Messages : 131
Détails du profil
Informations personnelles :
Nom : clément
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 131
Points : 59
Points : 59
Faire :

Code :
1
2
3
anneesco = "SELECT DISTINCT Table_annee_scolaire.id_annee_scolaire" & _
" FROM Table_type_contrat INNER JOIN ((Table_personnels INNER JOIN (Table_annee_scolaire INNER JOIN Table_affectation_perso ON Table_annee_scolaire.id_annee_scolaire = Table_affectation_perso.id_annee_scolaire) ON Table_personnels.id_personnel = Table_affectation_perso.id_personnel) INNER JOIN Table_recrutement ON Table_personnels.id_personnel = Table_recrutement.id_personnel) ON Table_type_contrat.id_type_contrat = Table_recrutement.id_type_contrat" & _
" WHERE (((Table_recrutement.id_recrutement)=" & idrecrut & ") AND ((Table_type_contrat.type_contrat)='" & ASEN & "') AND ((Table_recrutement.date_debut_contrat)>=[Table_annee_scolaire].[date_debut]) AND ((Table_recrutement.date_fin_contrat)<=[Table_annee_scolaire].[date_fin]));"
Sa exécute pas la requête ^^ donc en fait ta fonction annesco renvoi la requete SQL tel quel :s

faut que tu fasses un truc comme ca :

Code :
1
2
3
4
5
6
7
Dim DB as Database
Dim RS as recordset
 
DB = currentdb
RS = DB.Openrecordset(TAREQUETESQL)
 
annesco = RS!LECHAMPQUETUVEUX
Si j'ai bien compris ce que tu voulais faire ^^
Mycose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 16h27   #9
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 584
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 584
Points : 2 143
Points : 2 143
Puisque ASEN est une valeur et non pas une variable , essaie :
Code :
1
2
3
4
anneesco = "SELECT DISTINCT Table_annee_scolaire.id_annee_scolaire" & _
" FROM Table_type_contrat INNER JOIN ((Table_personnels INNER JOIN (Table_annee_scolaire INNER JOIN Table_affectation_perso ON Table_annee_scolaire.id_annee_scolaire = Table_affectation_perso.id_annee_scolaire) ON Table_personnels.id_personnel = Table_affectation_perso.id_personnel) INNER JOIN Table_recrutement ON Table_personnels.id_personnel = Table_recrutement.id_personnel) ON Table_type_contrat.id_type_contrat = Table_recrutement.id_type_contrat" & _
" WHERE (((Table_recrutement.id_recrutement)=" & idrecrut & ") AND ((Table_type_contrat.type_contrat)='ASEN') AND ((Table_recrutement.date_debut_contrat)>=[Table_annee_scolaire].[date_debut]) AND ((Table_recrutement.date_fin_contrat)<=[Table_annee_scolaire].[date_fin]));"
__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 09h24   #10
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Bonjour Clément et Micniv,

Micniv j'ai changé la syntaxe sql définissant anneesco mais même résultat...

Clément, tu me proposes de passer par un premier rst pour filtrer le second...

du coup, j'ai essayé simplement de passer par une variable défini par la requête R_blabla ( qui me remonte bien la valeur 4 en exécution) en étape 1 de l'ouverture du RST:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub oRecordset()
    Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
    Dim sSQL, test As String
 
    test = R_blabla ' qui me remonte 4 en execution
 
    ' Ouverture de la base de données
    Set db = CurrentDb
    sSQL = "SELECT * FROM [R_Asen_contrat_annee_n] WHERE (R_Asen_contrat_annee_n.id_recrutement)=" & idrecrut & " AND (R_Asen_contrat_annee_n.id_annee_scolaire)=" & test
    ' Ouverture du recordset
    Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
    If rst.EOF Then
    MsgBox "Ce contrat  (ou avenant) ne peut pas être imprimé car il n'est pas affecté à un élève."
    DoCmd.Close acForm, "SForm_chx_impr_indiv_ASen"
    End If
 
    ' Fermeture du Recordset
    rst.Close
End Sub
Erreur de syntaxe (opérateur absent) ... " id_recrut=15 and ... id_annnee_sco="

Vos avis?
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 09h59   #11
Membre du Club
 
clément
Étudiant
Inscription : septembre 2010
Messages : 131
Détails du profil
Informations personnelles :
Nom : clément
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 131
Points : 59
Points : 59
Ouai t'a une erreur de syntaxe ^^
sur ta ligne "sSQL=" il s'arrête au troisième " qu'il trouve donc en fait ton " & test " est zapper, essaye ça :

Code :
sSQL = "SELECT * FROM [R_Asen_contrat_annee_n] WHERE (R_Asen_contrat_annee_n.id_recrutement)=" & idrecrut & " AND (R_Asen_contrat_annee_n.id_annee_scolaire)=" & test & ""
Mycose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h08   #12
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Salut Clément,

Désolé mais j'ai toujours le même message d'erreur...
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h14   #13
Membre du Club
 
clément
Étudiant
Inscription : septembre 2010
Messages : 131
Détails du profil
Informations personnelles :
Nom : clément
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 131
Points : 59
Points : 59
Si tu met un Msgbox(test) après ta ligne test = R_BLABLA

Cela t'affiche bien 4 ?
Mycose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h31   #14
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Et bien en fait non , malheureusement la msgbox est vide, pourtant la R_blabla remonte bien la valeur 4 ...
J'ai remplacé R_blabal par le sql de anneesco et là la msgbox affiche toute la chaine mais pas le résultat...
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h36   #15
Membre du Club
 
clément
Étudiant
Inscription : septembre 2010
Messages : 131
Détails du profil
Informations personnelles :
Nom : clément
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 131
Points : 59
Points : 59
Oui parce que cela exécute pas ta requête passe par un recordset pour récupérer ton ID, je sais faire que comme ça moi ^^
Mycose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h50   #16
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Bon alors voici le code de mes 2 rst imbriqués:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub oRecordset()
    Dim db As DAO.Database, rst1, rst2 As DAO.Recordset, fld As DAO.Field
    Dim sSQL1, sSQL2 As String
 
    ' Ouverture de la base de données
    Set db = CurrentDb
 
    sSQL1 = "SELECT DISTINCT Table_annee_scolaire.id_annee_scolaire" & _
            " FROM Table_type_contrat INNER JOIN ((Table_personnels INNER JOIN (Table_annee_scolaire INNER JOIN Table_affectation_perso ON Table_annee_scolaire.id_annee_scolaire = Table_affectation_perso.id_annee_scolaire) ON Table_personnels.id_personnel = Table_affectation_perso.id_personnel) INNER JOIN Table_recrutement ON Table_personnels.id_personnel = Table_recrutement.id_personnel) ON Table_type_contrat.id_type_contrat = Table_recrutement.id_type_contrat" & _
            " WHERE (((Table_recrutement.id_recrutement)=" & idrecrut & ") AND ((Table_type_contrat.type_contrat)='ASEN') AND ((Table_recrutement.date_debut_contrat)>=[Table_annee_scolaire].[date_debut]) AND ((Table_recrutement.date_fin_contrat)<=[Table_annee_scolaire].[date_fin]));"
    ' Ouverture du recordset rst1
    Set rst1 = db.OpenRecordset(sSQL1, dbOpenForwardOnly, dbReadOnly)
    If rst1.EOF Then
    MsgBox "FAUX"
    End If
 
    sSQL2 = "SELECT * FROM [R_Asen_contrat_annee_n] WHERE (R_Asen_contrat_annee_n.id_recrutement)=" & idrecrut & " AND (R_Asen_contrat_annee_n.id_annee_scolaire)=" & rst1
 
    ' Ouverture du recordset rst2
    Set rst2 = db.OpenRecordset(sSQL2, dbOpenForwardOnly, dbReadOnly)
    If rst2.EOF Then
    MsgBox "Ce contrat  (ou avenant) ne peut pas être imprimé car il n'est pas affecté à un élève."
    DoCmd.Close acForm, "SForm_chx_impr_indiv_ASen"
    End If
 
    ' Fermeture des Recordsets
    rst1.Close
    rst2.Close
 
End Sub
Visiblement rst1 remonte bien une valeur car la msgbox faux ne s'affiche pas, en revanche sSQL2 filtré par rst1 ne passe pas ...
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 11h14   #17
Membre du Club
 
clément
Étudiant
Inscription : septembre 2010
Messages : 131
Détails du profil
Informations personnelles :
Nom : clément
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 131
Points : 59
Points : 59
Oui c'est une syntaxe différente faut faire rst1!TONCHAMP

donc je te conseillerai déjà de renommer ton champ dans la requête 1 comme ca cela sera plus facile de l'appeler dans la deuxième ^^
Mycose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 11h20   #18
Membre à l'essai
 
Sébastien
Inscription : mars 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : Sébastien

Informations forums :
Inscription : mars 2010
Messages : 160
Points : 24
Points : 24
Je viens de changer mon code en celuis-ci:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Function anneesco() As String
 
Dim sql As String
Dim rst As DAO.Recordset ' Le recordSet.
 
sql = "SELECT DISTINCT Table_annee_scolaire.id_annee_scolaire" & _
            " FROM Table_type_contrat INNER JOIN ((Table_personnels INNER JOIN (Table_annee_scolaire INNER JOIN Table_affectation_perso ON Table_annee_scolaire.id_annee_scolaire = Table_affectation_perso.id_annee_scolaire) ON Table_personnels.id_personnel = Table_affectation_perso.id_personnel) INNER JOIN Table_recrutement ON Table_personnels.id_personnel = Table_recrutement.id_personnel) ON Table_type_contrat.id_type_contrat = Table_recrutement.id_type_contrat" & _
            " WHERE (((Table_recrutement.id_recrutement)=" & idrecrut & ") AND ((Table_type_contrat.type_contrat)='ASEN') AND ((Table_recrutement.date_debut_contrat)>=[Table_annee_scolaire].[date_debut]) AND ((Table_recrutement.date_fin_contrat)<=[Table_annee_scolaire].[date_fin]));"
 
Set rst = CurrentDb.OpenRecordset(sql)
 
 anneesco = rst!id_annee_scolaire ' on affecte le contenu du rst à la fonction
 
rst.Close
 
End Function
 
 
Sub oRecordset()
    Dim db As DAO.Database, rst2 As DAO.Recordset, fld As DAO.Field
    Dim sSQL2 As String
 
    ' Ouverture de la base de données
    Set db = CurrentDb
 
    sSQL2 = "SELECT * FROM [R_Asen_contrat_annee_n] WHERE (R_Asen_contrat_annee_n.id_recrutement)=" & idrecrut & " AND (R_Asen_contrat_annee_n.id_annee_scolaire)=" & anneesco
 
    ' Ouverture du recordset rst2
    Set rst2 = db.OpenRecordset(sSQL2, dbOpenForwardOnly, dbReadOnly)
    If rst2.EOF Then
    MsgBox "Ce contrat  (ou avenant) ne peut pas être imprimé car il n'est pas affecté à un élève."
    DoCmd.Close acForm, "SForm_chx_impr_indiv_ASen"
    End If
 
    ' Fermeture des Recordsets
    rst2.Close
 
End Sub
Et là, çà a l'air de bien se passer ... je confirme tout est OK.

Merci pour ton aide Clément,

Bonne journée, je clos.
wushu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 11h43   #19
Membre du Club
 
clément
Étudiant
Inscription : septembre 2010
Messages : 131
Détails du profil
Informations personnelles :
Nom : clément
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2010
Messages : 131
Points : 59
Points : 59
Pas de soucis, Bonne journée a toi aussi
Mycose est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h51.


 
 
 
 
Partenaires

Hébergement Web