Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2010, 21h52   #1
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
Par défaut problème d'évènement après upgrade de 97 à 2003

Bonjour à tous...

Sur AC- 97, j'ai fait un formulaire contenant un sous-formulaire.
Le premier formulaire a un bouton "Ajouter" qui permet de dupliquer des controles du sous formulaire...

Vu qu'une image vaut mieux qu'un long discours



Donc chaque clic sur Ajouter, ajoute une infrastructure sur le sous-form.

Tout marche nickel chrome en 97... mais voila, je viens d'upgrader ma base en 2003 et là rien ne va plus...

CODE!:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Add_Click()
    If m_nbrCtrl <= k_controlLimit Then
        Container.SourceObject = ""
        DoCmd.OpenForm "FormMultiple", acDesign, , , , acHidden
        AddControls
        DoCmd.Close acForm, "FormMultiple", acSaveYes
        Container.SourceObject = "FormMultiple"
        Container.SetFocus
        m_nombreInfrastructures.Caption = m_nbrCtrl
        m_arret.Infrastructures.Add New Infrastructure
        UpdateInfrastructure m_nbrCtrl - 1
        UpdateControls
    End If
End Sub
où Container est le controle de sous formulaire

Bon déjà, j'avais un premier problème c'était que ca plantait parce qu'en 97 on peut ouvrir en mode création le sous formulaire pour y ajouter les controles dynamiquement sans pour autant retirer sa référence de Container. En 2003 bien, j'ai donc du ajouter cette ligne, qui n'y était pas auparavant:

Code :
Container.SourceObject = ""
Ca clignote un peu plus... mais soit.

Le VRAI problème vient des évènements sur les boutons des sous formulaires.
En effet, je les assignais par ce code (exemple où newControl = bouton servant a supprimer l'infrastructure courante):

Code :
newControl.OnClick = "=Parent.Form.DeleteInfrastructure(""" & k_controlPrefix & m_nbrCtrl & """)"
Mais, forcément, vu que j'ai du mettre Container.SourceObject = "", je ne peux plus lancer la méthode DeleteInfrastructure par le Parent.Form.

J'ai donc essayé en utilisant ce code:

Code :
.OnClick = "=Forms![Infrastructures].DeleteInfrastructure(""" & k_controlPrefix & m_nbrCtrl & """)"
ou encore:
Code :
.OnClick = "=Form_Infrastructures.DeleteInfrastructure(""" & k_controlPrefix & m_nbrCtrl & """)"
Et là, quand je clique sur mon ptit bouton, il me jette ca en pleine tronche:



Mais qu'est ce que je lui ai fait??
je n'ai pas fait référence à un objet OLE, je m'en fou que ce ne soit pas un objet OLE!

enfin bref... quelqu'un aurait-il une idée?
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 20h28   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 079
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 079
Points : 11 615
Points : 11 615
Bonjour,
Bien capilotracté cette méthode.

Tu connais la propriété Visible d'un controle ? C'est quand même plus simple.

Tu évite ainsi d'ouvrir en caché, faire des modifs de structures, fermer et sauver, réouvrir avoir des clignotements et des messages d'erreurs. Les solutions les plus simples sont toujours les meilleures.

A moins que tu n'ai pas tout dit sur tes contraintes. Par exemple un modèle de données à l'image de ce montage pour le moins déroutant.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 14/12/2010, 20h48   #3
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84

Mon formulaire multiple est facilement réutilisable et pas spécialement utilisé pour des infrastructures, j'avais déjà bien compris que le réutilisable et access ne faisait pas bon ménage et qu'il était impossible d'en faire un mde mais soit... je joue comme je veux!
Par la propriété "visible" de mes contrôles... tu veux dire, si j'ai 50 infrastructures je copie colle 50 fois mes contrôles? et si un jour on en ajoute un 51ème je dois faire un copié-collé dans le code?

Le modèle de données est très bien, je n'ai aucune contrainte à ce niveau, il ne me pose aucun problème.

Donc, ma question n'était pas de savoir ce que je pouvais faire d'autre que la création de contrôle dynamiquement, c'était de savoir d'où venait l'erreur et pourquoi ca fonctionne en 97... si quelqu'un a une idée?
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 09h20   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 079
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 079
Points : 11 615
Points : 11 615
Bonjour,

Effectivement avec un modèle de données mouvant...

N'ayant qu'une vue partielle du code (l'initialisation notamment) je commencerais par regarder du coté de l'utilisation des mots réservés.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 12h11   #5
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
Je ne pense pas que ce soit un problème de mot réservés...

si j'utilisais un mot réservé, ca ne compilerait pas.

et lors de la création dynamique de l'appel de la méthode :

Code :
newControl.OnClick = "=Parent.Form.DeleteInfrastructure(""" & k_controlPrefix & m_nbrCtrl & """)"
Je ne vois pas où il y a un mot réservé
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 15h12   #6
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 079
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 079
Points : 11 615
Points : 11 615
Citation:
Envoyé par mkl238 Voir le message
...
si j'utilisais un mot réservé, ca ne compilerait pas.
Je ne risquerais même pas un ongle sur cette affirmation.

Citation:
Envoyé par mkl238 Voir le message
et lors de la création dynamique de l'appel de la méthode :

Code :
newControl.OnClick = "=Parent.Form.DeleteInfrastructure(""" & k_controlPrefix & m_nbrCtrl & """)"
Vu trop partielle de ta solution. Désolé
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h29.


 
 
 
 
Partenaires

Hébergement Web