Requete access et vba

Fermé
amelie - 21 févr. 2006 à 13:40
 Utilisateur anonyme - 23 févr. 2006 à 15:15
quelqu'un serait il traduire ces requete en vba merci car moi le vb on ne s'aime pas trop

SELECT Right((Left([Port description],75)),1) AS Unit, Right((Right([Port description],20)),2) AS Port, rg18.[MAC forwarding address]
FROM rg18 LEFT JOIN Gimi ON rg18.[MAC forwarding address] = Gimi.Valeur
WHERE (((Gimi.Valeur) Is Null));

20 réponses

Utilisateur anonyme
21 févr. 2006 à 14:45
Bonjour,

On ne traduit pas du sql en vba, pas possible.
Si tu veux parler d'exécuter une requête sans avoir à l'enregistrer en tant que telle, tu dois utiliser un recordset.

Exemple :

sub DAOOpenRecordset ()
    Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
    Dim sSQL As String
    ' Ouverture de la base de données 
    Set db = currentDb
    sSQL =  "SELECT Right((Left([Port description],75)),1) AS Unit,
Right((Right([Port description],20)),2) AS Port, rg18.[MAC forwarding address]
FROM rg18 LEFT JOIN Gimi ON rg18.[MAC forwarding address] = Gimi.Valeur
WHERE (((Gimi.Valeur) Is Null));"
    ' Ouverture du recordset 
    Set rst = db.OpenRecordset (sSQL, dbOpenForwardOnly, dbReadOnly)
    ' Fermeture du Recordset
    rst.Close
End Sub

1
je met ce code dans le module access et il doit logiquement marcher ou pas ?????
0
Utilisateur anonyme
22 févr. 2006 à 16:54
Tu veux qu'un formulaire affiche le résultat de ta requête.
Tu crées ta requête par la voie "classique" : tu vas dans l'onglet "requêtes", nouvelle requete, tu choisis les tables dont tu as besoin et les champ dont tu as besoin.
Une requête classique.
Tu enregistre cette requête, par exemple, r_resultat.
Ensuite tu vas dans formulaire, nouveau, soit tu fais ton formulaire avec l'assistant, soit tu le fais "à la main".
Si c'est avec l'assistant, celui-ci te donne le choix de la source de ton formulaire, soit tables, soit requêtes ; tu choisis "requête", et là tu choisis r_resultat créée juste auparavant.
Si tu ne veux pas de l'assistant, tu crées ton formulaire en mode création, dans les propriétés du formulaire (affichage, propriétés), sur la ligne source, du choisis r_resultat.

Tu enregistres ton formulaire, par exemple f_resultat.
En ouvrant ton formulaire en mode normal, celui-ci doit maitenant t'afficher le résultat de ta requête.


Ensuite, si tu veux ouvrir ce formulaire depuis un autre formulaire, avec un bouton par exemple, tu mets sur le code de ce bouton :
docmd.openform "f_resultat"


Je ne peux pas plus détailler...
1
mes tables s'appellent rg01/rg02....etc
g pas compris pour la moulinette tu peux m'en dire plus merci!!!
1
sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009 2
23 févr. 2006 à 11:55
salut! je prend le train en marche du debut avec HDU c'est touffou pourtant il ezst bon je recponnais son pseudo.à l'isntant ou es-tu rendu? quel est le plus clairement ton besoin? et ton pb?:
met le besoin avant le pb
0
amelie > sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009
23 févr. 2006 à 12:05
mon besoin est :
Je veux lancer une appliq ou autre commune a toutes mes tables sans avoir a modifié mes requete sql (c a d le FroM XXX)

En faite g realiser 4 requete sql et pour les appliquer a chaque tables je dois obligatoirement modifier le "from" pour indiquer la table
pbl a la fin ca va m'en faire 80 requete voir plus car j'ai 22 tables

en faite je veux que c requete s'applique a chauque fois pur toutes les tables sans les modif

alors est ce que faut faire un module ou une macro moi je ny connait rien en programmation

merci les gars ;)
0
sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009 2 > amelie
23 févr. 2006 à 12:11
c bizare est-ce que tes 4 requette ont les meme besoin?
je veux dire le select par exemple soit la table client. le select va traiter les donné des client!! si tu veux utiliser cette meme requette pour la table Repas le select sera le meme?
est-ce que tu peux faire un copie coller de 2? et tu travail dans quel domaine?
moi je crois qu'il faut faire un module.
comme ça tu auras des variable qui comme le nom l'indique varierons en fonction du besoin.
0
amelie > amelie
23 févr. 2006 à 12:17
moi aussi je pense qu'il faut faire un module mais qui dis module dis programme et qui dit programme dis ""
en faite les 4 requetes font toujours faire les meme actions sur les tables !!!
car en faite g 20 tables qui ont les memes champs mais pas les meme données et une commune ou j'etablie mes liens de correspondance et mes liens de non correspondance!!!

tu comprend un peu mieu le truc??
0
sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009 2 > amelie
23 févr. 2006 à 12:34
mais le module va remplacer les 4 requete sauf que tu vas definr les variables avant et les variable vt changer le resultat final au fur et à mesure.par contre 20 table avec les meme chanmps c'est spécial.
est-ce que tu peux donner un exmple de ce que tu aimeirai avoir ds l'execution d'une requete?
mais tu ne va pas t'échaper au code t'es biens dans du vba? mme si c que des requettre du devra bien faire un docmd.run sql pour les exécuter? si tu trouve compliquer.je t'enverais dans un forum spécial access là tu trouvera mieux la solution.le pb c pas ce que tu vceux optenir mais ta question est clair alors on ne peut pas te donner un bout de code alors qu'on ne connait pas la finalité! tu vois!
moi je t'ai bien compris je crois mais. envoie un peu un exemple!
0
Utilisateur anonyme
21 févr. 2006 à 15:14
Tu dois le mettre à l'endroit ou *il faut*, c'est-à-dire dans le code propre à l'évènement qui doit déclencher cette requête.
Exemple :
si tu veux exécuter cette requête lors du clic sur un bouton sur un formulaire, et bien tu mets ce code sur l'évènement clic() du même bouton.

Au fait, c'est quoi le but de la maneuvre ?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
22 févr. 2006 à 15:29
Re,

Ce que tu appelles sous forme de tableau, c'est qu'il te donne le résultat de la requête, c'est cela ?

Pour l'avoir sous forme de formulaire, il fallait pas t'embrouiller la vie comme cela depuis le départ ;-)

Tu te crées un formulaire avec comme source cette requête.
Au clic sur le bouton, au lieu d'exécuter cette requête, tu fais ouvrir le formulaire.
Exemple :
tu crées un formulaire nommé f_resultat avec comme source de données la requête.
Au clic sur le bouton de ton formulaire "principal", tu mets :
docmd.openform "f_resultat"

Et c'est tout...

0
desolé je vais sembler bete mais j'ai rien compris a tes exxplications hdu desolé pourrais tu etre plus explicite meme si tu dois surement deja l'etre mais j'ai du mal

merci
0
Tu as été tres clair !!!
merci énormement!!
Sinon est il possible au lieu de créér un requete specifique de créer une macro qui va faire toujours la meme actions mais sur des tables differentes mais ayant exactement la meme structure!!
Car sinon je vais etre obligée de realiser a chaque fois une requete specifique pour chaque table c a d changer a chaque fois l'instruction FROM

tu a quelques indications?????
MERCI
0
je n'ai vraiment pas ete tres clair au dessus desolé je me reprend!!

J'ai crée des requêtes qui agissent sur mes tables !!
Maintenant en fait je souhaiterais que les actions qu'elles realisent sur mes tables bien précise car instruction FROM elle le fasse sur n'importe quelle table que j'importe!!

en gros pas besoin de modif des requêtes a chaque fois est ce possible et si oui comment et avec qoui module ou macro????
Merci
0
Utilisateur anonyme
23 févr. 2006 à 11:24
Tu peux le faire en vba.

Ca sera quelquechose comme :
sql="SELECT truc, bidule from "& le_nom_de_la_table & " where truc=machin ;"

0
ok pour le vba mais je dois precise automatiquement quelle table je souhaite modifier??
Car je voudrait savoir si c possible de realiser les meme modif sur toutes les tables importées sans changer quoi que ce soit !!
merci en tout cas de ton aide hdu ;)
0
sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009 2
23 févr. 2006 à 11:41
salut! ton pb est resolue? la discution est longue mais au dernier msg avec l'ami HDU je vois pas de conclusion?
si non à quel niveau es-tu rendu?
0
Utilisateur anonyme
23 févr. 2006 à 11:35
Il faudra forcément que tu indiques à access sur quelles tables tu veut que tes requêtes interviennent.
Avec un peu de bol, si tes tables s'appelent table1, table2, table3..., avec une moulinette c'est simple, si c'est tableun, tabledeux, tabletrois, ça sera plus long...
0
sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009 2
23 févr. 2006 à 13:33
là tu essaye dc deja de creer ton module en attendant laise ton message sur: www.e-rus.net c spécifiquement access et la gestion des bd .pendant ce temps je vois ce que je peux faire
0
sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009 2
23 févr. 2006 à 14:41
oui tu peux enchener les 4 requetes elle s'excuteron par ordre d'enchainement .
0
sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009 2
23 févr. 2006 à 14:50
amelie tu devras offrir un bonbon a tchu! et seb!
0
une sucette ca ira!!

chupa chups bien sur!!
0
sergeszebe Messages postés 180 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 8 octobre 2009 2
23 févr. 2006 à 15:12
bon on va changer de sujet.
le meins est vieux mais sans solution jusqu'a lors.
j'ai donc du supprimer et je recommence.
voila donc ce qui se passa:
j'ai 26 étudiant s qui se nomme (a....z)
j'ai 4 matieres: M1,M2,M3,M4 qui sont notées sur 5 chacune. j'ai une note qui est la somme des "M".donc sur 20.
chaque étudiant peut etre evalué plusieur fois dans la journée.
à la fin d'une journée on pourra dc avoir 2 eval dc 2 note M1,2 M2,....2M4 et 2 notes sur 20.
à la fin du mois on veux pourvoir recapituler. on à donc un giganteste tablezu
style:

Serge Lebeau Mois de Janvier

M1 M2 M3 M4 Total Commentaire
4 4 4 5 17 eleve plein d'avenir

4 4 5 5 18 eleve plein d'avenir
4 4 4 5 17 eleve plein d'avenir

j'ai des vielle tables valable dans ma base ou j'ai deja les noms des eleves.
je peux en creer une nouvelle . il y auras donc dans la table plusieur fois serge lebeau puisqu'il sera evalué plusieur fois dans le mois.
je ne sais pas comment materialiser l'affaire.


je compte bien sur vous pour m'aider: J-J - 5 h
0
Utilisateur anonyme
23 févr. 2006 à 15:15
Re,
tu aurais dû créer un autre post, car c'était déjà le boxon, la ça devient illisible.

Je te propose d'en créer un nouveau tu auras plus de chances d'avoir des réponses, car là personne ne va venir lire ce post jusque là.

0
le but c reussir a separer un champ en plusieur grace au indique presente dans le champs
-1
Utilisateur anonyme
21 févr. 2006 à 15:26
Pourquoi vouloir le faire absolument en vba ???

Si dans le requêteur d'access tu mets tes tables et tes champs qui vont bien, et tu mets à la place de ton champ portdescription
unit: droite(gauche(portdescription;75);1)
.
Autre chose :
ton Right((Right([Port description],20)),2) sert à quoi ???? Il revient à un right(portdescription,2)

0
tu as raison c inutile ce que j'avais ecrit !!!!merci t cool
-1
Utilisateur anonyme
21 févr. 2006 à 15:59
Mais y'a pas de mal ma brave dame ;-))

-1
il ya encore un petit truc que j'ai pas compris c a quand tu dis tu le met dans l'endroit il faut !!!

en fait je met ou ce code et est ce que je laisse la requete que j'ai créer ???
0
et aussi desolé comment on crée un bouton avec un formulaire???
-1
Utilisateur anonyme
22 févr. 2006 à 14:02
Tu ne sais pas créer un bouton dans un formulaire ?????????

Sinon pour ta question d'avant, tout dépend quand tu veux faire exécuter cette requête ; on n'éxécute pas une requête tout au long que la base est ouverte...
0
si je sais creer un bouton mais quand j'applique a ce boutons mes requete est ce normal qu'il me renvoie mes demande sous forme de tableau moi j'y voudrait sous form de formulaire est ce possible
merci hdu
-1