modifier rowsource d'une table

Le
kimai
Bonjour,

J'aimerais savoir comment modifier le rowsource d'une
table (en mode cration pour un champ texte : zone de
liste modifiable, Origine source :"liste de valeurs" et
contenu "valeur1";"valeur2"; etc?) depuis un formulaire,
donc en VB

J'arrive trs bien utiliser la proprit Rowsource pour
modifier le contenu de la liste de mon formulaire avec une
procdure vennementielle sur "Absence dans liste", mais
lorsque je ferme le formulaire, ce que j'avais ajout ma
liste a disparu. Voila le code que j'utilise :

-
Private Sub carac_particuliere_NotInList(NewData As
String, Response As Integer)

'Supprimer les messages d'informations d'ACCESS
DoCmd.SetWarnings False

Dim rep As Integer
rep = MsgBox("Cet lment n'existe pas dans la liste
droulante. Voulez-vous l'ajouter ?", vbExclamation +
vbYesNo, "Elment pas dans la liste")
If rep = 6 Then
Response = acDataErrAdded
carac_particuliere.RowSource =
carac_particuliere.RowSource & ";" & NewData

Else
Response = acDataErrContinue
Me.carac_particuliere.Undo
End If

DoCmd.SetWarnings True
End Sub
-

C'est pourquoi j'aimerais modifier la proprit Rowsource
de ma table, et non pas de ma liste du formulaire pour que
cela soit dfinitif !
Si quelqu'un sait comment faire

Merci d'avance
Kimai

  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
André AVONS
Le #4216411
Salut
Au lieu de mettre une liste de valeur , mets une table
sur absence tu ajoutes l'element a la table

--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:054c01c35ff3$04b8afd0$
Bonjour,

J'aimerais savoir comment modifier le rowsource d'une
table (en mode création pour un champ texte : zone de
liste modifiable, Origine source :"liste de valeurs" et
contenu "valeur1";"valeur2"; etc?) depuis un formulaire,
donc en VB

J'arrive très bien à utiliser la propriété Rowsource pour
modifier le contenu de la liste de mon formulaire avec une
procédure évennementielle sur "Absence dans liste", mais
lorsque je ferme le formulaire, ce que j'avais ajouté à ma
liste a disparu. Voila le code que j'utilise :

-------------------
Private Sub carac_particuliere_NotInList(NewData As
String, Response As Integer)

'Supprimer les messages d'informations d'ACCESS
DoCmd.SetWarnings False

Dim rep As Integer
rep = MsgBox("Cet élément n'existe pas dans la liste
déroulante. Voulez-vous l'ajouter ?", vbExclamation +
vbYesNo, "Elément pas dans la liste")
If rep = 6 Then
Response = acDataErrAdded
carac_particuliere.RowSource carac_particuliere.RowSource & ";" & NewData

Else
Response = acDataErrContinue
Me.carac_particuliere.Undo
End If

DoCmd.SetWarnings True
End Sub
-------------------

C'est pourquoi j'aimerais modifier la propriété Rowsource
de ma table, et non pas de ma liste du formulaire pour que
cela soit définitif !
Si quelqu'un sait comment faire...

Merci d'avance
Kimai
André AVONS
Le #4216401
Salut
du style
Private Sub ListeModifiable_NotInList(NewData As String, Response As
Integer)
On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As Integer

'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, , A_MENU_VER20

'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " & NewData, vbYesNo +
vbQuestion, "Ajout article")
If Reponse = vbYes Then
Set mdb = CurrentDb
'Ajoute la nouvelle valeur DANS LA TABLE
strSQL = "INSERT INTO Table1 (Champ1)" _
& " VALUES('" & NewData & "')"

'DoCmd.RunSQL strsql, 0
mdb.Execute strSQL


Response = acDataErrAdded
End If
'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery

Set mdb = Nothing
Exit Sub

'Gere l'erreur si on repond non a l'ajout de l'enregistrement
erreur:
Response = acDataErrContinue

End Sub

--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:054c01c35ff3$04b8afd0$
Bonjour,

J'aimerais savoir comment modifier le rowsource d'une
table (en mode création pour un champ texte : zone de
liste modifiable, Origine source :"liste de valeurs" et
contenu "valeur1";"valeur2"; etc?) depuis un formulaire,
donc en VB

J'arrive très bien à utiliser la propriété Rowsource pour
modifier le contenu de la liste de mon formulaire avec une
procédure évennementielle sur "Absence dans liste", mais
lorsque je ferme le formulaire, ce que j'avais ajouté à ma
liste a disparu. Voila le code que j'utilise :

-------------------
Private Sub carac_particuliere_NotInList(NewData As
String, Response As Integer)

'Supprimer les messages d'informations d'ACCESS
DoCmd.SetWarnings False

Dim rep As Integer
rep = MsgBox("Cet élément n'existe pas dans la liste
déroulante. Voulez-vous l'ajouter ?", vbExclamation +
vbYesNo, "Elément pas dans la liste")
If rep = 6 Then
Response = acDataErrAdded
carac_particuliere.RowSource carac_particuliere.RowSource & ";" & NewData

Else
Response = acDataErrContinue
Me.carac_particuliere.Undo
End If

DoCmd.SetWarnings True
End Sub
-------------------

C'est pourquoi j'aimerais modifier la propriété Rowsource
de ma table, et non pas de ma liste du formulaire pour que
cela soit définitif !
Si quelqu'un sait comment faire...

Merci d'avance
Kimai
kimai
Le #4216281
Merci beaucoup, tu es la première personne à me proposer
une solution à mon problème !!
Je vais essayer de mettre en ouevre ce code, et je
t'envoie un message pour le résultat
Merci encore
Kimai


-----Message d'origine-----
Salut
Copies dans nouveau module
Function AjoutListeValeurChamp(table As String, Champ As
String , Liste as

string _
, Optional NomBase As String)
'Exemple de valeur liste : Liste = "'A';'B';'C';'D'"

'Nombase chemin complet de la base
On Error GoTo AjoutListeValeurChamp_Error

Dim bds As Database, CheminBase As String
Dim tdf As TableDef, fld As Field, chp As Field
Dim wrkJet As Workspace

If IsNull(NomBase) Or IsEmpty(NomBase) Or NomBase
= "" Then

CheminBase = CurrentDb.Name
Else
CheminBase = BaseEnCour() & NomBase
End If

Set wrkJet = CreateWorkspace("", "admin", "",
dbUseJet)

Set bds = wrkJet.OpenDatabase(CheminBase)

' Crée un nouvel objet TableDef.
Set tdf = bds.TableDefs(table)

Set chp = tdf.Fields(Champ)

Call DéfinirPropriété(chp, "RowSource", dbText, Liste)
Call DéfinirPropriété(chp, "LimitToList", dbBoolean,
True)


Fin:

bds.Close
wrkJet.Close
Set fld = Nothing
Set bds = Nothing
Set chp = Nothing
Set tdf = Nothing
Set wrkJet = Nothing

Exit Function

AjoutListeValeurChamp_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description
& ") in procedure

AjoutListeValeurChamp of Module Ajout Champ dans Table"
Resume Fin

End Function
Function DéfinirPropriété(obj As Object, _
chNom As String, entType As Integer, _
varSetting As Variant) As Boolean
On Error GoTo ErrorDéfinirPropriétéAccess

Dim prp As Property
Const conPropNotFound As Integer = 3270 'Prop non définie.

' Se réfère explicitement à la collection properties.
obj.Properties(chNom) = varSetting
obj.Properties.Refresh
DéfinirPropriété = True

SortieDéfinirPropriétéAccess:
Exit Function

ErrorDéfinirPropriétéAccess:
If Err = conPropNotFound Then
' Crée une propriété, précise le type et définit
une valeur

initiale.
Set prp = obj.CreateProperty(chNom, entType,
varSetting)

' Ajoute l'objet Property à la collection
Properties.

obj.Properties.Append prp
obj.Properties.Refresh
DéfinirPropriété = True
Resume SortieDéfinirPropriétéAccess
Else
MsgBox Err & ": " & Err.Number & vbCrLf &
Err.Description

DéfinirPropriété = False
Resume SortieDéfinirPropriétéAccess
End If
End Function


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"Kimai" news:036101c35ff9$2c875d30$
Merci pour ta réponse:

Je suis d'accord avec toi, cela simplifie lse choses. J'ai
fais cette manip lorsue je pense intéressant de créer une
table pour y entrer une liste.
Mais je voulais éviter de créer un table à chaque fois que
je voulais faire une liste déroulante.

On ne peut donc pas accéder à ce fichu rowsource de la
table ??

Merci de ta réponse !
A bientot peut-etre
Kimai
-----Message d'origine-----
Salut
Au lieu de mettre une liste de valeur , mets une table
sur absence tu ajoutes l'element a la table

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:054c01c35ff3$04b8afd0$
Bonjour,

J'aimerais savoir comment modifier le rowsource d'une
table (en mode création pour un champ texte : zone de
liste modifiable, Origine source :"liste de valeurs" et
contenu "valeur1";"valeur2"; etc?) depuis un formulaire,
donc en VB

J'arrive très bien à utiliser la propriété Rowsource pour
modifier le contenu de la liste de mon formulaire avec
une


procédure évennementielle sur "Absence dans liste", mais
lorsque je ferme le formulaire, ce que j'avais ajouté à
ma


liste a disparu. Voila le code que j'utilise :

-------------------
Private Sub carac_particuliere_NotInList(NewData As
String, Response As Integer)

'Supprimer les messages d'informations d'ACCESS
DoCmd.SetWarnings False

Dim rep As Integer
rep = MsgBox("Cet élément n'existe pas dans la liste
déroulante. Voulez-vous l'ajouter ?", vbExclamation +
vbYesNo, "Elément pas dans la liste")
If rep = 6 Then
Response = acDataErrAdded
carac_particuliere.RowSource =
carac_particuliere.RowSource & ";" & NewData

Else
Response = acDataErrContinue
Me.carac_particuliere.Undo
End If

DoCmd.SetWarnings True
End Sub
-------------------

C'est pourquoi j'aimerais modifier la propriété Rowsource
de ma table, et non pas de ma liste du formulaire pour
que


cela soit définitif !
Si quelqu'un sait comment faire...

Merci d'avance
Kimai



.




.




André AVONS
Le #4216191
Salut
1)D'abord il faut trouver ou il y a l'erreur de compilation
2)Mets le code quz je t'ai envoyer pour ajouter une valeur a la table
Tu enleves la partie Ajout que tu remplaces par ton call
3) la liste passes la par une variable
liste = "'A';"B"
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
5) J'ai oublie un module
Public Function BaseEnCour() As String
On Error GoTo BaseEnCour_Error

BaseEnCour = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, ""))

Fin:
Exit Function

BaseEnCour_Error:
RepBaseCarte = "Erreur"
MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") " _
& "dans procedure BaseEnCour du Module Repertoire base en cour"
Resume Fin
End Function
'================================================== 'Si ta version ne gere pas instrrev Code de Anor
'================================================== 'Public Function InStrRev(ByVal sIn As String, sFind As String, _
'Optional nStart As Long = 1, Optional bCompare As _
'Long = vbBinaryCompare) As Long
'
' Dim nPos As Long
' sIn = StrReverse(sIn)
' sFind = StrReverse(sFind)
' nPos = InStr(nStart, sIn, sFind, bCompare)
' If nPos = 0 Then
' InStrRev = 0
' Else
' InStrRev = Len(sIn) - nPos - Len(sFind) + 2
' End If
'End Function
'
'Public Function StrReverse(ByVal sIn As String) As String
' Dim nC As Integer, sOut As String
' For nC = Len(sIn) To 1 Step -1
' sOut = sOut & Mid(sIn, nC, 1)
' Next
' StrReverse = sOut
'End Function


6)Si tu n' y arrives pas envoies moi une base avec le form et la table ou
les tables
--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:076e01c36008$971163d0$
Re_salut ! (:-D)

J'ai copié le code dans un nouveau module
Mais je ne sais pas trop comment le faire fonctionner :
J'ai essayé cela :
----------
Private Sub PDM_NotInList(NewData As String, Response As
Integer)
Call AjoutListeValeurChamp
("T_diagnostic","PDM","'A';'B';'C';'D'")
End Sub
----------

cad sur ma liste basée sur le champ PDM , avec la
propriété "Limiter à liste" = oui,
"sur absence dans liste", je veux remplacer mon rowsource
du champ PDM de la table T_diagnostic par "'A';'B';'C';'D'"

Mais access me met ce message d'erreur :
"Erreur de compilation: Variable ou procédure attendue, et
non un module"
Alors j'ai essayé de lancer à la place une macro qui me
lancerai le module ('ExecuterCode'), sans succes...

Qu'est-ce-qui pourrait clocher ??
kimai
Le #4216071
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque j'ajoute
un élément qui n'est pas dans la liste, le rowsource de la
table a bien été changé. (je n'utilise plus l'ex "'A';'B'"
mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste déroulante
de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la table ?

J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai
André AVONS
Le #4216061
Salut
Private Sub Pdm_NotInList(NewData As String, Response As Integer)
On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As Integer,liste as string

'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, , A_MENU_VER20

'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " & NewData, vbYesNo +
vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de l'enregistrement
erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque j'ajoute
un élément qui n'est pas dans la liste, le rowsource de la
table a bien été changé. (je n'utilise plus l'ex "'A';'B'"
mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste déroulante
de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la table ?

J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai
kimai
Le #4216051
Salut,

J'ai essayé avec le code que tu m'as envoyé, sans succès...
il faudrait que je puisse écrire quelque chose du type :
"rowsource de la liste du formulaire" = "rowsource de la
liste de la table"

Je sais faire pour le formulaire : c'est Me!
[PDM].rowsource = "truc"

Et je ne sais pas faire pour la table. Je devrais pouvoir
le trouver dans ton code, puisque celui ci modifie le
rowsource de la table, mais je n'y arrive pas (il y a
beaucoup d'intermédiaire pour arriver à
obj.propertie.quelque_chose....

Il y a une autre solution : celle que j'avais essayé tout
au début, cad tout simplement: (après un msgbox)
PDM.RowSource = PDM.RowSource & ";" & NewData
Cela evite de trafique la table elle-même (on ne touche
qu'a la liste du formaulaire) et cela fonctionne très
bien : apresvalidation de la boite de dialogue, il y a un
nouvel élément dans la liste. MAIS

Le seul GROS pbm ,c'est que lorsqu'on ferme et qu'on ré-
ouvre le formulaire, ce nouvel élément a disparu !!!!
Comment le sauvegarder ???

Merci encore pour toutes tes réponses.
Si cela t'embête trop, dis moi et je prendrai une décision
draconienne : permettre simplement l'ajout sans enrichir
la liste...

A +
Kimai






-----Message d'origine-----
Salut
Private Sub Pdm_NotInList(NewData As String, Response As
Integer)

On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As
Integer,liste as string


'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, ,
A_MENU_VER20


'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " &
NewData, vbYesNo +

vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de
l'enregistrement

erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque j'ajoute
un élément qui n'est pas dans la liste, le rowsource de la
table a bien été changé. (je n'utilise plus l'ex "'A';'B'"
mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste déroulante
de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la
table ?


J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai


.



kimai
Le #4215851
Salut,
Je t'ai envoyé un mail avec la base et toutes les
explications nécessaires
Merci encore pour ton aide précieuse
kimai


-----Message d'origine-----
Salut
envoies moi le formulaire et la ou les tables
anisi que les modules
Il ne sera pas dit que l'on a pas essaye

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:02b401c3602c$4922c9b0$
Salut,

J'ai essayé avec le code que tu m'as envoyé, sans
succès...

il faudrait que je puisse écrire quelque chose du type :
"rowsource de la liste du formulaire" = "rowsource de la
liste de la table"

Je sais faire pour le formulaire : c'est Me!
[PDM].rowsource = "truc"

Et je ne sais pas faire pour la table. Je devrais pouvoir
le trouver dans ton code, puisque celui ci modifie le
rowsource de la table, mais je n'y arrive pas (il y a
beaucoup d'intermédiaire pour arriver à
obj.propertie.quelque_chose....

Il y a une autre solution : celle que j'avais essayé tout
au début, cad tout simplement: (après un msgbox)
PDM.RowSource = PDM.RowSource & ";" & NewData
Cela evite de trafique la table elle-même (on ne touche
qu'a la liste du formaulaire) et cela fonctionne très
bien : apresvalidation de la boite de dialogue, il y a un
nouvel élément dans la liste. MAIS

Le seul GROS pbm ,c'est que lorsqu'on ferme et qu'on ré-
ouvre le formulaire, ce nouvel élément a disparu !!!!
Comment le sauvegarder ???

Merci encore pour toutes tes réponses.
Si cela t'embête trop, dis moi et je prendrai une décision
draconienne : permettre simplement l'ajout sans enrichir
la liste...

A +
Kimai






-----Message d'origine-----
Salut
Private Sub Pdm_NotInList(NewData As String, Response As
Integer)

On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As
Integer,liste as string


'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, ,
A_MENU_VER20


'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " &
NewData, vbYesNo +

vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de
l'enregistrement

erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque
j'ajoute


un élément qui n'est pas dans la liste, le rowsource de
la


table a bien été changé. (je n'utilise plus
l'ex "'A';'B'"


mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste
déroulante


de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la
table ?


J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai


.




.




André AVONS
Le #4215841
Salut
Ok je regarde ca en debut d'apres midi

--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:097c01c360ac$a62686d0$
Salut,
Je t'ai envoyé un mail avec la base et toutes les
explications nécessaires
Merci encore pour ton aide précieuse
kimai


-----Message d'origine-----
Salut
envoies moi le formulaire et la ou les tables
anisi que les modules
Il ne sera pas dit que l'on a pas essaye

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:02b401c3602c$4922c9b0$
Salut,

J'ai essayé avec le code que tu m'as envoyé, sans
succès...

il faudrait que je puisse écrire quelque chose du type :
"rowsource de la liste du formulaire" = "rowsource de la
liste de la table"

Je sais faire pour le formulaire : c'est Me!
[PDM].rowsource = "truc"

Et je ne sais pas faire pour la table. Je devrais pouvoir
le trouver dans ton code, puisque celui ci modifie le
rowsource de la table, mais je n'y arrive pas (il y a
beaucoup d'intermédiaire pour arriver à
obj.propertie.quelque_chose....

Il y a une autre solution : celle que j'avais essayé tout
au début, cad tout simplement: (après un msgbox)
PDM.RowSource = PDM.RowSource & ";" & NewData
Cela evite de trafique la table elle-même (on ne touche
qu'a la liste du formaulaire) et cela fonctionne très
bien : apresvalidation de la boite de dialogue, il y a un
nouvel élément dans la liste. MAIS

Le seul GROS pbm ,c'est que lorsqu'on ferme et qu'on ré-
ouvre le formulaire, ce nouvel élément a disparu !!!!
Comment le sauvegarder ???

Merci encore pour toutes tes réponses.
Si cela t'embête trop, dis moi et je prendrai une décision
draconienne : permettre simplement l'ajout sans enrichir
la liste...

A +
Kimai






-----Message d'origine-----
Salut
Private Sub Pdm_NotInList(NewData As String, Response As
Integer)

On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As
Integer,liste as string


'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, ,
A_MENU_VER20


'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " &
NewData, vbYesNo +

vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de
l'enregistrement

erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque
j'ajoute


un élément qui n'est pas dans la liste, le rowsource de
la


table a bien été changé. (je n'utilise plus
l'ex "'A';'B'"


mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste
déroulante


de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la
table ?


J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai


.




.




kimai
Le #4213451
Salut!

Merci BEAUCOUP !!! Tout fonctionne à merveille !
Allez, tu as le droit à une dernière petite question :
j'aimerais utiliser ce code pour d'autres listes; faut-il
que je copie colle (en adaptant bien sûr) le code dans
chaque module de classe, ou est ce qu'ilo y a un moyen
d'appeler un module (sans qu'acces m'affiche un message
d'erreur du style : "c'est une valeur ou une procédure
attendue, et non pas un module, espèce de nul !"

Allez, je ne te remercierais jamais assez : Merci !
A plus
Et bonne continuation

Mike



-----Message d'origine-----
Salut
Ok je regarde ca en debut d'apres midi

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:097c01c360ac$a62686d0$
Salut,
Je t'ai envoyé un mail avec la base et toutes les
explications nécessaires
Merci encore pour ton aide précieuse
kimai


-----Message d'origine-----
Salut
envoies moi le formulaire et la ou les tables
anisi que les modules
Il ne sera pas dit que l'on a pas essaye

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:02b401c3602c$4922c9b0$
Salut,

J'ai essayé avec le code que tu m'as envoyé, sans
succès...

il faudrait que je puisse écrire quelque chose du type :
"rowsource de la liste du formulaire" = "rowsource de la
liste de la table"

Je sais faire pour le formulaire : c'est Me!
[PDM].rowsource = "truc"

Et je ne sais pas faire pour la table. Je devrais pouvoir
le trouver dans ton code, puisque celui ci modifie le
rowsource de la table, mais je n'y arrive pas (il y a
beaucoup d'intermédiaire pour arriver à
obj.propertie.quelque_chose....

Il y a une autre solution : celle que j'avais essayé
tout


au début, cad tout simplement: (après un msgbox)
PDM.RowSource = PDM.RowSource & ";" & NewData
Cela evite de trafique la table elle-même (on ne touche
qu'a la liste du formaulaire) et cela fonctionne très
bien : apresvalidation de la boite de dialogue, il y a un
nouvel élément dans la liste. MAIS

Le seul GROS pbm ,c'est que lorsqu'on ferme et qu'on ré-
ouvre le formulaire, ce nouvel élément a disparu !!!!
Comment le sauvegarder ???

Merci encore pour toutes tes réponses.
Si cela t'embête trop, dis moi et je prendrai une
décision


draconienne : permettre simplement l'ajout sans enrichir
la liste...

A +
Kimai






-----Message d'origine-----
Salut
Private Sub Pdm_NotInList(NewData As String, Response As
Integer)

On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As
Integer,liste as string


'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, ,
A_MENU_VER20


'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " &
NewData, vbYesNo +

vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de
l'enregistrement

erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon
formulaire.




Tout fonctionne comme sur des roulettes : lorsque
j'ajoute


un élément qui n'est pas dans la liste, le rowsource de
la


table a bien été changé. (je n'utilise plus
l'ex "'A';'B'"


mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste
déroulante


de mon formulaire : Comment faire pour que cette liste
me



renvoie les valeurs écrite dans la définition de la
table ?


J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai


.




.




.





Poster une réponse
Anonyme