Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/04/2007, 17h05   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
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 !!!!!!
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2007, 17h19   #2
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 33
Points : 10
Points : 10
Bonjour,
Si j'ai bien compris, sur l'action d'un bouton tu dois faire
Code :
DoCmd.OpenForm "NomFormulaireAction",,,"[IdInteraction] = " & Me.IdInteraction
Normalement ca devrait marcher
leskev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 09h34   #3
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
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....)
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 10h10   #4
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
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....
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 12h31   #5
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
j'arrive à ouvrir une fiche existante, mais si elle n'existe pas, j'ai un message d'erreur...
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 12h48   #6
Membre émérite
 
Avatar de stéphane_ais2
 
Inscription : septembre 2004
Messages : 792
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : septembre 2004
Messages : 792
Points : 816
Points : 816
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
__________________
Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov
stéphane_ais2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 13h02   #7
Membre habitué
 
Avatar de lucienkany
 
Lucien KANYEMBO
Inscription : janvier 2004
Messages : 191
Détails du profil
Informations personnelles :
Nom : Lucien KANYEMBO

Informations forums :
Inscription : janvier 2004
Messages : 191
Points : 130
Points : 130
Envoyer un message via MSN à lucienkany
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?
lucienkany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 13h11   #8
Membre habitué
 
Avatar de lucienkany
 
Lucien KANYEMBO
Inscription : janvier 2004
Messages : 191
Détails du profil
Informations personnelles :
Nom : Lucien KANYEMBO

Informations forums :
Inscription : janvier 2004
Messages : 191
Points : 130
Points : 130
Envoyer un message via MSN à lucienkany
Je retire ma question

Tu peux essayer

Pour chequer la présence de l'ID dans la table.
lucienkany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 14h11   #9
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
le probeme c'est que moi et le vba ça fait 3...

ça dit ça
Code :
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 :
.Fields ("interaction")="me.ID_interaction"
??
et comment je lui fais savoir si l'entrée exsite ou pas ? ça marche comment DLookup ?

(blonde, moi ?)
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 14h40   #10
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 33
Points : 10
Points : 10
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 :
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
leskev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 14h52   #11
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
Code :
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
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 14h58   #12
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
je comprend pas trop.. une listebox ? avec quoi dedans ?
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 15h00   #13
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 33
Points : 10
Points : 10
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
leskev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 15h04   #14
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 33
Points : 10
Points : 10
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]
leskev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 15h32   #15
Membre habitué
 
Avatar de lucienkany
 
Lucien KANYEMBO
Inscription : janvier 2004
Messages : 191
Détails du profil
Informations personnelles :
Nom : Lucien KANYEMBO

Informations forums :
Inscription : janvier 2004
Messages : 191
Points : 130
Points : 130
Envoyer un message via MSN à lucienkany
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 :
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
lucienkany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 12h55   #16
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
dites, comment je créé une requete qui ajoute un enregistrement avec les données d'un formulaire ouvert ?
je sais faire que ça
Code :
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
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 09h41   #17
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
pliz help a poor desperate girl ...
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 12h44   #18
Membre habitué
 
Avatar de lucienkany
 
Lucien KANYEMBO
Inscription : janvier 2004
Messages : 191
Détails du profil
Informations personnelles :
Nom : Lucien KANYEMBO

Informations forums :
Inscription : janvier 2004
Messages : 191
Points : 130
Points : 130
Envoyer un message via MSN à lucienkany
Comme tu sais faire une requête qui ajoute les données, essaies ceci
Code :
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
lucienkany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 15h18   #19
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 25
Points : 25
ça me met cette ligne là en jaune
Code :
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 ?
zeloutre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h25.


 
 
 
 
Partenaires

Hébergement Web