souci de prog et de requete - SQL/NoSQL - Programmation
Marsh Posté le 15-10-2007 à 10:29:56
salut,
tu peux très bien effectuer des requetes via le vba, en utilisant Docmd.RunSQL Larequete
Marsh Posté le 15-10-2007 à 11:00:33
jpcheck a écrit : salut, |
Vi je viens de découvrir ca ^_^'
Voici ma requête (sachant qu'elle est dans une procédure evenementielle):
Dim recherche As String
recherche = "SELECT *" & _
"FROM [Sous_réseaux ]" & _
"WHERE [Sous_réseaux].SSres=echange"
DoCmd.RunSQL recherche
End Sub
sachant que 'echange' est la variable dans laquelle il y a la valeur (en l'occurence un sous-reseau) a rechercher dans la table 'Sous_réseaux'
Mais il me met un message d'erreur quand ca se lance, a savoir:
Erreur d'éxécution '2342':
Une action ExécuterSQL nécessite un argument consistant en une instruction SQL
Bizzare qu'il me retourne ca, sachant que j'ai appliqué l'exemple de l'aide ^^ donc si vous avez des idées ou des suggestion je suis preneur
Marsh Posté le 15-10-2007 à 11:02:33
fait un débug.print de ta requete, tu verras qu'il te manque des espaces de partout
Marsh Posté le 15-10-2007 à 11:07:05
Oki mais la commande je la fais où ? je la tape dans mon code ?
Marsh Posté le 15-10-2007 à 11:11:24
par exemple oui,
ou alors dans la fenetre d'execution, tu peux meme faire un msgbox larequete ^^
Marsh Posté le 15-10-2007 à 11:16:12
Alors voici ce que j'ai fais:
Dim recherche As String
recherche = "SELECT * " & _
"FROM [T_Sous_réseaux COMETE] " & _
"WHERE [T_Sous_réseaux COMETE].SSres=echange"
Debug.Print -----> Ca fait rien du tout, aucune info
MsgBox recheche -----> Affiche une fenetre vide (doit manquer qq chose)
DoCmd.RunSQL recherche <------ c'est ici que ca coince
End Sub
Je patauge
Marsh Posté le 15-10-2007 à 11:22:05
alkashee a écrit : Alors voici ce que j'ai fais: |
essaie deja avec ces modifications
Marsh Posté le 15-10-2007 à 11:32:16
Mon dieu, la mouise du lundi matin a encore frappée....
Ca va mieux, il me sort bien une msgBox qui me ressort la requête complète (SELECT....FROM.....WHERE.... mais sans donner son résultat ) mais il bloque toujours au même point qu'au début et me donne toujours le même message d'erreur.
Je précise, je n'y connais rien en VBA et mes cours de SQL sont loiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiin au fond a droite ^^
Marsh Posté le 15-10-2007 à 11:34:34
bon allez, remplace ton string par celui la (modele tanga )
Code :
|
je me base ici sur le fait que SSres est un champ varchar
Marsh Posté le 15-10-2007 à 11:40:26
Ah, on a affaire à un (une ?) connaisseur(euse ?) !
j'avais essayé de mettre 'echange', rien de rien.. Et mon champ SSres est bien un champ texte (issu d'une importation d'un fichier .xls, est-ce que ca joue ?)
Marsh Posté le 15-10-2007 à 11:41:53
<-- c'est un poussin, pas une poussine hein
et en remplacant = par LIKE '*change*' ?
Marsh Posté le 15-10-2007 à 11:47:44
de quel message parles-tu ?
sinon, tu peux envoyer la base, qu'on regarde ce qui cloche
Marsh Posté le 15-10-2007 à 11:54:04
le message c'est
Erreur d'éxécution '2342':
Une action ExécuterSQL nécessite un argument consistant en une instruction SQL
Pour la base, je peux te l'envoyer mais ca sera un peu dépouillé car ce sont des données un tantinet interne a ma boite et donc peux pas trop les envoyer a tout le monde ^^
Marsh Posté le 15-10-2007 à 12:01:25
arf, fesse moi avec une pelle RunSQL ne marche que pour des requetes dites d'actions.
Essaie avec currentdb.openrecordset larequete
Marsh Posté le 15-10-2007 à 12:01:58
Ah oki, je vois ca en revenant de manger et je te dis quoi
Marsh Posté le 15-10-2007 à 13:57:27
Alors effectivement ca a l'air d'aller mieux, mais il me dit que le moteur Jet de la base de donnée ne peut pas trouver la requete ou la table source "recherche", ce qui est en soi logique vu que la requete est contenue dans une variable >.< Hors c'est impossible de créer une requete vu que l'argument passé provient d'une variable....
Marsh Posté le 15-10-2007 à 14:00:41
ben si : exmple =
Code :
|
Marsh Posté le 15-10-2007 à 14:17:09
Dim RS As ADO.Recordset ---> ADO.recordset il connait pas, même pas 'ADO'; il me dit "type defini par l'utilisateur non defnini"
Marsh Posté le 15-10-2007 à 14:17:55
pardon, il faut la référence ADO, tu peux le faire sans en virant le ADO (mauvaise habitude ?)
Marsh Posté le 15-10-2007 à 14:27:28
Ca avance, il grogne plus là dessus mais maintenant il me dit " erreur de syntaxe (operateur absent) dans l'expression '* FROM..[..]' Bizzarement le SELECT passe à la trappe sans raison alors qu'il "lit" bien le reste O_O
Marsh Posté le 15-10-2007 à 14:29:52
Rhooo c bon j'ai fait le boulet en faisant joujou avec le C/c -_-'
Mais il me dit now "incompatibilité de type"...
Marsh Posté le 15-10-2007 à 14:30:25
Dim echange As String
echange = C_sous_reseau.Value
Dim recherche As String
recherche = "SELECT * " & _
"FROM [T_Sous_réseaux COMETE] " & _
"WHERE [T_Sous_réseaux COMETE].SSres = echange"
Dim RS As Recordset
Set RS = CurrentDb.Openrecordset("SELECT * FROM [T_Sous_réseaux COMETE] WHERE [T_Sous_réseaux COMETE].SSres =' & echange & '" )
M'est avis que le type 'string' et le type 'recordset' doivent pas s'arranger entre eux ^^
Marsh Posté le 15-10-2007 à 14:41:12
Tout a fait, à force de copier, j'ai plus fait gaffe ^^ Mais le message d'incompatibilité, concerne la dernière ligne, d'ou ma remarque sur l'incompatibilité entre le 'string' echange et le 'recordset' RS. M'enfin je dis ca mais j'y connais rien, c'est juste une reflexion personnelle
Marsh Posté le 15-10-2007 à 14:50:04
Ben veux bien mais lui veux pas ^^ pis comme c'est dans une Sub je vois pas trop ou je pourrais le mettre
Marsh Posté le 15-10-2007 à 15:00:11
tu peux filer le fichier stp, j'ai l'impression qu'on s'enlise la
Marsh Posté le 15-10-2007 à 15:07:54
oki doki mais comment on fait pour envoyer des fichiers en mp ?
Marsh Posté le 15-10-2007 à 15:33:35
alors il faut bien ajouter DAO dans les références hein, sinon ca marchera po ^^
Marsh Posté le 15-10-2007 à 15:50:27
j'ai bien coché la case, ca a rien changé Dans le doute j'ai ajouté ADO aussi, des fois que ^^
Marsh Posté le 15-10-2007 à 15:57:59
Alors ca roule, plus de messages d'erreurs mais ca débouche sur rien ! Question bête; il fait la requête mais est-ce qu'il l'affiche tout seul ou faut-il lui dire de le faire ?
EDIT: Et si il faut lui dire de le faire, peut-on par le plus grand hasard possible, le faire au travers d'un formulaire ? (a)
Marsh Posté le 15-10-2007 à 16:01:15
Ben une fois ton recordset récupéré, il faut dispatcher les réponses quelques part:
ici tu peut faire une truc comme ca :
Code :
|
Marsh Posté le 15-10-2007 à 09:23:27
Bonjour bonjour !
Alors voila mon petit souci; suite à quelques manip en VB sous access, je récupère une valeur dans le code d'un formulaire (la valeur est calculée, non saisie). Normalement la valeur en question peut se trouver dans une table, d'où mon intention de faire une requête par la suite pour le vérifier.
Mon problème est que je ne sais pas comment faire le lien entre cette valeur que j'obtiens par le VB et la requete souhaitée vu que les requêtes s'appuie normalement sur des tables et non sur des variables (je sais pas si je suis clair )
Merci pour le coup de main
EDIT: j'espère ne pas m'être trompé de catégorie
Message édité par alkashee le 15-10-2007 à 09:27:11