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

IHM Discussion :

Valeur zone de texte à tester avec le nom d'une table


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut Valeur zone de texte à tester avec le nom d'une table
    Bonjour

    Afin de corriger des erreurs dans ma base de donnée, donc mettre des conditions je voudrais avoir/savoir quelques renseignements:

    Comment faire pour récupérer ce que j'ai écri dans une zone de texte et tester la valeur. Si elle est identique à mon nom de table alors je fais tel action sinon si elle est égal à ce nom de table alors je fais tel action...?

    Merci pour votre aide je débute et suis un petit peu perdu ...

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    Heu....
    Si elle est identique à mon nom de table alors je fais tel action sinon si elle est égal à ce nom de table alors je fais tel action.
    ....ici je pense qu'il faut lire Identique et Différente....

    Sinon pour ton problème, tu peux éventuellement te servir de ces exemples de la ..et les adapter à ton cas...
    http://access.developpez.com/faq/?pa...#TastExistTabl
    http://access.developpez.com/faq/?pa...eTableIfExiste

    Bonne continuation...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Oui tu as raison c'est ce que je voulais dire.

    Merci je reviens vers toi dès que j'ai un souci
    Sinon c'est pas possible avec des If THEN ElseIf....???

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Non fonctionne pas...

    Dans les propriétés de ma zone de liste, contenu j'ai mis table1 mais quand elle n'est pas présente dans ma base je voudrai faire disparaître le message donc en quelque sorte gérer cette erreur soit en basculant sur une ouverture de fenêtre pour l'importer (fonction que j'ai déjà) soit en informant simplement l'utilisateur

    Merci de votre aide

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par dams95190 Voir le message
    Non fonctionne pas...

    Dans les propriétés de ma zone de liste, contenu j'ai mis table1 mais quand elle n'est pas présente dans ma base je voudrai faire disparaître le message donc en quelque sorte gérer cette erreur soit en basculant sur une ouverture de fenêtre pour l'importer (fonction que j'ai déjà) soit en informant simplement l'utilisateur

    Merci de votre aide
    Petit incompréhension je partais pas sur les bonnes choses
    En faites j'ai un zone de texte qui a pour contenu le nom d'une table,
    et je voudrai que si cette table existe alors dans ma table je met dans les deux premières colonnes (ma table en contient 4) des informations si c'est une autre table qui est saisie dans ma zone de texte alors je mettrai autre chose et ainsi de suite j'étais parti sur des If "ce que j'ai saisie dans ma zone de texte" = "nom de table existante dans ma base" Then "dnas ma requete je gere les champs que je veux" ElseIf... etc etc

  6. #6
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    Houla........c'est un peu confus ce que tu nous dit...
    ...je met dans les deux premières colonnes (ma table en contient 4) des informations
    Ici il faut nous préciser si tu souhaite ajouter un nouvel enregistrement dont les deux premiers champs seront remplis..
    .ou si souhaite simplement mettre à jour les deux premiers champs d'un enregistrement déjà existant..

    De plus, d'ou proviennent les informations qui seront sauvegardées dans ces deux champs...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    En faites, j'ai construit mon usine à gaz comme cela

    Un formulaire avec un 3 zone de texte
    dans la 1ère --> je dois mettre le nom de ma table (pour savoir ou je veux enregistrer)
    dans la 2ème --> je mets une information qui figurera dans la 3ème colonne de ma table
    dans la 3ème --> je mets une information qui figurera dans la 4ème colonne de ma table
    Lorsque j'appuie sur mon bouton ça enregistre mes infos et suivant le nom de ma table que j'ai mis dans la 1ère zone de texte,les deux premières colonnes de ma table seront remplie grâce à des conditions...
    ex: si je tape BT2020 dans ma première zone de texte, je voudrai rajouter directement ,grâce aux conditions, dans ma première colonne ,de la table BT2020, BT et dans la deuxième colonne 2020

    Dites moi si cela vous parle?

  8. #8
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Ok......petit exemple pas du tout optimisé....

    Sur ton formulaire:
    txtNomTable = Zone de texte pour saisir nom de ta table
    txtInfo3 = Zone de texte pour saisir la donnée du champ 3
    txtInfo4 = Zone de texte pour saisir la donnée du champ 4

    Sur l'événement "Sur clic" de ton bouton de commande (cmdEnregistrer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub cmdEnregistrer_Click()
    Select Case txtNomTable
        Case "BT2020"
            Dim sSQL As String
            sSQL = "INSERT INTO BT2020(Info1,Info2,Info3,Info4)" _
            & "values(Mid(txtNomTable,1,2),Mid(txtNomTable,3,6),txtInfo3,txtInfo4)"
            DoCmd.RunSQL sSQL
            MsgBox "Enregistrement effectué dans la table BT2020...."
     
        Case Else
            MsgBox "Le nom de la table est différent de BT2020....", vbInformation
     
    End Select
    End Sub
    Ici à chaque fois que la valeur de txtNomTable = BT2020......alors on ajoute un nouvel enregistrement en donnant au champ Info3 et Info4 les valeurs contenues dans les zones de texte txtInfo3 et txtInfo4

    A tester et a adapter.......

    [EDIT] Si quand le nom de ta table correspond à BT2020, tu enregistre toujours la valeur BT et 2020 dans ton champ 1 et ton champ 2...alors il serait plus rapide en conception de ta table d'attribuer directement cette valeur par défaut à tes deux champs...

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut

    [EDIT] Si quand le nom de ta table correspond à BT2020, tu enregistre toujours la valeur BT et 2020 dans ton champ 1 et ton champ 2...alors il serait plus rapide en conception de ta table d'attribuer directement cette valeur par défaut à tes deux champs...
    Oui mais vu que je ne sais pas quel nom de table l'utilisateur va mettre il faut plutôt que j'envisage toutes les possibilités.

    Je test et je te dis ça....

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Juste pour information:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sSQL = "INSERT INTO BT2020(Info1,Info2,Info3,Info4)"
    Info1,Info2,Info3,Info4 --> c'est bien les nom de mes colonnes dans ma table BT2020?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "values(Mid(txtNomTable,1,2),Mid(txtNomTable,3,6),txtInfo3,txtInfo4)"
    J'ai du mal avec cette ligne si tu peux m'aider?

    Merci

  11. #11
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re....
    N'oublie pas que Access possède une aide en ligne ...........et parfois(voire souvent...) on y trouve la réponse......
    Info1,Info2,Info3,Info4 --> c'est bien les nom de mes colonnes dans ma table BT2020?
    ...tout à fait, ici tu donne l'ordre d'insérer (INSERT) dans les différents champs de ta table BT2020 les valeurs contenues dans tes zones de texte.....
    "values(Mid(txtNomTable,1,2),Mid(txtNomTable,3,6),txtInfo3,txtInfo4)"
    .....pour plus d'explications, je te renvoie sur l'aide d'Access sur la fonction MID......
    Sinon pour faire simple, cette fonction va extraire les deux premiers caractères de gauche de la valeur contenue dans ta zone de texte "txtNomTable" et les insérer dans ton champ Info1 de ta table "BT2020"....donc la valeur "BT".

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Merci

    J'analyse tout ça et reviens vers toi...

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    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
     
    Private Sub cmdEnregistrer_Click()
    Select Case txtNomTable
        Case "BT2020"
            Dim sSQL As String
            sSQL = "INSERT INTO BT2020(Info1,Info2,Info3,Info4)" _
            & "values(Mid(txtNomTable,1,2),Mid(txtNomTable,3,6),txtInfo3,txtInfo4)"
            DoCmd.RunSQL sSQL
            MsgBox "Enregistrement effectué dans la table BT2020...."
        Case "BT2020i"
            Dim sSQL As String
            sSQL = "INSERT INTO BT2020i(Info1,Info2,Info3,Info4)" _
            & "values(Mid(txtNomTable,1,2),Mid(txtNomTable,3,5),txtInfo3,txtInfo4)"
            DoCmd.RunSQL sSQL
            MsgBox "Enregistrement effectué dans la table BT2020i...."
        Case Else
            MsgBox "Le nom de la table est différent de BT2020i....", vbInformation
     
    End Select
    End Sub
    Est-il possible d'avoir cette ligne là dans tous mes cases:
    Dim sSQL As String ??
    A priori non Access n'apprecie
    Serait-ce une varibale de type global que je ne devrai définir qu'une seule fois ou juste pour mon case?

  14. #14
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    Ici il te suffit uniquement de définir ta variable une seule fois...juste en dessous du Private Sub.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub cmdEnregistrer_Click()
    Dim sSQL As String
    Select Case txtNomTable
        Case "BT2020"
    ........
    ........

  15. #15
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Je test ça et je reviens vers toi....

  16. #16
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    OK cela fonctionne, j'ai deux questions...

    -Pourquoi est-ce que j'ai une fenetre juste avant d'enregistrer qui s'affiche? (cela correspond à la première colonne de ma table)

    -Tu me conseilles quoi comme implémentation pour que j'évite pleins de switch case?? la fonction MID...?

  17. #17
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Pourquoi est-ce que j'ai une fenetre juste avant d'enregistrer qui s'affiche?....
    ......en regardant dans ma boule de cristal.........je pense que la fenêtre qui s'ouvre te demande de confirmer l'ajout d'un nouvel enregistrement...
    Pour éviter ce message, tu as la possibilité de désactiver cette demande pour toute l'application:
    Menu Outils > Options > dans Onglet "Modifier/Rechercher" décoche au minimun l'option [Requête action].....

    -Tu me conseilles quoi comme implémentation pour que j'évite pleins de switch case?? ....
    Au lieu d'avoir à chaque fois à saisir le nom complet de la table, je pense qu'une zone de liste avec le nom de toutes tes tables serait préférable.
    Tu sélectionne le nom d'une table dans cette ZdL et tu te sers de la sélection pour construire ta requête....
    Avec cette solution, tu n'auras pas besoin de multiplier les conditions (Case....)

  18. #18
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Tu sélectionne le nom d'une table dans cette ZdL et tu te sers de la sélection pour construire ta requête....
    Avec cette solution, tu n'auras pas besoin de multiplier les conditions (Case....)
    Bah justement je reviens quasiment sur ma question de départ, je vois pas comment faire la requête est ok mais pour reprendre la table qui est sélectionné dans ma zone de liste je vois pas!

  19. #19
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    ...mais pour reprendre la table qui est sélectionné dans ma zone de liste je vois pas!
    Ok...(petit exemple simple) toujours sur le même formulaire, à la place de ta zone de texte "txtNomTable" tu crée à l'aide de l'assistant une Zone de liste déroulante (lstListeTable).....en choisissant l'option "je taperai les valeurs souhaitées"..

    comme valeur tu entre les tables que tu désire (BT2020, BT2020i,BT2020m.....)

    ....ensuite il ne reste plus qu'à modifier le code de ton bouton de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub cmdEnregistrer_Click()
        Dim sSQL As String
        Dim NomTable As String
        NomTable = Me.lstListeTable.Value
     
        sSQL = "INSERT INTO " & NomTable & "(Info1,Info2,Info3,Info4)" _
        & "values(Mid(lstlistetable,1,2),Mid(lstlistetable,3,6),txtInfo3,txtInfo4)"
     
        DoCmd.RunSQL sSQL
     
        MsgBox "Enregistrement effectué dans la table " & NomTable
    End Sub
    ....et voila tout simplement.....

  20. #20
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    OK cela fonctionne par contre j'ai une erreur:

    Ça enregistre bien dans ma table que je sélectionne dans ma zone de liste mais le deuxième champ de ma table n'est pas pris en compte ? ( Il est vide dans la table où je veux m'enregistrer)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Zone de texte modifiable avec gdi+
    Par vladvad dans le forum C#
    Réponses: 2
    Dernier message: 07/04/2009, 22h41
  2. [SQL] Zone de texte HTML avec champs de BDD en PHP
    Par sambzh24 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/06/2007, 11h50
  3. Réponses: 1
    Dernier message: 09/05/2007, 11h41
  4. faire un fetch avec le nom d une table comme parametre
    Par cbon1 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 18/09/2006, 17h08
  5. Réponses: 7
    Dernier message: 23/06/2006, 14h52

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