J'ai 2 gros probl=E8mes sur un formulaire. Je vous donne la structure :
-dans l'ent=EAte, il y a 30 combobox.
-dans la zone d=E9tail, il y a 30 textbox.
Apr=E8s mise =E0 jour des combobox, le contenu s=E9lectionn=E9 est rapport=
=E9
dans une textbox.
Ci-dessous le code du formulaire :
Option Explicit
Private Sub Form_Open(Cancel As Integer)
Me.Form.RecordSource =3D "SELECT * FROM MaTable;"
RefreshQuery
End Sub
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Screen.ActiveForm.Section(1).Controls
If ctl.ControlType =3D acComboBox Then
ctl.AfterUpdate =3D MaFonction 'Ici pas de pb
End If
Next ctl
End Sub
Private Sub RefreshQuery()
Dim sql As String
Dim ctl As Control
sql =3D "SELECT Id, Nom, Prenom FROM MaRequete Where MaRequete.Id
<> 0 "
sql =3D sql & ";"
For Each ctl In Screen.ActiveForm.Section(1).Controls
If ctl.ControlType =3D acComboBox Then
With ctl
.RowSource =3D sql
.Requery
End With
End If
Next ctl
Private Sub Afficher_Click()
If Me.Afficher.Caption =3D "Afficher" Then
Me.Afficher.Caption =3D "Masquer"
Me.Section(acHeader).Visible =3D True
Else
Me.Afficher.Caption =3D "Masquer"
Me.Afficher.Caption =3D "Afficher"
Me.Section(acHeader).Visible =3D False
End If
End Sub
Voici les probl=E8mes :
-dans la sub RefreshQuery, si j'alimente les combobox par la boucle
For next..., elles n'ont pas de contenu. Il faut que je fasse pour
chacune d'entre elles :
Me.Combo1.RowSource =3D sql
Me. Combo1.Requery
.=2E.
Me.Combo30.RowSource =3D sql
Me. Combo30.Requery
Mais dans ce cas, j'ai un message =E0 la 20=E8me Textbox : trop de bases
ouvertes...
O=F9 est le pb ? Je suis sous XP, A2000 et le moteur Jet est actualis=E9.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Raymond [mvp]
Bonjour.
il faut lire tables et non bases. c'était un problème du moteur Jet 3.5 en version access 97. et qu'on a retrouvé au départ sur le moteur jet 4.0 sur access 2000. une mise à jour du moteur jet a suffit pour supprimer ce message. pour mettre à jour ton Jet (version 4.?) : http://support.microsoft.com/kb/829558/fr il n'empêche que le nombre de pointeurs pour les tables peut arriver au maximum à cause des combobox basées sur une requête qui peut avoir plusieurs tables ( ex MaRequete ). hormis le fait que tu vas résoudre ton problème avec une mise à jour , il est anormal d'avoir 30 combobox avec la même source sur le même formulaire et d'avoir 30 textbox basés sur ces mêmes combobox. c'est surtout là qye réside ton problème. tu peux toujours exposer ce que tu fais et si quelqu'un a une idée il te le fera savoir. as-tu testé sans le .requery dans ta boucle ? il n'est pas indispensable et ce serait plus efficace ? -- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/ Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité ! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Bonjour,
J'ai 2 gros problèmes sur un formulaire. Je vous donne la structure : -dans l'entête, il y a 30 combobox. -dans la zone détail, il y a 30 textbox. Après mise à jour des combobox, le contenu sélectionné est rapporté dans une textbox.
Ci-dessous le code du formulaire :
Option Explicit
Private Sub Form_Open(Cancel As Integer) Me.Form.RecordSource = "SELECT * FROM MaTable;" RefreshQuery End Sub
Private Sub Form_Load() Dim ctl As Control For Each ctl In Screen.ActiveForm.Section(1).Controls If ctl.ControlType = acComboBox Then ctl.AfterUpdate = MaFonction 'Ici pas de pb End If Next ctl End Sub
Private Sub RefreshQuery() Dim sql As String Dim ctl As Control sql = "SELECT Id, Nom, Prenom FROM MaRequete Where MaRequete.Id <> 0 " sql = sql & ";"
For Each ctl In Screen.ActiveForm.Section(1).Controls If ctl.ControlType = acComboBox Then With ctl .RowSource = sql .Requery End With End If Next ctl
Private Sub Afficher_Click() If Me.Afficher.Caption = "Afficher" Then Me.Afficher.Caption = "Masquer" Me.Section(acHeader).Visible = True Else Me.Afficher.Caption = "Masquer" Me.Afficher.Caption = "Afficher" Me.Section(acHeader).Visible = False End If End Sub
Voici les problèmes : -dans la sub RefreshQuery, si j'alimente les combobox par la boucle For next..., elles n'ont pas de contenu. Il faut que je fasse pour chacune d'entre elles : Me.Combo1.RowSource = sql Me. Combo1.Requery ... Me.Combo30.RowSource = sql Me. Combo30.Requery
Mais dans ce cas, j'ai un message à la 20ème Textbox : trop de bases ouvertes...
Où est le pb ? Je suis sous XP, A2000 et le moteur Jet est actualisé.
Merci d'avance pour votre aide
Bonjour.
il faut lire tables et non bases.
c'était un problème du moteur Jet 3.5 en version access 97. et qu'on a
retrouvé au départ sur le moteur jet 4.0 sur access 2000.
une mise à jour du moteur jet a suffit pour supprimer ce message.
pour mettre à jour ton Jet (version 4.?) :
http://support.microsoft.com/kb/829558/fr
il n'empêche que le nombre de pointeurs pour les tables peut arriver au
maximum à cause des combobox basées sur une requête qui peut avoir plusieurs
tables ( ex MaRequete ).
hormis le fait que tu vas résoudre ton problème avec une mise à jour , il
est anormal d'avoir 30 combobox avec la même source sur le même formulaire
et d'avoir 30 textbox basés sur ces mêmes combobox. c'est surtout là qye
réside ton problème. tu peux toujours exposer ce que tu fais et si quelqu'un
a une idée il te le fera savoir.
as-tu testé sans le .requery dans ta boucle ? il n'est pas indispensable et
ce serait plus efficace ?
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité !
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" <gil.nat@caramail.com> a écrit dans le message de news:
1180179191.729083.141600@p77g2000hsh.googlegroups.com...
Bonjour,
J'ai 2 gros problèmes sur un formulaire. Je vous donne la structure :
-dans l'entête, il y a 30 combobox.
-dans la zone détail, il y a 30 textbox.
Après mise à jour des combobox, le contenu sélectionné est rapporté
dans une textbox.
Ci-dessous le code du formulaire :
Option Explicit
Private Sub Form_Open(Cancel As Integer)
Me.Form.RecordSource = "SELECT * FROM MaTable;"
RefreshQuery
End Sub
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Screen.ActiveForm.Section(1).Controls
If ctl.ControlType = acComboBox Then
ctl.AfterUpdate = MaFonction 'Ici pas de pb
End If
Next ctl
End Sub
Private Sub RefreshQuery()
Dim sql As String
Dim ctl As Control
sql = "SELECT Id, Nom, Prenom FROM MaRequete Where MaRequete.Id
<> 0 "
sql = sql & ";"
For Each ctl In Screen.ActiveForm.Section(1).Controls
If ctl.ControlType = acComboBox Then
With ctl
.RowSource = sql
.Requery
End With
End If
Next ctl
Private Sub Afficher_Click()
If Me.Afficher.Caption = "Afficher" Then
Me.Afficher.Caption = "Masquer"
Me.Section(acHeader).Visible = True
Else
Me.Afficher.Caption = "Masquer"
Me.Afficher.Caption = "Afficher"
Me.Section(acHeader).Visible = False
End If
End Sub
Voici les problèmes :
-dans la sub RefreshQuery, si j'alimente les combobox par la boucle
For next..., elles n'ont pas de contenu. Il faut que je fasse pour
chacune d'entre elles :
Me.Combo1.RowSource = sql
Me. Combo1.Requery
...
Me.Combo30.RowSource = sql
Me. Combo30.Requery
Mais dans ce cas, j'ai un message à la 20ème Textbox : trop de bases
ouvertes...
Où est le pb ? Je suis sous XP, A2000 et le moteur Jet est actualisé.
il faut lire tables et non bases. c'était un problème du moteur Jet 3.5 en version access 97. et qu'on a retrouvé au départ sur le moteur jet 4.0 sur access 2000. une mise à jour du moteur jet a suffit pour supprimer ce message. pour mettre à jour ton Jet (version 4.?) : http://support.microsoft.com/kb/829558/fr il n'empêche que le nombre de pointeurs pour les tables peut arriver au maximum à cause des combobox basées sur une requête qui peut avoir plusieurs tables ( ex MaRequete ). hormis le fait que tu vas résoudre ton problème avec une mise à jour , il est anormal d'avoir 30 combobox avec la même source sur le même formulaire et d'avoir 30 textbox basés sur ces mêmes combobox. c'est surtout là qye réside ton problème. tu peux toujours exposer ce que tu fais et si quelqu'un a une idée il te le fera savoir. as-tu testé sans le .requery dans ta boucle ? il n'est pas indispensable et ce serait plus efficace ? -- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/ Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité ! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Bonjour,
J'ai 2 gros problèmes sur un formulaire. Je vous donne la structure : -dans l'entête, il y a 30 combobox. -dans la zone détail, il y a 30 textbox. Après mise à jour des combobox, le contenu sélectionné est rapporté dans une textbox.
Ci-dessous le code du formulaire :
Option Explicit
Private Sub Form_Open(Cancel As Integer) Me.Form.RecordSource = "SELECT * FROM MaTable;" RefreshQuery End Sub
Private Sub Form_Load() Dim ctl As Control For Each ctl In Screen.ActiveForm.Section(1).Controls If ctl.ControlType = acComboBox Then ctl.AfterUpdate = MaFonction 'Ici pas de pb End If Next ctl End Sub
Private Sub RefreshQuery() Dim sql As String Dim ctl As Control sql = "SELECT Id, Nom, Prenom FROM MaRequete Where MaRequete.Id <> 0 " sql = sql & ";"
For Each ctl In Screen.ActiveForm.Section(1).Controls If ctl.ControlType = acComboBox Then With ctl .RowSource = sql .Requery End With End If Next ctl
Private Sub Afficher_Click() If Me.Afficher.Caption = "Afficher" Then Me.Afficher.Caption = "Masquer" Me.Section(acHeader).Visible = True Else Me.Afficher.Caption = "Masquer" Me.Afficher.Caption = "Afficher" Me.Section(acHeader).Visible = False End If End Sub
Voici les problèmes : -dans la sub RefreshQuery, si j'alimente les combobox par la boucle For next..., elles n'ont pas de contenu. Il faut que je fasse pour chacune d'entre elles : Me.Combo1.RowSource = sql Me. Combo1.Requery ... Me.Combo30.RowSource = sql Me. Combo30.Requery
Mais dans ce cas, j'ai un message à la 20ème Textbox : trop de bases ouvertes...
Où est le pb ? Je suis sous XP, A2000 et le moteur Jet est actualisé.
Merci d'avance pour votre aide
LeSoviet
Bonjour Raymond et merci pour la réponse.
Je suis allé voir sur le site de MS en lien et lors de l'installation, apparement, ma version de jet est plus récente que celle contenue dans le exe.
Concernant ce que je souhaite faire sur ce formulaire, il s'agit d'un tableau de tournoi de 30 participants à tirage manuel, donc pour moi, pour l'instant, je ne vois que cette conception (si qqun en a une autre, je suis preneur).
Sinon, j'ai essayé sans le requery dans la boucle et le résultat est le même, les combobox situées dans l'entête du formulaire sont vides. Il faut que je passe par Me.Combobox.Rowsource = sql pour qu'elles aient un contenu.
Merci d'avance pour votre aide
Bonjour Raymond et merci pour la réponse.
Je suis allé voir sur le site de MS en lien et lors de l'installation,
apparement, ma version de jet est plus récente que celle contenue dans
le exe.
Concernant ce que je souhaite faire sur ce formulaire, il s'agit d'un
tableau de tournoi de 30 participants à tirage manuel, donc pour moi,
pour l'instant, je ne vois que cette conception (si qqun en a une
autre, je suis preneur).
Sinon, j'ai essayé sans le requery dans la boucle et le résultat est
le même, les combobox situées dans l'entête du formulaire sont vides.
Il faut que je passe par Me.Combobox.Rowsource = sql pour qu'elles
aient un contenu.
Je suis allé voir sur le site de MS en lien et lors de l'installation, apparement, ma version de jet est plus récente que celle contenue dans le exe.
Concernant ce que je souhaite faire sur ce formulaire, il s'agit d'un tableau de tournoi de 30 participants à tirage manuel, donc pour moi, pour l'instant, je ne vois que cette conception (si qqun en a une autre, je suis preneur).
Sinon, j'ai essayé sans le requery dans la boucle et le résultat est le même, les combobox situées dans l'entête du formulaire sont vides. Il faut que je passe par Me.Combobox.Rowsource = sql pour qu'elles aient un contenu.
Merci d'avance pour votre aide
Raymond [mvp]
Pour les 30 combobox on doit pouvoir créer une seule combobox avec tous les noms et lorsqu'on va sur un contrôle texte faire composer le nom sur cette combobox et le récupérer dans le textbox actif ? il me semble que ce serait plus simple et tu supprimerais les problèmes. -- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/ Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité ! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Bonjour Raymond et merci pour la réponse.
Je suis allé voir sur le site de MS en lien et lors de l'installation, apparement, ma version de jet est plus récente que celle contenue dans le exe.
Concernant ce que je souhaite faire sur ce formulaire, il s'agit d'un tableau de tournoi de 30 participants à tirage manuel, donc pour moi, pour l'instant, je ne vois que cette conception (si qqun en a une autre, je suis preneur).
Sinon, j'ai essayé sans le requery dans la boucle et le résultat est le même, les combobox situées dans l'entête du formulaire sont vides. Il faut que je passe par Me.Combobox.Rowsource = sql pour qu'elles aient un contenu.
Merci d'avance pour votre aide
Pour les 30 combobox on doit pouvoir créer une seule combobox avec tous les
noms et lorsqu'on va sur un contrôle texte faire composer le nom sur cette
combobox et le récupérer dans le textbox actif ?
il me semble que ce serait plus simple et tu supprimerais les problèmes.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité !
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" <gil.nat@caramail.com> a écrit dans le message de news:
1180184587.871740.33840@q69g2000hsb.googlegroups.com...
Bonjour Raymond et merci pour la réponse.
Je suis allé voir sur le site de MS en lien et lors de l'installation,
apparement, ma version de jet est plus récente que celle contenue dans
le exe.
Concernant ce que je souhaite faire sur ce formulaire, il s'agit d'un
tableau de tournoi de 30 participants à tirage manuel, donc pour moi,
pour l'instant, je ne vois que cette conception (si qqun en a une
autre, je suis preneur).
Sinon, j'ai essayé sans le requery dans la boucle et le résultat est
le même, les combobox situées dans l'entête du formulaire sont vides.
Il faut que je passe par Me.Combobox.Rowsource = sql pour qu'elles
aient un contenu.
Pour les 30 combobox on doit pouvoir créer une seule combobox avec tous les noms et lorsqu'on va sur un contrôle texte faire composer le nom sur cette combobox et le récupérer dans le textbox actif ? il me semble que ce serait plus simple et tu supprimerais les problèmes. -- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/ Non Stop Mix '07 - Paris. La nouvelle scène web fête la créativité ! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Bonjour Raymond et merci pour la réponse.
Je suis allé voir sur le site de MS en lien et lors de l'installation, apparement, ma version de jet est plus récente que celle contenue dans le exe.
Concernant ce que je souhaite faire sur ce formulaire, il s'agit d'un tableau de tournoi de 30 participants à tirage manuel, donc pour moi, pour l'instant, je ne vois que cette conception (si qqun en a une autre, je suis preneur).
Sinon, j'ai essayé sans le requery dans la boucle et le résultat est le même, les combobox situées dans l'entête du formulaire sont vides. Il faut que je passe par Me.Combobox.Rowsource = sql pour qu'elles aient un contenu.
Merci d'avance pour votre aide
LeSoviet
Re, merci Raymond pour l'idée.
Je vais développer ça et reviendrais pour dire ce qu'il en est.
Re, merci Raymond pour l'idée.
Je vais développer ça et reviendrais pour dire ce qu'il en est.