Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Runtime
Runtime Forum destiné à recevoir toutes vos questions concernant le Runtime (empaquetage, déploiement...)
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 10/01/2008, 04h34   #1
Membre confirmé
 
Inscription : novembre 2006
Messages : 467
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 467
Points : 284
Points : 284
Par défaut [2007] Runtime, erreur 91 Object Var or WithBlock not set

Bonjour à tous,

Encore une erreur qui survient seulement en runtime et pas sur tous les postes!

J'utilise ce code (pompé je ne sais plus où) pour lire le numéro de série du processeur afin de valider la licence:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Function NumSerieProcesseur() As String
    Dim svc As Object
    Dim oproc
On Error GoTo Err_NumSerieProcesseur
    Set svc = GetObject("winmgmts:root\cimv2")
    For Each oproc In svc.ExecQuery("select * from Win32_Processor ")
        Debug.Print oproc.name & " = " & oproc.ProcessorId
        NumSerieProcesseur = oproc.ProcessorId
    Next
    Set svc = Nothing
    Exit Function
Exit_NumSerieProcesseur:
   Exit Function
Err_NumSerieProcesseur:
    MsgBox "Erreur basIdentificationPoste_NumSerieProcesseur n°: " & err.Number & vbCrLf & err.Description, , "ANAsoft"
    Resume Exit_NumSerieProcesseur
End Function
Ca fonctionne sur mon poste de dev (xp) et sur deux postes Vista avec runtime 2007.
Sur un troisième (xp pro) j'ai l'erreur 91 Object Variable or WithBlock Variable not set.
C'est sûr qu'une déclaration telle que Dim oproc me laisse songeur...
Mais que mettre?

Sinon je voudrais comprendre le pathname : winmgmts:root\cimv2

Merci de votre attention
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 00h25   #2
Membre expérimenté
 
Inscription : juillet 2005
Messages : 555
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2005
Messages : 555
Points : 578
Points : 578
Par défaut El Processor

Après SP1 ?
Ce n'est pas MSAIN.DLL ? qui n'est pas à jour attention MSAIN est dans 2 répertoires des postes avec access complet le bon est dans 1036 qui faut mettre dans le 1033 des postes avec runtime.
Ca a l'air d'être dur la migration vers 2007.
bon courrage
naphta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 05h32   #3
Membre confirmé
 
Inscription : novembre 2006
Messages : 467
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 467
Points : 284
Points : 284
Bonjour naphta,

Non ce n'est pas avec sp1 (pour l'instant j'ai laissé sp1 de côté).

Je vais quand même relever sur place ce que tu m'indique.

L'erreur 91 est bizarre, je viens de l'avoir sur mon poste de dev en test mde sur une sub bâteau, dans la cde cmdSupprimer:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub cmdVisuSupprimer_Click()
Me.cmdSupprimer.Visible = True
End Sub
Private Sub cmdSupprimer_Click()
On Error GoTo Err_cmdSupprimer_Click
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdDeleteRecord
Me.cmdVisuSupprimer.SetFocus
Me.cmdSupprimer.Visible = False
Exit_cmdSupprimer_Click:
   Exit Sub
Err_cmdSupprimer_Click:
    Select Case err.Number
    Case 0
    Case 91 'Variable objet ou de block With non défini: erreur en mode mde ou accdr
        Resume Next
    Case 2110 'Ne peut pas activer le contrôle
        Resume Next
    Case Else
    MsgBox "Erreur Form_frmEntite_sub_cmdSupprimer_Click n°: " & err.Number & vbCrLf & err.Description, , "xxx"
    Resume Exit_cmdSupprimer_Click
    End Select
End Sub
Ce code est utilisé plusieurs fois de façon identique et ne se produit qu'à un endroit, et n'empêche pas la suppression de se faire!
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 10h59   #4
Membre expérimenté
 
Inscription : juillet 2005
Messages : 555
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2005
Messages : 555
Points : 578
Points : 578
Par défaut Infos

Bonjour tAKAmAkA,
L'erreur 91 peut survenir pour n raisons, à mon avis il faut vérifier tes références. Access met à jour les références tout seul en fonction de ce qu’il y a de disponible sur le poste. J’ai une sub avec une API qui détecte si le frontal (pas access seul ) est lancé 2 fois qui ne fonctionne plus surs les postes Vista !
Il a fallu que je fasse la mise jour de tous les activeX et MDAC 2.8 par rapport aux postes Vista ensuite je propage ces mises à jour sur tous les postes XP et Vista.

Ici dans ton dernier bout de code access fait appel à son automation normalement tout doit se passer sans pépins, donc le souci est ailleurs.
Dans mon cas je n'utilise pas l'automation j'utilise msadox et ADO 2.8 avec des requêtes SQL. Sinon l'appli n'est pas rattachable sur un serveur SQL.
A+
naphta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 14h05   #5
Membre confirmé
 
Inscription : novembre 2006
Messages : 467
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 467
Points : 284
Points : 284
Re,

Merci pour ton attention,

Citation:
Il a fallu que je fasse la mise jour de tous les activeX et MDAC 2.8 par rapport aux postes Vista
c'est à dire que tu mets à jour pour que ça marche avec Vista et qu'ensuite tu copies les fichiers sur les postes Xp?
Citation:
ensuite je propage ces mises à jour sur tous les postes XP et Vista.
Comment savoir si un ActivX est à jour? edit: sur microsoft.com

mdac est spécifique SQLserver, en ai-je besoin?
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 18h35   #6
Membre expérimenté
 
Inscription : juillet 2005
Messages : 555
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2005
Messages : 555
Points : 578
Points : 578
Par défaut explication

Explication : les activeX référencés

Notre appli migrée utilise par exemple cet activex : MSHFLXGD.OCX, je ne pouvais pas l'inscrire sur une machine vista, j'ai trouvé la version SP4 et là plus de soucis.
Sur 7 activex, 3 n'étaient pas visiblement à jour et impossible de les inscrire proprement sur vista, j'ai trouvé ces derniers à jour dans un répertoire chez Autocad. J'ai plus l'url, j'ai trouvé avec le google.
Si tu n'utilises pas d'activex pas de souci de ce côté là.

Les mdac sont pris en charge par les MàJ de update.microsoft.com ou en les téléchargeant chez microsoft. Ils prennent en charge l'ensemble de la connectivité microsoft entre applications.


Me.cmdVisuSupprimer.SetFocus
Me.cmdSupprimer.Visible = False

tente d'envoyer le focus ailleurs, ou commente les 2 lignes
a+
naphta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 20h29   #7
Membre confirmé
 
Inscription : novembre 2006
Messages : 467
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 467
Points : 284
Points : 284
Excuses-moi si je suis un peu lourd mais pour être sûr de comprendre:
1-
Citation:
j'ai trouvé la version SP4 et là plus de soucis
veut dire que tu as copié MSHFLXGD.OCX d'une machine windows sp4 sur ta machine Vista?

2-
Citation:
je ne pouvais pas l'inscrire sur une machine vista
ni par Outils/Références ni par le code?

A part ça:
Citation:
Me.cmdVisuSupprimer.SetFocus
Me.cmdSupprimer.Visible = False
tente d'envoyer le focus ailleurs, ou commente les 2 lignes
c'est sûr que ça va résoudre mon pb mais ce qui est curieux c'est que ce code plant 1 formulaire sur 5 (jumeaux) qui l'utilise.
J'ai viré les deux lignes, j'ai assez de soucis comme ça.

L'objet initial de mon post:
J'ai vérifié MSAIN: il est bien dans 1033 du poste runtime dans une version 12.0.4518.1014 qui semble être la dernière (web).

N'étant pas informaticien j'ai du mal à comprendre le pathname winmgmts:root\cimv2.

Le readme.txt qui l'acompagne dit
Citation:
README for the CIMv2r5.mof Windows XP

The purpose of the CIMv2r5.mof file is to provide a strictly
compliant schema to the DMTF's CIM version 2.5. Compiling this
MOF will place schema in the root\CIMv2r5 Namespace.
What does it means?
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 12h13   #8
Membre expérimenté
 
Inscription : juillet 2005
Messages : 555
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2005
Messages : 555
Points : 578
Points : 578
Par défaut La suite

Bonjour ou Bonsoir ?

J'ai compris les bizarreries au niveau de l'heure des posts ! Tu es aux Antilles !!

Alors, SP4 c’est le niveau de correction de l’activex uniquement, il y a certains activex qui sont en SP6 aujourd’hui.
Pour pouvoir utiliser un activex il faut qu’il soit inscrit d’abord dans la base de registre avec la commande dos du style :
regsvr32 monactivex.ocx (ocx est l’extension des activex)
Ensuite on inscrit l’activex dans les références du programme. Il faut s’assurer que tous les postes on la même version.

La version 12.0.4518.1014 est la première version, ce n’est pas la version SP1. Si tu as passé le SP1 puis tenté de l’enlever je me méfierai à ta place les désinstallations ne font pas tout le boulot proprement.
Il est probable qu’il reste des choses du SP1. Avec les plates-formes Microsoft on avance, on ne recule plus, c’est trop tard. C’est exactement ce qui m’ai arrivé, j’ai fait avec.

Pour winmgmts :
L’ensemble du hardware d’une machine peut être accessible dans le code, on peut même accéder aux infos d’une autre machine sur le réseau. On déclare l’objet dans le code puis l’accès aux infos est fait avec une requête façon SQL.
Il n'y a pas que le hardware, winmgmts permet l'accès à des familles d'informations.
Attention je pense qu’ il faut vérifier les droits d’utilisateur pour cet objet.
Explication : Parfois certaines fonctionnalités nécessitent que l’utilisateur soit dans le groupe des administrateurs de la machine locale.
Cet objet est généralement utilisé par les éditeurs de logiciel de gestion de parc.
Je ne peux pas expliquer dans un post ce que c’est, alors 3 liens + ou – dur à comprendre pour le savoir:
http://www.emsystems.be/befox/mobile...?lng=fr&pg=136
http://www.wilsonmar.com/1wmiwbem.htm : ici c’est complet et bien expliqué
http://msdn2.microsoft.com/en-us/lib...8VS.85%29.aspx : site officiel anglais seulement
A+
naphta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 12h23   #9
Membre expérimenté
 
Inscription : juillet 2005
Messages : 555
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2005
Messages : 555
Points : 578
Points : 578
Par défaut La suite

Re-Bonjour Takama,

Un truc pour déboguer.
Parfois certaines erreurs ne veulent rien dire, c’est comme un appel au secours !!

Pour déboguer une appli commentes toutes les lignes « On error … », car c’est la dernière gestion d’erreur qui fait foi et parfois l’erreur est ailleurs.
A +
naphta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 15h51   #10
Membre confirmé
 
Inscription : novembre 2006
Messages : 467
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 467
Points : 284
Points : 284
Bonjour naphta,

Pour le comment des lignes On error c'est ok.
D'ailleurs, mais là j'ai encore beaucoup à apprendre sur la gestion d'erreur, l'erreur 91 était cachée derrière l'erreur 2110 qui, elle avait une raison plus compréhensive d'apparaître.
2110 ne me causait pas de plantage et n'empêchait pas l'action de se faire.
J'ai mis un Resume Next et du coup la 91 est apparue.
Je lui ai, à son tour mis un Resume Next et là je suis allé au plantage.
Moralité, il vaut mieux avoir un code propre.
Comme j'ai viré le code incriminé ça me va comme ça.

Concernant tes explications: merci, je vais lire tout ça.
Mon but est de créer une vérification de la licence sur le poste et d'envoyer, ou de calculer sur place si c'est moi qui installe, une clé codée qui est comparée au numéro lu sur la machine.
Tant que mon programme ne marche pas bien je n'ai rien à craindre.
Donc, je reprendrai ça sur la fin de la mise en route, en tout état de cause avant de fournir au client la version définitive qui marche chez lui!

Concernant la sp1, je ne l'ai pas à proprement parler désinstallée (je ne sais pas si c'est possible) mais j'ai désinstallé puis réinstallé Office.
Mais peut-être celà cause-t-il les mêmes pollutions sur la bdr...
De toute façon je finirai bien par la mettre.

Merci et à bientôt!

EDIT: infos sur runtime/sp1
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA 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 17h26.


 
 
 
 
Partenaires

Hébergement Web