Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2446 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  equivalent vb a "actualiser" access 2007

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

equivalent vb a "actualiser" access 2007

n°2021098
greg360
Posté le 03-09-2010 à 18:04:08  profilanswer
 

Bonjour a tous,
 
Je souhaite raffraichir mon formulaire principal sans avoir a cliquer sur le bouton "Actualiser tout" edans l'onglet accueil de Access 2007.
En effet, c'est le seul moyen d'afficher le contenu des champs du formulaire, la requete sql s'executant avant le code visual basic qui rempli la table qui sert a remplir les champs du formulaire..
Comment, en code visual basic, je peux faire la meme chose que ce boutton actualiser ?
 
Merci de vos reponses


---------------
Greg
mood
Publicité
Posté le 03-09-2010 à 18:04:08  profilanswer
 

n°2021225
gocho
Posté le 05-09-2010 à 10:36:32  profilanswer
 

je ne suis pas sûr de ma réponse, mais est ce que ca ne serait pas

Code :
  1. nomduform.requery


?

n°2021505
greg360
Posté le 07-09-2010 à 08:32:42  profilanswer
 

Merci pour ta reponse, quand le nom du formulaire contient des espaces, quelle est la syntaxe pour ihniber les espaces ?


---------------
Greg
n°2021507
greg360
Posté le 07-09-2010 à 09:07:27  profilanswer
 

pour information, c'est pour resoudre le probleme du "#supprime" dans les champs du formulaire, car ils sont remplis par un select dans une table que je supprime entierement, puis que je remplis.


---------------
Greg
n°2021512
MerryvorRa
Posté le 07-09-2010 à 09:42:52  profilanswer
 

Bonjour,  
 
Si tu te trouves sur le formulaire en question, tu peux utiliser Me.Requery, cela évite d'utiliser le nom de formulaire.
Sinon, l'utilisation de crochets permets d'inclure les caractères spéciaux.
Pour un formulaire principal:

Code :
  1. Forms![Nom Formulaire avec esp@ces].Requery


Si c'est un formulaire secondaire:

Code :
  1. Forms![Nom Formulaire principal]![Nom Formulaire secondaire].Requery


Message édité par MerryvorRa le 07-09-2010 à 09:43:33
n°2021522
greg360
Posté le 07-09-2010 à 10:04:22  profilanswer
 

Merci pour ta reponse.
Je pense que le requery fonctionne mais a l'ouverture du formulaire, les champs n'apparaissent meme plus ... Je dois cliquer sur le bouton "Actualiser tout" dans la barre "accueil" de Access 2007 pour que les champs apparaissent et se remplissent...


Message édité par greg360 le 07-09-2010 à 10:05:37

---------------
Greg
n°2021523
MerryvorRa
Posté le 07-09-2010 à 10:06:17  profilanswer
 

Alors il faut vérifier la requête source: les champs sont-ils toujours existants, que donne la requête toute seule ...

n°2021540
greg360
Posté le 07-09-2010 à 11:01:15  profilanswer
 

J'ai a moitie resolu le probleme en creant un bouton "actualiser" dans le formulaire, contenant la maccro "actualiser", cependant, je dois cliquer une fois dessus au demarrage sous peine de tomber sur les champs "#supprime"


---------------
Greg
n°2021556
gocho
Posté le 07-09-2010 à 11:48:07  profilanswer
 

Ta requete fonctionne bien ?
Il doit y avoir qqch qui cloche dans l'ordonnancement des choses...

 

Si j'ai bien compris, à l'ouverture de ton formulaire :
  - tu supprime une table. Tu la recréé et l'alimente
  - tu as des #supprime partout, donc tu rafraichit le formulaire

 

C'est bien ca ?
Que donne ton code ? Normalement, si tu mets le me.requery à la suite du code qui alimente tes champs de formulaire, tu ne devrais pas avoir à mettre de bouton actualiser.


Message édité par gocho le 07-09-2010 à 11:48:44
n°2021563
greg360
Posté le 07-09-2010 à 12:03:16  profilanswer
 

Oui c'est dans cet ordre que tout ce passe. Voici le code :
 

Code :
  1. Private Sub Form_Open(Cancel As Integer)
  2. Dim strConnect, strConnect2 As String
  3. Dim strsql As String
  4. Dim dbCPTA As adodb.Connection
  5. Dim dbCPTA2 As adodb.Connection
  6. Dim rst As New adodb.Recordset
  7. strConnect = "DSN=GestionCharges"
  8. Set dbCPTA = New adodb.Connection
  9. dbCPTA.Open strConnect
  10. Set dbCPTA2 = New adodb.Connection
  11. strConnect2 = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Demo\toto.accdb;"
  12. dbCPTA2.Open strConnect2
  13. DoCmd.SetWarnings False
  14. DoCmd.RunSQL "DELETE * FROM T_TEST"
  15. DoCmd.SetWarnings True
  16. rst.Open "SELECT F_ARTICLE.AR_REF ,F_ARTICLE.AR_DESIGN FROM F_ARTICLE", dbCPTA, adOpenDynamic, adLockOptimistic
  17. While Not (rst.EOF)
  18.     strsql = "INSERT INTO T_TEST (REF,DESIGN) VALUES ('" & rst(0) & "', '" & rst(1) & "')"
  19.     dbCPTA2.Execute (strsql)
  20.     rst.MoveNext
  21. Wend
  22. rst.Close
  23. dbCPTA.Close
  24. Set dbCPTA = Nothing
  25. dbCPTA2.Close
  26. Set dbCPTA2 = Nothing
  27. MsgBox "fin"
  28. End Sub


 
Le probleme du me.requery, c'est que je me retrouve avec un formulaire vide, sans meme les cases qui doivent etre remplies par le select.


---------------
Greg
mood
Publicité
Posté le 07-09-2010 à 12:03:16  profilanswer
 

n°2021586
gocho
Posté le 07-09-2010 à 13:08:28  profilanswer
 

ben, il est le ou me.requery ?

n°2021597
greg360
Posté le 07-09-2010 à 13:40:09  profilanswer
 

je le met entre la ligne 22 et la ligne 23, juste avant de fermer les connexions aux BDD


---------------
Greg
n°2021612
gocho
Posté le 07-09-2010 à 14:15:51  profilanswer
 

quelle est la source de ton formulaire ?

n°2021629
greg360
Posté le 07-09-2010 à 14:44:53  profilanswer
 

une table qui s'appelle "Table Parametres"


---------------
Greg
n°2021630
gocho
Posté le 07-09-2010 à 14:46:07  profilanswer
 

Et elle est modifiée à un moment ou un autre lorsque tu ouvres ton formulaire ?

n°2021636
greg360
Posté le 07-09-2010 à 14:54:36  profilanswer
 

du tout, elle est en lecture seule, j'y ait access via le DSN


---------------
Greg
n°2021645
gocho
Posté le 07-09-2010 à 15:16:13  profilanswer
 

et ce sont des donnnées de cette table qui s'affichent en #supprime ?

n°2021647
greg360
Posté le 07-09-2010 à 15:20:38  profilanswer
 

non, les donnees de la table "Table Parametres" sont correctement affichees dans le formulaire, ce sont les donnees de la table "T_TEST" que j'ai cree dans access et rempli dans le code visual basic qui sont en "#supprime"


---------------
Greg
n°2021650
gocho
Posté le 07-09-2010 à 15:23:46  profilanswer
 

Ce que je comprend pas, c'est comment tu as lié les données de T_Test à ton formulaire ? Tu le fais qqpart dans le code VBA ?  
 
Parce que du coup, c'est normal que tu aies des #supprime.
C'est ce que MerryvorRa a suggéré toute à l'heure : les données ne sont pas disponibles dans ta table source.

n°2021661
greg360
Posté le 07-09-2010 à 15:51:54  profilanswer
 

C'est vrai que je m'explique très mal, je suis débutant sur Access et j'ai pris un screenshot pour mieux m'expliquer :
 
http://a.imageshack.us/img830/6320/screenshot1r.jpg
 
Il y a deux formulaires, le formulaire principal et le sous formulaire.
A l'ouverture du formulaire principal, il y a un code visual basic qui est executé :

Code :
  1. Private Sub Form_Open(Cancel As Integer)
  2. Dim strConnect, strConnect2 As String
  3. Dim strsql As String
  4. Dim dbCPTA As adodb.Connection
  5. Dim dbCPTA2 As adodb.Connection
  6. Dim rst As New adodb.Recordset
  7. strConnect = "DSN=GestionCharges"
  8. Set dbCPTA = New adodb.Connection
  9. dbCPTA.Open strConnect
  10. Set dbCPTA2 = New adodb.Connection
  11. strConnect2 = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Demo\toto.accdb;"
  12. dbCPTA2.Open strConnect2
  13. DoCmd.SetWarnings False
  14. DoCmd.RunSQL "DELETE * FROM T_TEST"
  15. DoCmd.SetWarnings True
  16. rst.Open "SELECT F_ARTICLE.AR_REF ,F_ARTICLE.AR_DESIGN FROM F_ARTICLE", dbCPTA, adOpenDynamic, adLockOptimistic
  17. While Not (rst.EOF)
  18.     strsql = "INSERT INTO T_TEST (REF,DESIGN) VALUES ('" & rst(0) & "', '" & rst(1) & "')"
  19.     dbCPTA2.Execute (strsql)
  20.     rst.MoveNext
  21. Wend
  22. DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
  23. rst.Close
  24. dbCPTA.Close
  25. Set dbCPTA = Nothing
  26. dbCPTA2.Close
  27. Set dbCPTA2 = Nothing
  28. MsgBox "fin"
  29. End Sub


 
La source de données du sous formulaire est une requete qui link la table T_TEST ainsi que les deux autres tables necessaires pour remplir les champs.
 
La requete est valide et la source aussi, si bien qu'après 2 ou 3 clicks sur le bouton actualiser du formulaire (celui qui fait appel a la maccro actualiser), je me retrouve avec un formulaire et un sous formulaire correctement remplis. Mais avant de tomber sur ce formulaire, j'ai une etape ou tous les champs du sous formulaire sont "#Supprimé"
 
Le résultat est correct au final, mais je souhaiterais tomber sur ce résultat sans avoir a cliquer sur mon bouton actualiser appelant la maccro actualiser.
Je passe par deux etapes (parfois une des deux seulement..) :
1) Le sous formulaire dont les champs concernent la table T_TEST sont "#Supprimé"
2) Le sous formulaire est vide, blanc
 
J'ai eut l'idée d'appeler une maccro actualiser à l'ouverture du formulaire, mais je pars en boucle infinie.
 
En tout cas merci pour l'interet que tu portes a mon probleme.


---------------
Greg
n°2021680
gocho
Posté le 07-09-2010 à 17:46:48  profilanswer
 

ah, ok je situe mieux :)

 

Le sous formulaire se charge en fait probablement avant que la table ne soit alimentée, d'ou les #supprime

 

Alors, il faudrait qu'apres avoir executé le chargement de la table, tu rafraichisse le sous formulaire.

 

il ne faudrait donc pas

Code :
  1. me.requery

mais

Code :
  1. me.frmChild.requery


Je ne suis pas tout à fait sûr que frmChild soit connu en vba, mais c'est le principe.
Ou alors, passe directement par

Code :
  1. nomdusousformulaire.requery
 

edit : est ce que le contenu du sous formulaire est lié à ta liste NoArticleRef du formulaire principal ?


Message édité par gocho le 07-09-2010 à 17:48:59
n°2023016
greg360
Posté le 15-09-2010 à 10:50:57  profilanswer
 

Merci pour ta reponse, en effet c'est un probleme de raffraichissement du sous-formulaire. J'ai essaye plusieurs syntaxes sans succes :
 
Le sous formulaire s'appelle "Form Detail1"
 

Code :
  1. [Form Detail1].requery


Erreur d'execution 2465, mydsn ne troue pas le champ '|'
 

Code :
  1. Me.[Form Detail1].requery


Erreur d'execution 2465, mydsn ne troue pas le champ '|'
 

Code :
  1. Me.Form![Form Detail1].requery


Erreur d'execution 2465, mydsn ne trouve pas le champ 'Form Detail1'
 

Code :
  1. Forms![Form Detail1].Requery


Erreur d'execution 2450, mydsn ne trouve pas le formulaire 'Form Detail1'
 
Alors la question que je me pose c'est, comment puis-je m'assurer du nom du formulaire svp ?


---------------
Greg
n°2023019
MerryvorRa
Posté le 15-09-2010 à 10:54:19  profilanswer
 

Pour un SOUS-formulaire:

Code :
  1. Forms![FormPrincipal]![Form Detail1].Requery

n°2023028
greg360
Posté le 15-09-2010 à 11:06:55  profilanswer
 

Merci pour cette reponse aussi rapide.
 
J'ai une erreur d'execution 2465, mydsn ne trouve pas le champ 'Form Detail1'
 
Pourtant dans access, mon sous-formulaire s'appelle bien comme ca ...


---------------
Greg
n°2023032
MerryvorRa
Posté le 15-09-2010 à 11:11:02  profilanswer
 

autant pour moi, c'est un . et pas un ! entre le sous-form et le form:

Code :
  1. Forms![FormPrincipal].[Form Detail1].Requery

n°2023036
greg360
Posté le 15-09-2010 à 11:13:24  profilanswer
 

j'obtiens exactement la meme erreur ..


---------------
Greg
n°2023059
gocho
Posté le 15-09-2010 à 13:40:37  profilanswer
 

Tu peux essayer de lui donner un nom en un seul mot, pour éliminer déjà tout risque d'erreur avec les espaces/crochets
un truc du genre toto quoi :o

 

Et donne ta ligne de code exacte stp.

 

edit :
sinon, truc con. Avec l'auto completion, tu devrais pouvoir le trouver facilement, non ?


Message édité par gocho le 15-09-2010 à 13:41:27
n°2023063
greg360
Posté le 15-09-2010 à 13:50:29  profilanswer
 

j'ai renommé le formulaire principal en titi et le sous formulaire en toto, ma ligne de commande est :
 
Forms![titi].[toto].Requery
 
et je tombe sur cette erreur :
 
Erreur d'execution 2465, erreur définie par l'application ou l'objet
 
Pas d'auto completion pour les noms de formulaire apparament...


---------------
Greg
n°2023070
MerryvorRa
Posté le 15-09-2010 à 14:01:57  profilanswer
 

dernière tentative:
supprime le sous-formulaire de la page principale, svgde, puis ré-insère dans le form. Il est possible qu'en ayant modifié le sous-form depuis le form, des incohérences se soient créées...

n°2023072
gocho
Posté le 15-09-2010 à 14:14:45  profilanswer
 

[:lectrodz] pas d'auto completion pour les formulaires ? mais si mais si

 

Je viens de retrouver des trucs (qui fonctionnent, ca vient d'une appli en prod)

 
Code :
  1. Form_nomdetonform.requery


Avec ca, y'a de l'autocompletion (tente un petit ctrl+espace avec le _ )

 

ou sinon, tu peux tenter

 
Code :
  1. frmChild.requery


Message édité par gocho le 15-09-2010 à 14:16:00
n°2023075
greg360
Posté le 15-09-2010 à 14:26:58  profilanswer
 

Merci pour vos réponses, en effet, avec un ctrl+espace sur le _, j'ai bien l'auto completion, et je peux faire un  
 
Form_toto.requery
 
Mais à l'éxécution, je tombe sur le formulaire et le sous formulaire est invisible, je suis obligé d'utiliser la maccro actualiser ou le gros bouton actualiser dans la barre d'outils Access.
 
J'ai la nette impression de tourner en rond ...


---------------
Greg
n°2023076
gocho
Posté le 15-09-2010 à 14:30:49  profilanswer
 

ca me parait bizarre tout ca quand meme...
Peut être un soucis d'ordonnancement des commandes dans le code.
 
est ce que tu aurais moyen d'envoyer ton fichier mdb par mail ?

n°2023139
greg360
Posté le 15-09-2010 à 18:14:40  profilanswer
 

La bdd contient des infos sur les clients d'une societe, et je ne pense pas avoir le droit de donner ces infos :s  
Je vais me renseigner aupres de mon maitre de stage.


---------------
Greg
n°2023150
gocho
Posté le 15-09-2010 à 19:20:48  profilanswer
 

au pire, une copie avec juste une ou deux lignes de données dans chaque table (juste le necessaire pour le formulaire en question).
Et prendre soin de modifier les données des tables ;)

n°2023266
SuppotDeSa​Tante
Aka dje69r
Posté le 16-09-2010 à 12:12:37  profilanswer
 

Hello
 
Où se trouve le focus a ce moment ?
Dans le formulaire principal ? Le sous formulaire ?
 
Sinon une autre syntaxe pratique pour les noms de formulaire exotiques :
Forms("Ca c'est le nom de mon formulaire principal" )("Ici le nom_ de mon sous formulaire " ).Requery
 
Ou aussi, si le focus est dans le formulaire principal :
Docmd.Requery "Ici le nom_ de mon sous formulaire "
 
Ou aussi pour actualiser le tout, pratique quand on est dans le sous formulaire, il est difficile de remonter dans le formulaire principal :
Docmd.Runcommand accmdRefresh
c'est la meme chose que de passer par le menu, et de cliquer sur Actualiser
 
 
Sinon plutot que d'utiliser un WHERE dans la requete du sous formulaire avec un critere du formulaire principal, il est plus facile (et géré automatiquement par Access) d'utiliser les champs pere et champs fils.
C'est a définir dans les propriétés du sous formulaire. On défini en fait la clause WHERE entre deux (trois/quatre etc.) champs ici. L'actualisation se fait toute seule par Access
Par exemple si les deux formulaires doivent se synchroniser sur le [N°Commande] il suffit de mettre dans champ pere : [N°Commande] et idem dans champ fils.
 
Donc dans ton cas, si j'ai bien vu la synchro des deux formulaire par rapport a ton screen :
Champ Pere : NoArticleRef
Champ Fils : Ref
 
Edit : vu la tronche du formulaire, je pense que le formulaire principal n'est qu'un conteneur, et n'a pas de source de données. Donc le sous formulaire est inutile. Tu pourrais tres bien mettre ta pioche directement dans le sous formulaire qui deviendrait en fait un formulaire principal. Donc juste un Me.Requery suffirait.


Message édité par SuppotDeSaTante le 16-09-2010 à 12:24:38

---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  equivalent vb a "actualiser" access 2007

 

Sujets relatifs
limites VBA_excel_2007?? ( Erreur 7_Mémoire Insuffisante)[résolu]actualiser Jlist
[RESOLU]Modifier table Access en Visual Basic[ACCESS] Rafraichissement tables liés avec requêtes
Créer une table dans Access à partir d'un tableau[ACCESS] [RESOLU] Problème de doublon récalcitrant
Access, impossible d'atteindre nouvel enregistrementExporter Access vers Excel
[Résolu] 550 index.php: Access is deniedActualiser => redirection
Plus de sujets relatifs à : equivalent vb a "actualiser" access 2007


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR