OVH Cloud OVH Cloud

Ajout liste si absent - contrôle dépendant

5 réponses
Avatar
jd
Bonjour,

Ce problème a déjà été posé plusieurs fois, mais je ne trouve pas de réponse
à mon problème.


J'ai un petit programme de compta personnelle.
j'ai un formulaire de saisie des écritures, avec une zone de liste
modifiable 'TIERS". Cette zone a pour source une table "TIERS"

lorsque je saisis un tiers qui n'est pas dans la liste, je voudrais
l'ajouter à la table. et poursuivre la saisie.

j'ai trouvé beaucoup d'exemples qui permettent d'ajouter par DAO ce nouvel
enregistrement à la table TIERS, et j'arrive à le faire.

Le problème c'est que tous les exemples parlent d'une zone de liste
modifiable INDEPENDANTE.

Hors dans mon cas elle est DEPENDANTE, puisque c'est le champ 'TIERS" de ma
table ECRITURES

Donc si je fais la procédure d'ajout avec DAO, voilà ce qui se produit
- saisie d'un nom ne figurant pas dans la liste
- ajout dans la table par DAO (pas de Problème)
- requery de ma zone de liste et là j'ai un message d'erreur qui me dit
"Enregistrer le champ en cours avant d'actualiser"
donc ne pouvant pas actualiser, mon tiers est toujours absent de la liste

je tourne en rond
merci

5 réponses

Avatar
Aline BRESSON
bonjour
essai docmd.runcommand accmdsaverecord

"jd" a écrit dans le message de
news:
Bonjour,

Ce problème a déjà été posé plusieurs fois, mais je ne trouve pas de
réponse

à mon problème.


J'ai un petit programme de compta personnelle.
j'ai un formulaire de saisie des écritures, avec une zone de liste
modifiable 'TIERS". Cette zone a pour source une table "TIERS"

lorsque je saisis un tiers qui n'est pas dans la liste, je voudrais
l'ajouter à la table. et poursuivre la saisie.

j'ai trouvé beaucoup d'exemples qui permettent d'ajouter par DAO ce nouvel
enregistrement à la table TIERS, et j'arrive à le faire.

Le problème c'est que tous les exemples parlent d'une zone de liste
modifiable INDEPENDANTE.

Hors dans mon cas elle est DEPENDANTE, puisque c'est le champ 'TIERS" de
ma

table ECRITURES

Donc si je fais la procédure d'ajout avec DAO, voilà ce qui se produit
- saisie d'un nom ne figurant pas dans la liste
- ajout dans la table par DAO (pas de Problème)
- requery de ma zone de liste et là j'ai un message d'erreur qui me dit
"Enregistrer le champ en cours avant d'actualiser"
donc ne pouvant pas actualiser, mon tiers est toujours absent de la liste

je tourne en rond
merci




Avatar
Raymond [mvp]
Bonjour.

Tu trouveras une base exemple "comptoirs" à télécharger sur :
http://access.seneque.free.fr/bases_exemples.htm qui possède un exemple de
client inconnu en saisie de commandes avec appel du formulaire client et
retour en saisie des commandes.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"jd" a écrit dans le message de
news:
Bonjour,

Ce problème a déjà été posé plusieurs fois, mais je ne trouve pas de
réponse

à mon problème.


J'ai un petit programme de compta personnelle.
j'ai un formulaire de saisie des écritures, avec une zone de liste
modifiable 'TIERS". Cette zone a pour source une table "TIERS"

lorsque je saisis un tiers qui n'est pas dans la liste, je voudrais
l'ajouter à la table. et poursuivre la saisie.

j'ai trouvé beaucoup d'exemples qui permettent d'ajouter par DAO ce nouvel
enregistrement à la table TIERS, et j'arrive à le faire.

Le problème c'est que tous les exemples parlent d'une zone de liste
modifiable INDEPENDANTE.

Hors dans mon cas elle est DEPENDANTE, puisque c'est le champ 'TIERS" de
ma

table ECRITURES

Donc si je fais la procédure d'ajout avec DAO, voilà ce qui se produit
- saisie d'un nom ne figurant pas dans la liste
- ajout dans la table par DAO (pas de Problème)
- requery de ma zone de liste et là j'ai un message d'erreur qui me dit
"Enregistrer le champ en cours avant d'actualiser"
donc ne pouvant pas actualiser, mon tiers est toujours absent de la liste

je tourne en rond
merci




Avatar
jd
Merci Beaucoup,

cela marche parfaitement

comme quoi une petite ligne ...




"Aline BRESSON" a écrit dans le
message de news: uQi#
bonjour
essai docmd.runcommand accmdsaverecord

"jd" a écrit dans le message de
news:
Bonjour,

Ce problème a déjà été posé plusieurs fois, mais je ne trouve pas de
réponse

à mon problème.


J'ai un petit programme de compta personnelle.
j'ai un formulaire de saisie des écritures, avec une zone de liste
modifiable 'TIERS". Cette zone a pour source une table "TIERS"

lorsque je saisis un tiers qui n'est pas dans la liste, je voudrais
l'ajouter à la table. et poursuivre la saisie.

j'ai trouvé beaucoup d'exemples qui permettent d'ajouter par DAO ce
nouvel


enregistrement à la table TIERS, et j'arrive à le faire.

Le problème c'est que tous les exemples parlent d'une zone de liste
modifiable INDEPENDANTE.

Hors dans mon cas elle est DEPENDANTE, puisque c'est le champ 'TIERS" de
ma

table ECRITURES

Donc si je fais la procédure d'ajout avec DAO, voilà ce qui se produit
- saisie d'un nom ne figurant pas dans la liste
- ajout dans la table par DAO (pas de Problème)
- requery de ma zone de liste et là j'ai un message d'erreur qui me dit
"Enregistrer le champ en cours avant d'actualiser"
donc ne pouvant pas actualiser, mon tiers est toujours absent de la
liste



je tourne en rond
merci








Avatar
Pierre-André
Salut,
Dans les propriétés de ta zone de liste, SUR ABSENCE DANS LISTE, tu peux
mettre ce module

Private Sub CODE_GENRE_NotInList(NewData As String, Response As Integer)

Dim rs
Dim msg1, msg2, msg3
msg1 = "L'élément [" & NewData & "] ne figure pas dans la liste."
msg2 = "Voulez-vous l'ajouter?"

'-- Ouvre une msgbox pour dire que la saisie n'est pas dans la liste
If MsgBox(msg1 & msg2, vbQuestion + vbYesNo, NomLudo) = vbYes Then
'-- Ajoute l'élément
Set rs = CurrentDb.OpenRecordset("Tbl Genres")
'-- Ajoute un enregistrement dans la Tbl
rs.AddNew
'-- Copie les données dans la Tbl
rs![APPELLATION] = NewData
rs![Type] = Me.No_REFERENCE
'-- MàJ des champs
rs.Update
'-- Ferme la Tbl
rs.Close
Set rs = Nothing
End If
'-- Annule le message
Response = acDataErrAdded
End Sub


"jd" a écrit dans le message de
news:
Bonjour,

Ce problème a déjà été posé plusieurs fois, mais je ne trouve pas de
réponse

à mon problème.


J'ai un petit programme de compta personnelle.
j'ai un formulaire de saisie des écritures, avec une zone de liste
modifiable 'TIERS". Cette zone a pour source une table "TIERS"

lorsque je saisis un tiers qui n'est pas dans la liste, je voudrais
l'ajouter à la table. et poursuivre la saisie.

j'ai trouvé beaucoup d'exemples qui permettent d'ajouter par DAO ce nouvel
enregistrement à la table TIERS, et j'arrive à le faire.

Le problème c'est que tous les exemples parlent d'une zone de liste
modifiable INDEPENDANTE.

Hors dans mon cas elle est DEPENDANTE, puisque c'est le champ 'TIERS" de
ma

table ECRITURES

Donc si je fais la procédure d'ajout avec DAO, voilà ce qui se produit
- saisie d'un nom ne figurant pas dans la liste
- ajout dans la table par DAO (pas de Problème)
- requery de ma zone de liste et là j'ai un message d'erreur qui me dit
"Enregistrer le champ en cours avant d'actualiser"
donc ne pouvant pas actualiser, mon tiers est toujours absent de la liste

je tourne en rond
merci




Avatar
Aline BRESSON
salut
tu peux faire comme ca aussi
tu declares un module "PasDansListe"
puis
Public Function AjoutListe(Msg As String, NomTable As String, Nomchamp As
String, NewVal)
Dim MaTable As Recordset, MaBase As Database, Texte As String, TypeBoite As
Integer, rep As Integer

Texte = "Voulez-vous l'ajouter ?"
TypeBoite = vbYesNo + vbQuestion + vbDefaultButton1
Beep
rep = MsgBox(Msg & Chr(10) & Texte, TypeBoite, "Attention !")

If rep = vbYes Then
Set MaBase = CurrentDb()
Set MaTable = MaBase.OpenRecordset(NomTable)
MaTable.AddNew
MaTable(Nomchamp) = NewVal
MaTable.Update
AjoutListe = acDataErrAdded
Else
AjoutListe = acDataErrDisplay
End If
On Error Resume Next
MaTable.Close
Set MaTable = Nothing
MaBase.Close
Set MaBase = Nothing
On Error GoTo 0

End Function

et comme ca de n'importe ou ( sur une liste deroulante)
surabsencedans liste
tu appelles ta fonction
ajoutliste("TonMessage","Nomtable","Nomchamp",newdata)


"Pierre-André" a écrit dans le message de
news:
Salut,
Dans les propriétés de ta zone de liste, SUR ABSENCE DANS LISTE, tu peux
mettre ce module

Private Sub CODE_GENRE_NotInList(NewData As String, Response As Integer)

Dim rs
Dim msg1, msg2, msg3
msg1 = "L'élément [" & NewData & "] ne figure pas dans la liste."
msg2 = "Voulez-vous l'ajouter?"

'-- Ouvre une msgbox pour dire que la saisie n'est pas dans la liste
If MsgBox(msg1 & msg2, vbQuestion + vbYesNo, NomLudo) = vbYes Then
'-- Ajoute l'élément
Set rs = CurrentDb.OpenRecordset("Tbl Genres")
'-- Ajoute un enregistrement dans la Tbl
rs.AddNew
'-- Copie les données dans la Tbl
rs![APPELLATION] = NewData
rs![Type] = Me.No_REFERENCE
'-- MàJ des champs
rs.Update
'-- Ferme la Tbl
rs.Close
Set rs = Nothing
End If
'-- Annule le message
Response = acDataErrAdded
End Sub


"jd" a écrit dans le message de
news:
Bonjour,

Ce problème a déjà été posé plusieurs fois, mais je ne trouve pas de
réponse

à mon problème.


J'ai un petit programme de compta personnelle.
j'ai un formulaire de saisie des écritures, avec une zone de liste
modifiable 'TIERS". Cette zone a pour source une table "TIERS"

lorsque je saisis un tiers qui n'est pas dans la liste, je voudrais
l'ajouter à la table. et poursuivre la saisie.

j'ai trouvé beaucoup d'exemples qui permettent d'ajouter par DAO ce
nouvel


enregistrement à la table TIERS, et j'arrive à le faire.

Le problème c'est que tous les exemples parlent d'une zone de liste
modifiable INDEPENDANTE.

Hors dans mon cas elle est DEPENDANTE, puisque c'est le champ 'TIERS" de
ma

table ECRITURES

Donc si je fais la procédure d'ajout avec DAO, voilà ce qui se produit
- saisie d'un nom ne figurant pas dans la liste
- ajout dans la table par DAO (pas de Problème)
- requery de ma zone de liste et là j'ai un message d'erreur qui me dit
"Enregistrer le champ en cours avant d'actualiser"
donc ne pouvant pas actualiser, mon tiers est toujours absent de la
liste



je tourne en rond
merci