[VBA] Probléme ADO
Poupy
-
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai quelques difficulté dans un tp sur l'utilisation de la programation orienté objet (ado, adox) sous access
Situation du probléme :
1 Table :
Client (CodeCli, nomCli, adrCli, villeCli)
Travail a faire :
1 réaliser le prog VB qui crée la table client [Fait]
2 réaliser le prog VB qui crée le formulaire de saisie des infos de la table [Fait]
3 réaliser le prog VB qui affiche dans la fenêtre d'excution tous les clients d'une ville quelconque saisie [en cours]
4 écrire une procédure qui rajoute le champ CA (chiffre d'affaire) d'un client et qui initialise ce champs à 100 [en cours]
Mon essaie pour la 3eme partie :
Sub RequetteVille()
Dim MaConnex As ADODB.Connection
Dim MonRS As ADODB.Recordset
Dim MaReq As String
Set MaConnex = New ADODB.Connection
Set MonRS = New ADODB.Recordset
MaReq = "SELECT nomCli, villeCli" & "FROM Client" & "WHERE villeCli = [Choisisez la ville]" & ";"
Debug.Print MaReq
End Sub
Cette procédure affiche : SELECT nomCli, villeCliFROM ClientWHERE villeCli = [Choisisez la ville];
Et non le résultat de cette requette SQL.
Mon essaie pour la 4eme partie :
Sub AjoutCA()
Dim MaConnex As ADODB.Connection
Dim MaTable As ADOX.Table
Dim MaColonne As ADOX.Column
Dim catalogue As ADOX.Catalog
Set MaConnex = CurrentProject.Connection
catalogue.ActiveConnection = MaConnex
Set MaTable = Tables!Client
Set MaTable.ParentCatalog = catalogue
Set MaColonne = New ADOX.Column
With MaColonne
.Name = "CA"
.Type = adVarWChar
.DefinedSize = 24
End With
MaTable.Columns.Append MaColonne
End Sub
Dans cette procédure, je n'arrive a faire correspondre la variable MaTable, à la table Client.
Voila, mon probléme.
J'ai quelques difficulté dans un tp sur l'utilisation de la programation orienté objet (ado, adox) sous access
Situation du probléme :
1 Table :
Client (CodeCli, nomCli, adrCli, villeCli)
Travail a faire :
1 réaliser le prog VB qui crée la table client [Fait]
2 réaliser le prog VB qui crée le formulaire de saisie des infos de la table [Fait]
3 réaliser le prog VB qui affiche dans la fenêtre d'excution tous les clients d'une ville quelconque saisie [en cours]
4 écrire une procédure qui rajoute le champ CA (chiffre d'affaire) d'un client et qui initialise ce champs à 100 [en cours]
Mon essaie pour la 3eme partie :
Sub RequetteVille()
Dim MaConnex As ADODB.Connection
Dim MonRS As ADODB.Recordset
Dim MaReq As String
Set MaConnex = New ADODB.Connection
Set MonRS = New ADODB.Recordset
MaReq = "SELECT nomCli, villeCli" & "FROM Client" & "WHERE villeCli = [Choisisez la ville]" & ";"
Debug.Print MaReq
End Sub
Cette procédure affiche : SELECT nomCli, villeCliFROM ClientWHERE villeCli = [Choisisez la ville];
Et non le résultat de cette requette SQL.
Mon essaie pour la 4eme partie :
Sub AjoutCA()
Dim MaConnex As ADODB.Connection
Dim MaTable As ADOX.Table
Dim MaColonne As ADOX.Column
Dim catalogue As ADOX.Catalog
Set MaConnex = CurrentProject.Connection
catalogue.ActiveConnection = MaConnex
Set MaTable = Tables!Client
Set MaTable.ParentCatalog = catalogue
Set MaColonne = New ADOX.Column
With MaColonne
.Name = "CA"
.Type = adVarWChar
.DefinedSize = 24
End With
MaTable.Columns.Append MaColonne
End Sub
Dans cette procédure, je n'arrive a faire correspondre la variable MaTable, à la table Client.
Voila, mon probléme.
A voir également:
- [VBA] Probléme ADO
- Excel compter cellule couleur sans vba - Guide
- Le fichier contient un tableau présentant un extrait des livres les plus prêtés à paris en 2016. filtrez le tableau pour ne faire apparaître que les bandes dessinées ado. puis filtrez le tableau pour ne faire apparaître que celles dont l'auteur est zep. quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ? - Forum Loisirs / Divertissements
- Quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ? ✓ - Forum Windows 10
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
9 réponses
Bonjour,
normal car tu ne t'es pas connecté à ta base
' à adapter
fichier = localisationdetabase & "\tabasemdb"
Set source= New ADODB.Connection
source;"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"data source=" & fichier & ";"
----
et tu n'instancie ta requete:
set requete= new Adodb.Recordset
texte_sql="SELECT nomCli, vill....
Set requete = source.Execute(texte_SQL)
debug print requete
il ya peut être des parenthèses ou un point (trou de mémoire!)
-----
ton texte SQL est faux: WHERE villeCli = [Choisissez la ville]"
peut-^tre mais....:WHERE villeCli= [" & choisissez.. & "]
----
d'autre part la déclaration Dim source as ADODB.connection et dim requete as ADODB.recorset n'est pas un modèle de portabilité: à chaque changement d'ordi il faut vérifier si la bbliothèque ADO est cochée et qu'on est pas sur une version antérieure d' Access
emploie plutôt
Dim Source As Object, Requete As Object
...
Set Source = CreateObject("ADODB.Connection")
....
Set Requete = CreateObject("ADODB.Recordset")
Cordialement, Michel
normal car tu ne t'es pas connecté à ta base
' à adapter
fichier = localisationdetabase & "\tabasemdb"
Set source= New ADODB.Connection
source;"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"data source=" & fichier & ";"
----
et tu n'instancie ta requete:
set requete= new Adodb.Recordset
texte_sql="SELECT nomCli, vill....
Set requete = source.Execute(texte_SQL)
debug print requete
il ya peut être des parenthèses ou un point (trou de mémoire!)
-----
ton texte SQL est faux: WHERE villeCli = [Choisissez la ville]"
peut-^tre mais....:WHERE villeCli= [" & choisissez.. & "]
----
d'autre part la déclaration Dim source as ADODB.connection et dim requete as ADODB.recorset n'est pas un modèle de portabilité: à chaque changement d'ordi il faut vérifier si la bbliothèque ADO est cochée et qu'on est pas sur une version antérieure d' Access
emploie plutôt
Dim Source As Object, Requete As Object
...
Set Source = CreateObject("ADODB.Connection")
....
Set Requete = CreateObject("ADODB.Recordset")
Cordialement, Michel
le code que tu me propose est tellement approximatif qu'il ne m'a pas aidé ...
D'autre parce que tu me propose :" Set requete = source.Execute(texte_SQL)
debug print requete "
ne marche pas
D'autre parce que tu me propose :" Set requete = source.Execute(texte_SQL)
debug print requete "
ne marche pas
dapré la solution proposé, j arrive a sa. solution que ne marche toujours pas. (erreur indiqué sur : set Monrs = source.excecute
Sub requetebis()
Dim MaConnex As Adodb.Connection
Dim MonRs As Adodb.Recordset
Dim MaReq As String
Set MaConnex = New Adodb.Connection
MaConnex = CurrentProject.Connection
Set MonRs = New Adodb.Recordset
MaReq = "SELECT nomCli, villeCli " & "FROM Client " & "WHERE villeCli = " & "Aubagne " & ";"
Set MonRs = Source.Execute(MaReq)
Debug.Print MonRs
End Sub
'Commentaire: currentProject.connexion = "Provider Microsoft.ACE.OLEDB.12.0;user id = admin; data source = .........
End Sub
Sub requetebis()
Dim MaConnex As Adodb.Connection
Dim MonRs As Adodb.Recordset
Dim MaReq As String
Set MaConnex = New Adodb.Connection
MaConnex = CurrentProject.Connection
Set MonRs = New Adodb.Recordset
MaReq = "SELECT nomCli, villeCli " & "FROM Client " & "WHERE villeCli = " & "Aubagne " & ";"
Set MonRs = Source.Execute(MaReq)
Debug.Print MonRs
End Sub
'Commentaire: currentProject.connexion = "Provider Microsoft.ACE.OLEDB.12.0;user id = admin; data source = .........
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Comparaison: ce qui fait / ce que tu ma proposé:
fichier = localisationdetabase & "\tabasemdb"
Set source= New ADODB.Connection
source;"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"data source=" & fichier & ";"
----
et tu n'instancie ta requete:
set requete= new Adodb.Recordset
texte_sql="SELECT nomCli, vill....
Set requete = source.Execute(texte_SQL)
debug print requete
il ya peut être des parenthèses ou un point (trou de mémoire!)
-----
ton texte SQL est faux: WHERE villeCli = [Choisissez la ville]"
peut-^tre mais....:WHERE villeCli= [" & choisissez.. & "]
-------------------------------------------------------------------------------
Sub requetebis()
Dim MaConnex As Adodb.Connection
Dim MonRs As Adodb.Recordset
Dim MaReq As String
Set MaConnex = New Adodb.Connection // Set source= New ADODB.Connection
MaConnex = CurrentProject.Connection // source;"Provider = Microsoft.Jet.OLEDB.4.0;" & _ "data source=" & fichier & ";"
Set MonRs = New Adodb.Recordset // set requete= new Adodb.Recordset
MaReq = "SELECT nomCli, villeCli " & "FROM Client " & "WHERE villeCli = " & "Aubagne " & ";" // texte_sql="SELECT nomCli, vill....
Set MonRs = Source.Execute(MaReq) // Set requete = source.Execute(texte_SQL)
Debug.Print MonRs // debug print requete
End Sub
les erreurs les plus évidente sont parfois les plus dure a trouvé ...
fichier = localisationdetabase & "\tabasemdb"
Set source= New ADODB.Connection
source;"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"data source=" & fichier & ";"
----
et tu n'instancie ta requete:
set requete= new Adodb.Recordset
texte_sql="SELECT nomCli, vill....
Set requete = source.Execute(texte_SQL)
debug print requete
il ya peut être des parenthèses ou un point (trou de mémoire!)
-----
ton texte SQL est faux: WHERE villeCli = [Choisissez la ville]"
peut-^tre mais....:WHERE villeCli= [" & choisissez.. & "]
-------------------------------------------------------------------------------
Sub requetebis()
Dim MaConnex As Adodb.Connection
Dim MonRs As Adodb.Recordset
Dim MaReq As String
Set MaConnex = New Adodb.Connection // Set source= New ADODB.Connection
MaConnex = CurrentProject.Connection // source;"Provider = Microsoft.Jet.OLEDB.4.0;" & _ "data source=" & fichier & ";"
Set MonRs = New Adodb.Recordset // set requete= new Adodb.Recordset
MaReq = "SELECT nomCli, villeCli " & "FROM Client " & "WHERE villeCli = " & "Aubagne " & ";" // texte_sql="SELECT nomCli, vill....
Set MonRs = Source.Execute(MaReq) // Set requete = source.Execute(texte_SQL)
Debug.Print MonRs // debug print requete
End Sub
les erreurs les plus évidente sont parfois les plus dure a trouvé ...
désolé... je me suis un peu emporté, le fait que je n'arrive pas a avancé sur ce tp me stress un peu ...
bref j'ai trouvé une de mes erreurs :
Set MonRs = Source.Execute(MaReq) Devient Set MonRs = MaConnex.Execute(MaReq)
Mais une erreur apparait m'indiquant l'opération n'est pas autorisé si l'objet est fermé.
bref j'ai trouvé une de mes erreurs :
Set MonRs = Source.Execute(MaReq) Devient Set MonRs = MaConnex.Execute(MaReq)
Mais une erreur apparait m'indiquant l'opération n'est pas autorisé si l'objet est fermé.
Je doit maintenant corriger une erreur m'indiquant que mon Recordset n'est pas ouvert.
J'ai donc rajouté :
MonRs.Open MaReq, MaConnex, adOpenStatic
et encore un echec ^^
J'ai donc rajouté :
MonRs.Open MaReq, MaConnex, adOpenStatic
et encore un echec ^^
Merci beacoup pour m'avoir indiquez des éléments de réponse. J'ai donc pu enfin trouvé la solution :
Sub Marequete()
Dim MaConnex As New Connection
Dim MonRs As New Recordset
Dim MaReq As String
Set MaConnex = CurrentProject.Connection
MaReq = "select * from client"
Set MonRs.ActiveConnection = maConnex
MonRs.Open MaReq, MaConnex
MonRs.MoveFirst
While MonRs.EOF <> True
Debug.Print MonRs!nomCli & " " & MonRs!villeCli
MonRs.MoveNext
Wend
End Sub
Sub Marequete()
Dim MaConnex As New Connection
Dim MonRs As New Recordset
Dim MaReq As String
Set MaConnex = CurrentProject.Connection
MaReq = "select * from client"
Set MonRs.ActiveConnection = maConnex
MonRs.Open MaReq, MaConnex
MonRs.MoveFirst
While MonRs.EOF <> True
Debug.Print MonRs!nomCli & " " & MonRs!villeCli
MonRs.MoveNext
Wend
End Sub
Je post une nouvelle foi car j'avais oublié un petit quelque chose ^^
Sub RequetteVille()
Dim maConnex As New Connection
Dim monRs As New Recordset
Dim maReq As String
Dim vVille As String
Set maConnex = CurrentProject.Connection
maReq = "select * from client"
Set monRs.ActiveConnection = maConnex
monRs.Open maReq, maConnex
vVille = InputBox("Indiquez la ville")
monRs.MoveFirst
While monRs.EOF <> True
If monRs!villeCli = vVille Then
Debug.Print monRs!nomCli & " " & monRs!villeCli
End If
monRs.MoveNext
Wend
End Sub
Sub RequetteVille()
Dim maConnex As New Connection
Dim monRs As New Recordset
Dim maReq As String
Dim vVille As String
Set maConnex = CurrentProject.Connection
maReq = "select * from client"
Set monRs.ActiveConnection = maConnex
monRs.Open maReq, maConnex
vVille = InputBox("Indiquez la ville")
monRs.MoveFirst
While monRs.EOF <> True
If monRs!villeCli = vVille Then
Debug.Print monRs!nomCli & " " & monRs!villeCli
End If
monRs.MoveNext
Wend
End Sub