Bonsoir à tous, je dois créer une fonction Visual Basic intégrant des requêtes SQl (commande DoCmd.RunSQL) pour gérer le retour d'un ouvrage à l'aide de requête SQl et des forulaires associés..

Je dois aussi m'inspirer pour cela de

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
Option Compare Database   'Utilise l'ordre de la base pour les comparaisons de chaînes
 
Function AfficherFicheInscrit()
  Dim dbBaseDonnees As Database
  Dim TableInscrit As Recordset
 
  Set dbBaseDonnees = DBEngine.Workspaces(0).Databases(0)
  Set TableInscrit = dbBaseDonnees.OpenRecordset("Inscrit", DB_OPEN_TABLE)
  Do Until TableInscrit.EOF
    Debug.Print TableInscrit!N_INSCRIT;
    Debug.Print TableInscrit!N_INSCRIT;
    Debug.Print TableInscrit!REF_OUVRAGE;
    Debug.Print
    TableInscrit.MoveNext
  Loop
  TableInscrit.Close
  dbBaseDonnees.Close
 
End Function
 
Function EnregistrerPret()
 Dim dbBaseDonnees As Database
 Dim TableEmprunt As Recordset
 
 'Si l'ouvrage n'existe pas on sort (Intégrité de référence)
 
 If (RechercherOuvrage((Forms!pret![cote-ouvrage].Value)) = False) Then
    MsgBox ("Ouvrage Inexistant")
    DoCmd.GoToControl Forms!pret![cote-ouvrage].Name
 Exit Function
 End If
 
 'Si l'ouvrage est deja emprunte on sort (Intégrité d'entité)
 
 If (TesterEmprunt((Forms!pret![cote-ouvrage])) = True) Then
    MsgBox ("Ouvrage Déjà Emprunté")
    DoCmd.GoToControl Forms!pret![cote-ouvrage].Name
 Exit Function
 End If
 
'Si l'inscrit n'existe pas on sort (Intégrité de référence)
 
 If (RechercherInscrit((Forms!pret![num-emprunteur])) = False) Then
 MsgBox ("Inscrit Non Enregistré")
 DoCmd.GoToControl Forms!pret![num-emprunteur].Name
 Exit Function
 End If
 
 'Sinon on crée la fiche emprunt
 
  Set dbBaseDonnees = CurrentDb
  Set TableEmprunt = dbBaseDonnees.OpenRecordset("Emprunt", DB_OPEN_TABLE)
 
  TableEmprunt.AddNew
  'Remplissage des clés dynamiques
  TableEmprunt!N_INSCRIT = (Forms!pret![num-emprunteur])
  TableEmprunt!REF_OUVRAGE = (Forms!pret![cote-ouvrage])
  '
  TableEmprunt!DATE_PRET = Date
  TableEmprunt!DATE_RET = Date + 15
  TableEmprunt.Update
 
  TableEmprunt.Close
  dbBaseDonnees.Close
 
  MsgBox ("Enregistrement OK de " & (Forms!pret![cote-ouvrage]) & " pour l'emprunteur " & (Forms!pret![num-emprunteur]))
 
  'Remise a blanc des deux zones de texte
  Forms!pret![num-emprunteur] = ""
  Forms!pret![cote-ouvrage] = ""
 
End Function
 
Function RechercherInscrit(ValInscrit As String) As Integer
 
  Dim dbBaseDonnees As Database
  Dim TableInscrit As Recordset
 
  'Ouverture de la base et de la Table INSCRITS
  Set dbBaseDonnees = CurrentDb
  Set TableInscrit = dbBaseDonnees.OpenRecordset("INSCRITS", DB_OPEN_TABLE)
 
  'Choix d'un Index (Celui de la cle primaire)
  TableInscrit.Index = "PrimaryKey"
 
  'Recherche de l'enregistrement
  TableInscrit.Seek "=", ValInscrit
 
  If TableInscrit.NoMatch = False Then
    Debug.Print TableInscrit!NOM
    Debug.Print TableInscrit!PRENOM
    'retourne -1 si trouve
    RechercherInscrit = True
  Else
    Debug.Print "L'inscrit est introuvable"
    'retourne 0 si non trouve
    RechercherInscrit = False
  End If
 
  'Fermeture de la base et de la Table
  TableInscrit.Close
  dbBaseDonnees.Close
 
End Function
 
 
Function RechercherOuvrage(ValCote As String) As Integer
 
  Dim dbBaseDonnees As Database
  Dim TableOuvrage As Recordset
 
  'Ouverture de la base et de la Table OUVRAGE
  Set dbBaseDonnees = DBEngine.Workspaces(0).Databases(0)
  Set TableOuvrage = dbBaseDonnees.OpenRecordset("OUVRAGE", DB_OPEN_TABLE)
 
  'Choix d'un Index (Celui de la cle primaire)
  TableOuvrage.Index = "PrimaryKey"
 
  'Recherche de l'enregistrement dans OUVRAGE sur le champ COTE (valeur parametre de la fonction)
  TableOuvrage.Seek "=", ValCote
 
  If TableOuvrage.NoMatch = False Then
    Debug.Print TableOuvrage!TITRE
    Debug.Print TableOuvrage!AUTEUR
    RechercherOuvrage = True
  Else
    Debug.Print "L'ouvrage est introuvable"
    RechercherOuvrage = False
  End If
 
  'Fermeture de la base et de la Table
  TableOuvrage.Close
  dbBaseDonnees.Close
 
End Function
 
Function TesterEmprunt(ValCote As String)
  'Recherche sur sa cote si un ouvrage est Emprunte
  'c-a-d si il y existe une fiche Emprunt correspondante
 
  Dim dbBaseDonnees As Database
  Dim TableEmprunt As Recordset
 
  'Ouverture de la Table EMPRUNT
  Set dbBaseDonnees = CurrentDb
  Set TableEmprunt = dbBaseDonnees.OpenRecordset("Emprunt", DB_OPEN_TABLE)
 
  'Recherche de l'enregistrement dans EMPRUNT sur le champ COTE
  TableEmprunt.Index = "REF_OUVRAGE"
  TableEmprunt.Seek "=", ValCote
 
  If TableEmprunt.NoMatch = False Then
    Debug.Print TableEmprunt!REF_OUVRAGE
    TesterEmprunt = True
  Else
    Debug.Print "L'enregistrement est introuvable"
    TesterEmprunt = False
  End If
 
  TableEmprunt.Close
  dbBaseDonnees.Close
 
End Function
Ne pratiquant que très peu le Visual Basic, je sollicite donc votre aide..merci à l'avance pour toutes vos réponses..
(Je suis allé voir la FAQ, mais je ne pense pas y avoir trouvé mon bonheur)

$ Kleer $