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

Modélisation Discussion :

[debutant] créer une ligne dans une autre table depuis un formulaire


Sujet :

Modélisation

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut [debutant] créer une ligne dans une autre table depuis un formulaire
    Bonjour,

    je tourne en rond, j'ai juste besoin d'un bout de code
    j'ai deux formulaires en mode feuille de donnée : interaction et action, basés chacun sur une table.
    dans ma table interaction, j'ai un champ ID_interaction
    dans ma table action, j'ai un champ interaction (pour contenir l'ID interaction), pour lier les deux.

    je voudrais un bout de code pour que dans le formulaire interaction, je coche sur une case et ça m'ouvre, ou l'action correspondante, ou alors si y'en a pas, que ça me crée un ligne en insérant l'ID_Interaction de ma ligne dans le champ interaction de ma table action...

    je sais pas si c'est très clair, mais je suis sure que ça doit pas etre bien compliqué....
    mais moi et le code....

    merci d'avance !!!!!!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 24
    Points
    24
    Par défaut
    Bonjour,
    Si j'ai bien compris, sur l'action d'un bouton tu dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "NomFormulaireAction",,,"[IdInteraction] = " & Me.IdInteraction
    Normalement ca devrait marcher

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    ben ça oui, ça m'ouvre le formulaire si une fiche existe déjà,
    mais s'il n'y en a pas, ça ne m'en créée pas une, et j'ai un message d'erreur parce qu'il ne trouve pas le lien (pour en créer une, il faut rentrer l'ID_interaction du formualire interaction dans la table action, pour que ça soit lié à mon formulaire action....)

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    snif personne peut m'aider ?

    il me faudrait un truc genre

    on click ,

    si dans table action, il existe une ligne avec le champ Interaction correspondant, alors ouvrir ( bon jusque là ça va)
    mais
    si dans table action, il n'y a pas de ligne avec le champ interaction correspondant, alors, ajouter id_interaction du formualire en cours dans le champs interaction de la table action, et ensuite ouvrir le formulaire sur cette fiche....

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    j'arrive à ouvrir une fiche existante, mais si elle n'existe pas, j'ai un message d'erreur...

  6. #6
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Bonjour,

    à ma connaissance, il faut passer par le Vba et un Recordset.
    Est-ce que tu as des notions dans ce domaine?
    Pour info, tu peux regarder ceci : http://warin.developpez.com/access/dao/
    Regarde particulierement la méthode 'AddNew'

    SE

  7. #7
    Membre actif Avatar de lucienkany
    Profil pro
    Développeur
    Inscrit en
    Janvier 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2004
    Messages : 257
    Points : 220
    Points
    220
    Par défaut
    Bonjour à tous,

    J'aimerai poser une question(bête peut être):

    Est-il possible de vérifier l'existance d'un enregistrement dans une table avant de l'ouvrir ou sans l'ouvrir?

  8. #8
    Membre actif Avatar de lucienkany
    Profil pro
    Développeur
    Inscrit en
    Janvier 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2004
    Messages : 257
    Points : 220
    Points
    220
    Par défaut
    Je retire ma question

    Tu peux essayer

    Pour chequer la présence de l'ID dans la table.

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    le probeme c'est que moi et le vba ça fait 3...

    ça dit ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With oRecordset
     .AddNew
     .Fields("Nom")="Toto"
     .Update
    End With
    donc moi sur le clic,

    je met un code qui cherche la fiche, si elle exsite ça l'ouvre, si elle exsite pas,
    je fais un adnew ?

    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Fields ("interaction")="me.ID_interaction"
    ??
    et comment je lui fais savoir si l'entrée exsite ou pas ? ça marche comment DLookup ?

    (blonde, moi ?)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 24
    Points
    24
    Par défaut
    bonjour,
    peut être que tu peux ouvrir ton formulaire avec DoCmd.OpenForm
    Ensuite, sur la propriété Ouverture du formulaire que tu viens d'ouvrir tu peux essayer ça
    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
    Dim SQL As String
     
    SQL = "SELECT[TableAction].[IdInteraction]  "
    SQL = SQL & "FROM TableAction "
    SQL = SQL & " WHERE [TableAction ].[IdInteraction] = " & [Form_FormulaireInteraction]![IdInteraction].Value
     
    Me![ListBox].RowSourceType = "Table/Query"
    Me![ListBox].RowSource = SQL
    SQL = ""
     
    If Me![ListBox].ListCount = 0 Then
        'Si pas d'enregistrement, nouvel enregistrement
        DoCmd.GoToRecord acDataForm, "FormulaireInteraction", acNewRec
    Else
        'Sinon aller a l'enregistrement
        Me![ListBox] = Me![ListBox].ItemData(0)
        Dim rs As Object
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[IdInteraction] = " & Str(Nz(Me![ListBox], 0))
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End If
    Pour ça tu créé une ListBox dans le formulaire que tu rend invisible et ça devrait marcher

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Me![ListBox].ListCount = 0
        'Si pas d'enregistrement, nouvel enregistrement
    est-ce que ça veut dire, s'il n'y a pas d'neregistrement associé, ou bien s'il n'y a pas d'enregistrement sur la table ?
    parce que dans la table action, y'en a plein

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    je comprend pas trop.. une listebox ? avec quoi dedans ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 24
    Points
    24
    Par défaut
    En fait après ce code, ListBox va contenir les enregistrements correspondants à l'Identifiant du premier formulaire.
    Donc logiquement, soit la listBox contient 1 enregistrement (s'il y en a un lié), soit elle ne contient pas d'enregistrement dans quel cas on va à un nouvel enregistrement.
    le code :
    renvoit le nombre d'enregistrement qu'elle contient

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 24
    Points
    24
    Par défaut
    Dans le formulaire, tu ouvre la boite à outils et il y a "Zone de Liste"
    T'en mets une sur le formulaire et tu la rend invisible
    Bien sur dans le Code il faudra Mettre
    Me![Nom de la zone de liste]

  15. #15
    Membre actif Avatar de lucienkany
    Profil pro
    Développeur
    Inscrit en
    Janvier 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2004
    Messages : 257
    Points : 220
    Points
    220
    Par défaut
    Je penses que tu peux t'en sortir si tu sais faire une requête action qui ajoute à ta table un enregistrement avec les donnés formulaire ouvert.

    Si ta requête (que je nomme 'ajouterID') fonctionne du peut alors faire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Private Sub Coche_Click()
     
     
        If Not IsNull(DLookup("ID", "TaSecondeTable", "ID=" & Me.TonChampsIDsurLeFormulaireOuvert)) Then 'Verifie si l'enreg exist
    Docmd.openForm "TonSousForm" 'si oui ouvre le sous-for,
        Else 
        DoCmd.OpenQuery "ajouterID" 'sinon exécute la requête pour l'ajouter
     
        End If
     
    End Sub

  16. #16
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    dites, comment je créé une requete qui ajoute un enregistrement avec les données d'un formulaire ouvert ?
    je sais faire que ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Actions ( Interaction )
    SELECT Interactions.ID_Interaction
    FROM Interactions INNER JOIN Actions ON Interactions.ID_Interaction = Actions.Interaction;
    mais ça ajoute tout

  17. #17
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    pliz help a poor desperate girl ...

  18. #18
    Membre actif Avatar de lucienkany
    Profil pro
    Développeur
    Inscrit en
    Janvier 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2004
    Messages : 257
    Points : 220
    Points
    220
    Par défaut
    Comme tu sais faire une requête qui ajoute les données, essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Not IsNull(DLookup("ID_Interaction ", "Interaction ", "ID_Interaction =" & Me.TonChampsIDsurLeFormulaireOuvert)) Then 'Verifie si l'enreg exist
    Docmd.openForm "TonSousForm" 'si oui ouvre le sous-for
    Else 'Sinon ajoute un nouvel enregistrement  
    INSERT INTO Actions ( Interaction ) SELECT Interactions.ID_Interaction FROM Interactions INNER JOIN Actions ON Interactions.ID_Interaction = Actions.Interaction; 
     
    end if

  19. #19
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 56
    Points
    56
    Par défaut
    ça me met cette ligne là en jaune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(DLookup("ID_Interaction ", "Interaction ", "ID_Interaction =" & Me.ID_Interaction)) Then 'Verifie si l'enreg exist
    je crois qu'il ne sait pas dans quelle table il faut regarder si y'a la ligne ou pas.. c'est dans la table Actions...
    je lui dis comment ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer une information d'une ligne dans une table
    Par Lebas dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/04/2013, 10h24
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [E-00] Syntaxe pour insérer une ligne ou une colonne dans une feuille
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2009, 09h27
  4. Réponses: 3
    Dernier message: 29/01/2008, 12h08
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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