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 :

Enregistrement avec requête SQL depuis un formulaire.


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut Enregistrement avec requête SQL depuis un formulaire.
    Salut à tous,

    Après plusieurs heure de recherche, et ayant trouvé des cas similaire, mais pas de réponses, je m'en remet à vous.

    J'ai un petit problème (certainement simpliste) avec accès.

    En gros j'ai un formulaire qui doit me servir à rentrer des numéros de séries de machine dans une table "Machine" et associé cette machine a un client de la table "Client", pour ce faire une table "Suivi client" concorde le numéro d'ID_Machine et le numéro d'ID_Client présent dans leurs tables respectives.

    Mon formulaire comprend donc des cases pour rentrer les numéros de séries, un menu déroulant avec mes clients et un bouton d'envoi.

    La base du formulaire avec les cases des numéro de série a été faite avec l'assistant formulaire, du coup quand on clique sur le bouton d'envoi, la machine est bien créer dans la table Machine.

    Maintenant ce que j'aimerais, c'est qu'après que la Machine est été créer, que les entré ID_Client et ID_Machine soit créer dans la table "Suivi client", pour ca je pensais faire à la suite de l'enregistrement une requête SQL qui sélectionnerai l'ID_Machine dans la table machine avec un numéro de série rentrer, l'enregistrerai dans une variable en vba, puis une requête SQL qui utiliserai la variable ID_Machine et l'ID_Client (récupérer du menu déroulant), qui créerai l'entré dans la table suivi client.

    Pouvez vous m'aider a utiliser mes requête SQL dans l’éditeur VBA ? Je test plusieurs choses depuis un certains temps sans succès.

    Merci de votre soutien,

    Cordialement.

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Quelque chose comme cela te permettra de récupérer dans la variable ID_MACHINE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL = "SELECT ID_MACHINE " _
        & "FROM TABLE_MACHINE " _
        & "WHERE NUMERO_SERIE = '" & FORMS!F_FORMULAIRE!NUMERO_SERIE.value & "';"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        While Not oSQL.EOF
            ID_MACHINE = oSQL.Fields(0)
            oSQL.MoveNext
        Wend
    Set oSQL = Nothing
    @+.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    Salut,

    Quelque chose comme cela te permettra de récupérer dans la variable ID_MACHINE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL = "SELECT ID_MACHINE " _
        & "FROM TABLE_MACHINE " _
        & "WHERE NUMERO_SERIE = '" & FORMS!F_FORMULAIRE!NUMERO_SERIE.value & "';"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        While Not oSQL.EOF
            ID_MACHINE = oSQL.Fields(0)
            oSQL.MoveNext
        Wend
    Set oSQL = Nothing
    @+.
    Merci de tq réponse, je n'ai pas vraiment compris ton code, du coup j'ai copié pour voir ce que ca donnait, avec un MsgBox à la fin pour afficher la variable obtenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL = "SELECT ID_Machine" _
        & "FROM Machines1" _
        & "WHERE Camera = '" & Me!Camera & "';"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        While Not oSQL.EOF
            ID_machine = oSQL.Fiels(0)
            oSQL.MoveNext
        Wend
    Set oSQL = Nothing
     
    MsgBox (ID_machine)
    j'obtient l'erreur : Erreur d'execution '3075':

    Erreur de syntaxe (opérateur absent) dans l'expression "ID_MachineFrom Machines1Where Camera = 'test42'".

    le debugeur me signale l'erreur dans la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set oSQL = CurrentDb.OpenRecordset(SQL)
    Merci

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Cela devrait mieux fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL = "SELECT ID_Machine " _
        & "FROM Machines1 " _
        & "WHERE Camera = '" & Me!Camera & "';"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        While Not oSQL.EOF
            ID_machine = oSQL.Fiels(0)
            oSQL.MoveNext
        Wend
    Set oSQL = Nothing
     
    MsgBox (ID_machine)
    Il faut un espace avant
    " _

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Merci encore de ta réponse

    alors cette fois, j'ai une erreur : Erreur d'execution '3061' :

    Trop peu de paramètres. 1 attendu.

    Le debugeur me donne la même ligne.

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL = "SELECT ID_Machine " _
        & "FROM Machines1 " _
        & "WHERE Camera = '" & Me!Camera & "';"
    MsgBox SQL
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        While Not oSQL.EOF
            ID_machine = oSQL.Fiels(0)
            oSQL.MoveNext
        Wend
    Set oSQL = Nothing
     
    MsgBox (ID_machine)
    Et que donne :

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Affichage de la requête SQL, puis même erreur que ci dessus.

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Peux-tu me donner le résultat du

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    Peux-tu me donner le résultat du
    Pas sur d'avoir compris, enfin j'ai mis MsgBox SQL dans le code, et j'obtient :

    SELECT ID_Machine FROM Machine1 WHERE Camera = 'test42';

    puis

    Erreur d’exécution '3061' : Trop peu de paramètres. 1 attendu.

    Désolé si ce n’est pas ce que tu attend :/.

  10. #10
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Si tu crées une requête avec le code suivant la requête fonctionne-elle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID_Machine FROM Machine1 WHERE Camera = 'test42';

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    Si tu crées une requête avec le code suivant la requête fonctionne-elle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID_Machine FROM Machine1 WHERE Camera = 'test42';
    Hum, j'avais oublier un "s" a ID_Machines, je me sent un peu bête du coup

    Enfin du coup avec cette correction la rqt fonctionne bien.

    Correction faite dans le code également, l’exécution m'affiche 2 fois:

    SELECT ID_Machine FROM Machine1 WHERE Camera = 'test42';

    puis une fenêtre vide.

  12. #12
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Si tu refais le code suivant, cela donne quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL = "SELECT ID_Machines " _
        & "FROM Machines1 " _
        & "WHERE Camera = '" & Me!Camera & "';"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        While Not oSQL.EOF
            ID_machines = oSQL.Fiels(0)
            oSQL.MoveNext
        Wend
    Set oSQL = Nothing
     
    MsgBox "Valeur : " & ID_machines

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    Si tu refais le code suivant, cela donne quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL = "SELECT ID_Machines " _
        & "FROM Machines1 " _
        & "WHERE Camera = '" & Me!Camera & "';"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        While Not oSQL.EOF
            ID_machines = oSQL.Fiels(0)
            oSQL.MoveNext
        Wend
    Set oSQL = Nothing
     
    MsgBox "Valeur : " & ID_machines
    Affichage d'une MsgBox "Valeur : " seule, sans valeur ou autre texte.

  14. #14
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Essaie cela et dis moi ce que tu obtiens dans le msgbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL = "SELECT ID_Machines " _
        & "FROM Machines1 " _
        & "WHERE Camera = '" & Me!Camera & "';"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
    Do Until oSQL.EOF
            Msgbox oSQL.Fiels(0)
            ID_machines = oSQL.Fiels(0)
            oSQL.MoveNext
        Loop
    Set oSQL = Nothing
     
    MsgBox "Valeur : " & ID_machines
    Et que dois-tu obtenir ? Avec la requête "SELECT ID_Machine FROM Machine1 WHERE Camera = 'test42';"

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    Essaie cela et dis moi ce que tu obtiens dans le msgbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL = "SELECT ID_Machines " _
        & "FROM Machines1 " _
        & "WHERE Camera = '" & Me!Camera & "';"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
    Do Until oSQL.EOF
            Msgbox oSQL.Fiels(0)
            ID_machines = oSQL.Fiels(0)
            oSQL.MoveNext
        Loop
    Set oSQL = Nothing
     
    MsgBox "Valeur : " & ID_machines
    Et que dois-tu obtenir ? Avec la requête "SELECT ID_Machine FROM Machine1 WHERE Camera = 'test42';"
    resultat : "Valeur :"

    Je dervais obtenir l'ID de la Machine par rapport au numéro de série de la camera rentré dans le formulaire, par ailleurs avec ce dernier code la machine n'est pas créer dans la table Machines1.

  16. #16
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    C'est normal si la donnée n'est pas créée dans Machines1 que cela ne donne rien !!!

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    C'est normal si la donnée n'est pas créée dans Machines1 que cela ne donne rien !!!
    Certe c'est logique, enfin avec les précédent codes, l'entré se fessait bien
    :s.

  18. #18
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Il faut que tu rajoutes ce code juste après la création dans la table Machines1...

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    Il faut que tu rajoutes ce code juste après la création dans la table Machines1...
    Bon j'ai résolu le problème de l'entré dans la Tables Machines1, elle se fait par une macro, puis il y'a exécution du code. le résultat est toujours :

    MsgBox "Valeur : "

  20. #20
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Là, je ne vois plus ce que tu veux faire

Discussions similaires

  1. Extraction depuis BdD avec requêtes SQL
    Par Rorylh dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 30/01/2013, 09h54
  2. lancer requête SQL depuis formulaire access
    Par Zavonen dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/10/2007, 19h43
  3. [JDBC]probleme avec requête sql
    Par lkryss dans le forum JDBC
    Réponses: 16
    Dernier message: 10/06/2006, 01h44
  4. [MySQL] Problème de listes déroulantes liées avec requêtes sql
    Par richton95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/12/2005, 16h04
  5. Générer une requête SQL depuis un model physique
    Par Ryan Sheckler dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/12/2005, 12h11

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