Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

histoire d'ajout dans liste

7 réponses
Avatar
Docteur Jekyll
Bonsoir.

Hélas pas tout marche.

Si je réponds non en ajout il m'ouvre la table de ma liste.

Private Sub Designation_NotInList(NewData As String, Response As Integer)
Dim rst As DAO.Recordset
If MsgBox("La désignation[" & NewData & "] ne figure pas dans la liste.
Vouslez-vous l'ajouter ?", _
vbQuestion + vbYesNo) = vbYes Then
'Ajouter l'élément à la liste
Set rst = CurrentDb.OpenRecordset("tab_produits")
rst.AddNew
rst!produit = NewData
rst.Update
rst.Close
Set rst = Nothing
End If
Response = acDataErrAdded

Merci de vos conseils car si je coche oui pas de problème

Bonne soirée

7 réponses

Avatar
Docteur Jekyll
Je me suis mal exprimé, je vais essayer d'être précis.

Des lignes de facture qui font partie d'une table.
Lorsque j'entre une désignation, qui est une liste, je vousdrais avoir deux
possibilités.
La première quand il ne trouve pas c'est qu'il me demande si je veux ajouter
dans la table spéciale qui alimente ce champ, en réponse oui, pas de
problème.
Si je clique sur le non, il m'ouvre la liste et m'oblige à remplacer cette
donnée alors que je voudrais qu'il conserve cette dernière car certainement
elle ne sera pas réutilisée.

Private Sub Designation_NotInList(NewData As String, Response As Integer)
Dim rst As DAO.Recordset
If MsgBox("La désignation[" & NewData & "] ne figure pas dans la liste.
Vouslez-vous l'ajouter ?", _
vbQuestion + vbYesNo) = vbYes Then
'Ajouter l'élément à la liste
Set rst = CurrentDb.OpenRecordset("tab_produits")
rst.AddNew
rst!produit = NewData
rst.Update
rst.Close
Set rst = Nothing
End If
Response = acDataErrAdded


J'attends avec impatience une réponse.

"Docteur Jekyll" a écrit dans le message de news:
47d418c1$0$4613$
Bonsoir.

Hélas pas tout marche.

Si je réponds non en ajout il m'ouvre la table de ma liste.

Private Sub Designation_NotInList(NewData As String, Response As Integer)
Dim rst As DAO.Recordset
If MsgBox("La désignation[" & NewData & "] ne figure pas dans la liste.
Vouslez-vous l'ajouter ?", _
vbQuestion + vbYesNo) = vbYes Then
'Ajouter l'élément à la liste
Set rst = CurrentDb.OpenRecordset("tab_produits")
rst.AddNew
rst!produit = NewData
rst.Update
rst.Close
Set rst = Nothing
End If
Response = acDataErrAdded

Merci de vos conseils car si je coche oui pas de problème

Bonne soirée



Avatar
3stone
Salut,

"Docteur Jekyll"
| Des lignes de facture qui font partie d'une table.
| Lorsque j'entre une désignation, qui est une liste, je vousdrais avoir deux
| possibilités.
| La première quand il ne trouve pas c'est qu'il me demande si je veux ajouter
| dans la table spéciale qui alimente ce champ, en réponse oui, pas de
| problème.
| Si je clique sur le non, il m'ouvre la liste et m'oblige à remplacer cette
| donnée alors que je voudrais qu'il conserve cette dernière car certainement
| elle ne sera pas réutilisée.
|
| Private Sub Designation_NotInList(NewData As String, Response As Integer)
| > Dim rst As DAO.Recordset
| > If MsgBox("La désignation[" & NewData & "] ne figure pas dans la liste.
| > Vouslez-vous l'ajouter ?", _
| > vbQuestion + vbYesNo) = vbYes Then
| > 'Ajouter l'élément à la liste
| > Set rst = CurrentDb.OpenRecordset("tab_produits")
| > rst.AddNew
| > rst!produit = NewData
| > rst.Update
| > rst.Close
| > Set rst = Nothing
| > End If
| > Response = acDataErrAdded
|
| J'attends avec impatience une réponse.


Regarde là :
http://www.3stone.be/access/articles.php?lng=fr&pgI

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Docteur Jekyll
tout d'abord merci. J'ai bien fait comme tu dis mais toujours sur réponse
non refus de m'inscrire la valeur et il m'ouvre la liste.

Private Sub Designation_NotInList(NewData As String, Response As Integer)
If MsgBox("Voulez-vous ajouter cette désignation " & NewData & " ?", vbYesNo
+ vbQuestion) = vbYes Then

CurrentDb.Execute "insert into tab_Produits(produit)" & "select """ &
NewData & """;"
Response = acDataErrAdded
Else
Response = acDataErrContinue
Me!Designation.Undo
End If

Je pense avoir bien tout copier.

Juste petit rappel: Designation est le nom de ma comboliste

Merci


"3stone" a écrit dans le message de news:

Salut,

"Docteur Jekyll"
| Des lignes de facture qui font partie d'une table.
| Lorsque j'entre une désignation, qui est une liste, je vousdrais avoir
deux
| possibilités.
| La première quand il ne trouve pas c'est qu'il me demande si je veux
ajouter
| dans la table spéciale qui alimente ce champ, en réponse oui, pas de
| problème.
| Si je clique sur le non, il m'ouvre la liste et m'oblige à remplacer
cette
| donnée alors que je voudrais qu'il conserve cette dernière car
certainement
| elle ne sera pas réutilisée.
|
| Private Sub Designation_NotInList(NewData As String, Response As
Integer)
| > Dim rst As DAO.Recordset
| > If MsgBox("La désignation[" & NewData & "] ne figure pas dans la
liste.
| > Vouslez-vous l'ajouter ?", _
| > vbQuestion + vbYesNo) = vbYes Then
| > 'Ajouter l'élément à la liste
| > Set rst = CurrentDb.OpenRecordset("tab_produits")
| > rst.AddNew
| > rst!produit = NewData
| > rst.Update
| > rst.Close
| > Set rst = Nothing
| > End If
| > Response = acDataErrAdded
|
| J'attends avec impatience une réponse.


Regarde là :
http://www.3stone.be/access/articles.php?lng=fr&pgI

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Avatar
3stone
Salut,

"Docteur Jekyll"
| J'ai bien fait comme tu dis mais


Mais mais... je doute ;-)


| toujours sur réponse
| non refus de m'inscrire la valeur et il m'ouvre la liste.
|
| Private Sub Designation_NotInList(NewData As String, Response As Integer)
| If MsgBox("Voulez-vous ajouter cette désignation " & NewData & " ?", vbYesNo
| + vbQuestion) = vbYes Then
|
| CurrentDb.Execute "insert into tab_Produits(produit)" & "select """ & NewData & """;"


La concaténation entre

...(produit)" et "select "

ne peut fonctionner tel quel !!
Il faut un espace entre la parentèse fermante et le "S" de select...

Toi, tu peux l'écrire sur une seule ligne :
CurrentDb.Execute "insert into tab_Produits(produit) select """ & NewData & """;"



| Response = acDataErrAdded
| Else
| Response = acDataErrContinue
| Me!Designation.Undo
| End If

As-tu bien mis la propriété "Limité à liste" sur OUI ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Docteur Jekyll
Comment peux-tu douter :-)

Je vais essayer. Comme c'était urgence, j'ai fait appel à une procédure qui
te fera honte mais qui marche. Qu'en penses-tu?
Je saisis et entre sur le champ qui suit.

If IsNull(DLookup("produit", "Tab_produits", "produit='" & [Designation] &
"'")) Then
Reponse = MsgBox("Voulez vous ajouter cette référence", vbYesNo)
If (Reponse = vbYes) Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenQuery "Req_AjoutProduit"
DoCmd.SetWarnings True
Else
Cancel = True
End If
Dans l'attente de te lire

Amitiés


"3stone" a écrit dans le message de news:

Salut,

"Docteur Jekyll"
| J'ai bien fait comme tu dis mais


Mais mais... je doute ;-)


| toujours sur réponse
| non refus de m'inscrire la valeur et il m'ouvre la liste.
|
| Private Sub Designation_NotInList(NewData As String, Response As
Integer)
| If MsgBox("Voulez-vous ajouter cette désignation " & NewData & " ?",
vbYesNo
| + vbQuestion) = vbYes Then
|
| CurrentDb.Execute "insert into tab_Produits(produit)" & "select """ &
NewData & """;"


La concaténation entre

...(produit)" et "select "

ne peut fonctionner tel quel !!
Il faut un espace entre la parentèse fermante et le "S" de select...

Toi, tu peux l'écrire sur une seule ligne :
CurrentDb.Execute "insert into tab_Produits(produit) select """ & NewData
& """;"



| Response = acDataErrAdded
| Else
| Response = acDataErrContinue
| Me!Designation.Undo
| End If

As-tu bien mis la propriété "Limité à liste" sur OUI ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
3stone
Salut,

"Docteur Jekyll"
| Je vais essayer. Comme c'était urgence, j'ai fait appel à une procédure qui
| te fera honte mais qui marche. Qu'en penses-tu?
| Je saisis et entre sur le champ qui suit.
|
| If IsNull(DLookup("produit", "Tab_produits", "produit='" & [Designation] &
| "'")) Then
| Reponse = MsgBox("Voulez vous ajouter cette référence", vbYesNo)
| If (Reponse = vbYes) Then
| DoCmd.SetWarnings False
| DoCmd.RunCommand acCmdSaveRecord
| DoCmd.OpenQuery "Req_AjoutProduit"
| DoCmd.SetWarnings True
| Else
| Cancel = True
| End If
| Dans l'attente de te lire


En fait, les données sont déjà dans la liste... et il est raisonnable
de vérifier parmis les données "en place" ;-)

Le Dlookup() pioche dans la table (qui peut être distante)
Et tu peux aussi améliorer la série de DoCmd...

With DoCmd
.SetWarnings False
.RunCommand acCmdSaveRacord
.OpenQuery "req_ajoutproduit"
.SetWarnings True
End With

Mais, je préfèrerai que fonctionne la procédure prévue ;-))

Si tu veux, tu peux m'envoyer ( http://cjoint.com/?dmcifqiI7w ) un extrait
de ta base avec lequel on peut reproduire le disfonctionnement...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Docteur Jekyll
Merci Pierre mais comme ça marche comme çà je ne veux pas te déranger.

J'apprécie encore une fois ta gentillesse.

Je te souhaite une bonne journée

jean claude
"3stone" a écrit dans le message de news:

Salut,

"Docteur Jekyll"
| Je vais essayer. Comme c'était urgence, j'ai fait appel à une procédure
qui
| te fera honte mais qui marche. Qu'en penses-tu?
| Je saisis et entre sur le champ qui suit.
|
| If IsNull(DLookup("produit", "Tab_produits", "produit='" & [Designation]
&
| "'")) Then
| Reponse = MsgBox("Voulez vous ajouter cette référence", vbYesNo)
| If (Reponse = vbYes) Then
| DoCmd.SetWarnings False
| DoCmd.RunCommand acCmdSaveRecord
| DoCmd.OpenQuery "Req_AjoutProduit"
| DoCmd.SetWarnings True
| Else
| Cancel = True
| End If
| Dans l'attente de te lire


En fait, les données sont déjà dans la liste... et il est raisonnable
de vérifier parmis les données "en place" ;-)

Le Dlookup() pioche dans la table (qui peut être distante)
Et tu peux aussi améliorer la série de DoCmd...

With DoCmd
.SetWarnings False
.RunCommand acCmdSaveRacord
.OpenQuery "req_ajoutproduit"
.SetWarnings True
End With

Mais, je préfèrerai que fonctionne la procédure prévue ;-))

Si tu veux, tu peux m'envoyer ( http://cjoint.com/?dmcifqiI7w ) un extrait
de ta base avec lequel on peut reproduire le disfonctionnement...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)