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 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
| Option Explicit
Public MaBDD As String
Public MaTable As String
Public MaConnexion As DAO.Database
Public MonRecordset As DAO.Recordset
Public MonField As DAO.Field
Public MaRequete As String
Sub OuvrirConnection(Optional MonMotDePasse As String = "")
'Se connecte à la BDD
'MaBDD = Chemin d'acces à la BDD
Dim MonMessageErreur As String
On Error GoTo ErreurOuvrirConnection
' Ouverture de la base de données
Set MaConnexion = DBEngine.OpenDatabase(MaBDD, False, False, "MS Access;PWD=" & MonMotDePasse)
Exit Sub
ErreurOuvrirConnection:
MonMessageErreur = "BDD : " & MaBDD & vbCr & Err.Description
MsgBox MonMessageErreur
End
End Sub
Sub ExecuteRequete()
Dim MonMessageErreur As String
On Error GoTo ErreurExecuteRequete
Set MonRecordset = MaConnexion.OpenRecordset(MaRequete)
Exit Sub
ErreurExecuteRequete:
MonMessageErreur = "BDD : " & MaBDD & vbCr & _
"Table : " & MaTable & vbCr
MonMessageErreur = MonMessageErreur & vbCr & Err.Description
MsgBox MonMessageErreur
End
End Sub
Function RecupereRecordset() As Collection
Dim MaCollection1 As Collection
Dim MaCollection2 As Collection
Dim MonElement1 As Variant
Dim MonElement2 As Variant
Set MaCollection2 = New Collection
'il n'y a pas d'element dans le Recordset
If MonRecordset.EOF And MonRecordset.BOF Then
Set RecupereRecordset = Nothing
Exit Function
End If
'initialise le pointeur (peut éviter certains bug)
MonRecordset.MoveLast
MonRecordset.MoveFirst
Do Until (MonRecordset.EOF)
Set MaCollection1 = New Collection
For Each MonElement1 In MonRecordset.Fields
MaCollection1.Add MonElement1.Value
Next MonElement1
MaCollection2.Add MaCollection1
MonRecordset.MoveNext
Loop
Set RecupereRecordset = MaCollection2
End Function
Sub FermeConnection()
On Error Resume Next
MonRecordset.Close
Set MonRecordset = Nothing
MaConnexion.Close
Set MaConnexion = Nothing
On Error GoTo 0
End Sub
Sub RequeteRecherche(MonElement As String, Optional MaColonne As String, Optional NbreElement As Integer = 0, Optional NomTable As String = "")
'recherche d'un ou plusieurs elements
'active la table par defaut
If NomTable = "" Then
NomTable = MaTable
End If
If NbreElement > 0 Then 'renvoie n elements
MaRequete = "SELECT TOP " & NbreElement & " * FROM " & NomTable
Else 'renvoie tous les elements
MaRequete = "SELECT * FROM " & NomTable
End If
If MonElement <> "*" Then ' n'affiche pas tous les elements
MaRequete = MaRequete & " WHERE " & MaColonne & "='" & MonElement & "'"
End If
End Sub
Sub RequeteAjout(TableauValeur As Collection)
Dim Valeur As String
Dim i As Integer
Valeur = "'" & TableauValeur(1) & "'"
For i = 2 To TableauValeur.Count
Valeur = Valeur & ", '" & TableauValeur(i) & "'"
Next i
MaRequete = "INSERT INTO " & MaTable & " VALUES (" & Valeur & ")"
End Sub
Sub RequeteSupprime(Optional MonElement As String = "", Optional MaColonne As String = "", Optional NomTable As String = "")
'recherche d'un ou plusieurs elements
'active la table par defaut
If NomTable = "" Then
NomTable = MaTable
End If
If MonElement = "" Or MaColonne = "" Then 'efface la table complete
MaRequete = "DELETE * FROM " & NomTable
Else 'efface certains eleements
MaRequete = "DELETE * FROM " & NomTable & " WHERE " & MaColonne & "='" & MonElement & "'"
End If
End Sub
Sub RequeteModifie(MonElement1 As String, MaColonne1 As String, MonElement2 As String, MaColonne2 As String)
'là ou il y a MonElement dans la colonne MaColonne, on remplace MaColonne2 par MonElement2
MaRequete = "UPDATE " & MaTable & " SET " & MaColonne2 & " = '" & MonElement2 & "' WHERE " & MaColonne1 & "='" & MonElement1 & "'"
End Sub
Sub RequeteNomTable()
'renvoie le nom des tables qui sont dans la BDD
MaRequete = "SELECT Name FROM MSysObjects WHERE type=1"
'MaRequete = "EXEC sp_columns 'Essai'"
End Sub
Sub Main()
Dim MaCollection As Collection
Dim MaCollection1 As Collection
MaBDD = "c:\echange\bd1.mdb"
MaTable = "Essai"
Call OuvrirConnection
'------ recherche nom des tables -----
'Call RequeteNomTable
'Call ExecuteRequete
'-------- recherche element ------------
Call RequeteRecherche("Val300", "Valeur", 1)
Call ExecuteRequete
Set MaCollection = RecupereRecordset
'-------- Ajout ------------
Set MaCollection1 = New Collection
MaCollection1.Add "Ref12cs"
MaCollection1.Add "Val"
MaCollection1.Add "Des"
Call RequeteAjout(MaCollection1)
Call ExecuteRequete
'------- suppression d'un element ----
'Call RequeteSupprime("Réf20", "Reference")
'Call ExecuteRequete
'------- suppression de tous les elements ----
'Call RequeteSupprime
'Call ExecuteRequete
'------- modification de plusieurs elements ----
'Call RequeteModifie("Ref1", "Reference", "Valtoto", "Valeur")
'Call ExecuteRequete
'Call FermeConnection
End Sub |
Partager