|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
Bonjour,
J'ai un query qDummy que j'ai laissé vide J'ai une Form fMain avec un TextBox tSQL et un sous formulaire fSQLResult dont le recordsource=qDummy. Ce query qDummy est modifié d'après tSQL comme suit: Code :
CurrentDb.QueryDefs("QDummy").SQL = tSQL.value Code :
Forms!fMain!fSQLResult.Form.Refresh (ou repaint ou requery) Si je vais voir qDummy en mode SQL, elle est bien mise à jour mais en mode design, aucun champ n'est placé dans les colonnes. Je précise que je ne veux pas utiliser les ListBox. Il doit y avoir un truc bête mais je cale un peu... Merci de votre aide |
|
|
00
|
|
|
#2 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Il y a peut-être quelque chose qui ne va pas dans le code SQL provenant de tSQL.value. Crée ta requête manuellement, passe en mode d'affichage "Mode SQL", et regarde ce qui diffère. Remarque : n'affiche aucune colonne dans la requête lorsqu'on passe en affichage SQL. Alors que affiche une colonne avec * lorsqu'on passe en affichage SQL. La différence c'est le nom de la table, suivie d'un point, avant le * A+ |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
Je ne vois pas, hormis cette subtilité propre à l'éditeur de Query, de différence au final. Tous les champs sont affichés.
Il faut savoir que tSQL est saisi par l'utilisateur qui va rentrer du SQL "générique" (sans mettre Table1. devant chaque champ) Cela étant, j'ai essayé avec ta modification mais ça ne change rien (voir image) L'image montre un exemple similaire d'une forme ayant comme source de données QDummy. Tu verra que la forme est cependant vide de tout champ, ce qui explique surement pourquoi elle n'affiche rien mais comporte n enregistrements. Mon problème c'est d'automatiquement insérer tous les champs de la query dans la forme afin qu'ils soient affichés. Sans passer par le mode design bien sûr. Merci |
|
|
00
|
|
|
#4 | |||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Je croyais que tu parlais de ce que tu voyais dans la requête en mode création. Citation:
Si la source de données d'un formulaire change, il faut obligatoirement passer par le mode création, pour ajouter ou supprimer des contrôles et les lier aux champs de la source. Ce qui fonctionne en revanche c'est un contrôle sous-formulaire dont la source n'est pas un formulaire, mais directement la requête QDummy. Code :
|
|||
|
|
00
|
|
|
#5 | |||
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
Citation:
Effectivement, je passais par une sous-forme, c'est pour ça que ça ne marchait pas . Merci ta solution marche nickel. Mais y-a-t-il une façon d'interdire de supprimer/ajouter des enregistrements? (Pour ne pas pouvoir modifier, on peut mettre Locked=Yes mais ça n'empêche pas de supprimer, quant à le mettre disable, ça empêche, le tri, le copy....) |
|||
|
|
00
|
|
|
#6 | ||||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
J'ai essayé un truc qui a l'air de fonctionner (testé sur 2007). Ajoute cette sub dans le code du formulaire principal : Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
![]() ![]() ![]() Ca marche impec. La solution est donc d'utiliser des propriétés de form alors que l'on utilise pas une form... j'aurai vraiment pas trouvé ![]() ![]() ![]() Merci de ton expertise |
|
|
00
|
|
|
#8 |
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
Par contre il y a un truc très bizarre:
si sur la même form je mets un controle lié à une table T(un combo par exemple), que je change la ligne du combo, ça ne marche plus: si je fais la query sur cette même table T: il m'affiche un message d'erreur (l'expression se rapporte à un objet fermé ou non existant) et rien ne s'affiche dans le qDummy. Par contre si je fais la query sur une autre table que T, ça marche... Bizarre |
|
|
00
|
|
|
#9 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Désolé, je ne vois pas où peut être le problème. Sur quelle ligne de code se produit l'erreur ? A+ |
|
|
00
|
|
|
#10 |
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
C'est dès que je fais référence à la propriété form par ex:
Me.fSQLResult.Form.AllowEdits = False Je peux faire en mode debug "? Me.fSQLResult.name par exemple mais pas Me.fSQLResult.Form.... Merci |
|
|
00
|
|
|
#11 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Tout ce que je peux dire c'est que le membre Form n'est exploitable que lorsque la requête est affichée dans le contrôle sous-formulaire. C'est parce qu'il n'y a pas de formulaire en tant qu'objet source du contrôle sous-formulaire. J'ai le problème par exemple, si au lieu de mettre une requête SELECT ..., je met une requête action (UPDATE ... par exemple) qui ne retourne pas un jeu d'enregistrements. Une requête action n'a pas de fenêtre feuille de données, donc pas de Form. Au moment de l'erreur, est-ce que ?Me.fSQLResult.SourceObject renvoie quelque chose ? Par contre je ne vois pas pourquoi ta combo génère ce problème. A+ |
|
|
00
|
|
|
#12 |
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
Je viens de recréer un formulaire simplifié pour pouvoir te l'envoyer afin de te montrer l'erreur....impossible de la reproduire
.Il doit y avoir autre chose dans le formulaire original qui fait bugger ça. Je regarde ça lundi au boulot mais ça doit être tricky car ton morceau de code est exactement le même. Peut-être dû à un des évenements liés au combo?. Je te tiens au courant. Merci de ton aide. |
|
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
Me revoilà...
En fait, in semble que le problème se présente quand une sous forme liée à la table existe dans la forme. Je te joins 2 copies afin de comprendre. Et l'archive du test. Form1 est la forme principale qui contient: tSQL,fSQLResult et Form1_subform Le recordSource de Form1_subform est la table "PCF" Dans la copie1, On fait un query sur PCF (message d'erreur) Dans la copie2, on fait un query sur une autre table: pas d'erreur L'erreur se produit dès qu'une ligne de code fait référence à la propriété "form" de fSQLResult. Par ex: NRec% = Me.fSQLResult.Form.Recordset.RecordCount Bizarre |
|
|
00
|
|
|
#14 | |||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
J'ai mis un peu de temps à trouver. J'ai constaté qu'on ne pouvait même pas ouvrir l'objet requête QDummy lui-même, sans avoir cette erreur : Citation:
En le mettant sur Aucun (valeur par défaut) ça fonctionne. On peut le forcer en VBA : Code :
A+ |
|||
|
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : octobre 2004 Messages : 84 ![]() |
Alors là... respect.
![]() Franchement, c'est vicieux. Un combo attaché à la table ne provoque pas ça. Merci infiniment. J'aurais jamais trouvé
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com