Bonjour,
Je poste ici car je sèche ! 
En effet, je dois effectuer une requête SQL (d'abord, un SELECT puis par la suite un Update).
J'utilise ADODB, qui visiblement fonctionne par Recordset... le concept est encore un peu flou pour moi, mes recherches Google m'ont aidées à écrire un nouvel enregistrement dans la base mais pas à utiliser des requêtes textuelles.
Voici mon 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 39 40 41
|
Sub enregistrer_bdd()
Dim Tableau_date() As String
Dim Tableau_heure() As String
Dim Tableau_date_heure(5) As String
Dim i As Integer
Dim cn As ADODB.Connection, rs As ADODB.Recordset
Dim sql As String
'Connexion à la BDD Access
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=Mes projets\Feuille de quart\quart.mdb;"
'Open a recordset
Set rs = New ADODB.Recordset
'On ouvre la table Quart
rs.Open "quart", cn, adOpenkeyset, adLockOptimistic, adCmdTable
'extraire la date de la feuille de quart
Tableau_date() = Split(Range("B8").Value, "/")
'extraire l'heure de la feuille de quart
Tableau_heure() = Split(Range("C8").Value, "_")
'on crée un tableau intermédiaire avec le bon ordre
Tableau_date_heure(0) = Tableau_date(2)
Tableau_date_heure(1) = Tableau_date(1)
Tableau_date_heure(2) = Tableau_date(0)
Tableau_date_heure(3) = Tableau_heure(0)
Tableau_date_heure(4) = Tableau_heure(1)
Set rsselect = New ADODB.Recordset
sql = "Select * From quart Where date_du_jour = '" & Join(Tableau_date_heure, "") & "'"
'Ensuite je fais quoi ? un rsselect.open ? quels arguments ?? Je sèche ici...
'On ferme le RecordSet
rs.Close
Set rs = Nothing
'On ferme la connexion à la base
cn.Close
Set cn = Nothing
End Sub |
Je ne vous ai pas copié tout le code où j'ajoute un enregistrement, inutile pour ma question.
Bref, une fois que j'ai défini ma requête, je fais quoi ?
Ce sera ensuite la même combat pour ma requête UPDATE.
En fait, je veux vérifié si dans ma base l'enregistrement dont la date_du_jour est égale à ce que j'ai calculé dans la première partie de mon code, est présent.
Si présent, j'e mets à jour cet enregistrement avec des valeurs provenant de la feuille Excel.
Si pas présent, j'ajoute une enregistrement avec toujours ces mêmes valeurs.
Je ne recherche pas forcément un code tout fait, mais au moins de quoi savoir comment fonctionne ADO avec les Recordset. Je mélange aussi avec DAO (l'ancêtre de ADO ??) en recherchant sur Google...
Merci d'avance pour votre aide !
Edit: bon après tentative de rss.open, j'obtiens une erreur.
Après ma requête, j'ajoute cette ligne :
rsselect.Open sql, cn, adOpenkeyset, adLockOptimistic, adCmdTable
Erreur d'exécution : Erreur syntaxe dans la clause FROM.
Donc en gros, le nom de la table ne convient pas... pourtant c'est bien ce nom !
Partager