IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Programme vba et SQL


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 108
    Par défaut Programme vba et SQL
    Bonjour,

    Brièvement j'ai un formulaire Access avec 3 liste déroulantes qui chacune d'elles sont dépendantes entre eux, de plus j'ai une zone de texte qui me permettra de choisir le nombre d'équipements dont j'ai besoin, par exemple si j'entre un nombre de type numériques 4 une requete en l'occurence doit m'affecter quatre fois l'équipement choisi au préaable dans ma table ...

    J'ai dans ma table un attribut "Equi" qui doit etre identifié par ma requete en ttes logique, Si je choisi un ROUTEUR comme equipement avec le nombre 3, je dois obtenir le resultat suivant :
    -->Equi de ma table :
    ROUTEUR1

    ROUTEUR2

    ROUTEUR3
    ROUTEUR4

    Comment faire ça ? je sais que je dois passer par une boucle mais le problème jen e sais pas le faire en vba ....et pour la requete en question je ne voi pas comment tout afficher sur une ligne en fonction du nombre ...AIDEZ-mOI

    merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Par défaut
    Bonjour Cedil23,
    J’ai atterri ici pour poser une question et voilà le résultat.
    Ta question n’est pas très claire.
    Si tu reformules mieux ton problème tu peux trouver une solution mois compliquée.
    Je te livre ce petit bout de code qu réveillera éventuellement un tic chez toi.
    Bon progue.

    crée la table pour tester le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Public Sub ProcHelp()
     
    Dim strSource As String  'Table source de données
    Dim strSQLsrce  As String 'le SQL des données ci dessus
    Dim rstSource As DAO.Recordset ' le rst de la source
     
    Dim nbIteration As Integer 'c'est les ROUTEURS 0 à 3 par exemple
    Dim i As Integer
     
    Dim strCritere As String 'le critère de la requête
    Dim strChamp As String ' le champ sur lequel porte le critère
    strSource = "0000TableArticle" ' paramétrable ou fourni par un formulaire tableau ou autre gadget
    strChamp = "[0000NomChamp]" 'paramétrable aussi, penser aussi à fields(index)
    strCritere = "ROUTEUR"
    strSQLsrce = "Select * From " & strSource _
        & " Where " & strChamp & " = " & Chr(34) & strCritere & Chr(34)  '& " And champNum = " & lannee" dans le cas d'autre citère numérique
     
    Debug.Print strSQLsrce
     
    Set rstSource = CurrentDb.OpenRecordset(strSQLsrce, dbOpenDynaset)
    'tester le nombre d'enregistrement renvoyé par le recordset
    nbIteration = 3
    If (rstSource.RecordCount > 0) Then
        rstSource.MoveFirst
        While Not rstSource.EOF
            For i = 0 To nbIteration ' peut être donné en paramètre exemple sub ProcHelpParam(nbIteration as integer)
                Debug.Print rstSource.Fields(strChamp) & CStr(i) ' concaténer deux texte
                ' là cela dépend de ce que tu veux faire
                ' et puis examine le cas ou tu as plusieurs "ROUTEURS"  like routeur*
            Next i
            rstSource.MoveNext
        Wend
    End If
     
     
     
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 108
    Par défaut
    slt,

    En faite je dois crée une table quelconque avec un nom précis pour tester le programme ???

    Par contre je voulais savoir , tu as defini directement le nbiteration à 3 mais dans mon cas je dois le récuperer directement de mon formulaire car c'est l'utilisateur qui décide de quel nombres affecter ??? Qu'est-ce-que tu n'as pas compris dans ma question ?

    Merci d'avance

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 108
    Par défaut
    bjr,

    J'ai regardé ton programme en detaille, je comprends ce que tu as fait brièvement !!
    je voulais savoir le rst signifie quoi et le chr(34) ?
    Au niveau du Select moi je vais definir un insert Into matable select equip from ....il y a pa de problème pr l'utilisation d'une autre requete?

    MERCI

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Par défaut
    Bonjour,
    le RSt est recordset, c'est emmerdant au début mais c'est nécessaire si tu veux décoller.
    le chr(34) , appelle la touche F1 c'est une amie, te permet facilement d'exprimer des expressions sans trop te brouiller avec les simples et autre double cotes.
    la forme du critère change selon que le champ est numérique, date ou texte.
    je te conseille de consulter http://access.developpez.com/cours/?page=dataaccess.
    il y' a de très bon tutoriels.

    -------------------------------
    La solution de la boucle avec requête action est peut être bonne, mais dans ton cas je crois que le mieux est d'utiliser les recordset (le truc RST).
    --------------------------------------------------------
    Finalement, le nbiteration et tout ce que j'ai donné en "variable" peut être transmis à la procédure ou à la fonction via des contrôles d'un formulaire.
    ----------------------------------------------------------
    J'espère que ceci t'a aidé. Bon courage.

Discussions similaires

  1. Réponses: 20
    Dernier message: 01/04/2013, 18h40
  2. Programmation VBA SQL
    Par Highest Honor dans le forum Excel
    Réponses: 2
    Dernier message: 11/03/2010, 10h54
  3. [AC-2000] Programmation VBA SQL
    Par Highest Honor dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/03/2010, 10h17
  4. EXCEL "refresh" du SQL "en programmation" VBA
    Par lediz dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2009, 10h06
  5. requete SQL dans un programme VBA ?
    Par shuin dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/06/2007, 21h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo