Erreur 48 sur EOF (DAO)

Résolu
cs_elchico Messages postés 13 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 2 novembre 2006 - 7 mars 2006 à 22:07
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 9 mars 2006 à 21:09
Bonjour à tous,

Un gros problème se pose chez certains de mes clients (seulement 3 sur plusieurs milliers mais bon...).
Sur un simple :


"While not r.eof"


R étant un DAO.Recordset, ils recoivent un message d'erreur 48 - Erreur au chargement de la DLL.


J'ai tout essayé, tout d'abord j'ai essayé de reproduire le problème sur l'un de mes PC et je n'y arrive pas... Ensuite réinstallation MDAC... Rien n'y fait. Le DAO se connecte sur une base Access. Cette même base access ne pose pas de problème chez moi avec exactement le même code...


J'y perd mon latin... si vous aviez une idée...


Merci d'avance à tous !

8 réponses

cs_elchico Messages postés 13 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 2 novembre 2006
9 mars 2006 à 20:47
Bonjour,

Juste pour info, j'ai identifié le problème (un peu par hasard je dois bien le dire...).
J'avais dans mes déclarations cela :

Dim R, R2 as DAO.Recordset

Voilà... Grave erreur, que normalement je ne fait jamais sauf là...
Je ne comprend toujours pas pourquoi ca marche chez 99% de mes clients mais bon... Si ca vous arrive vous saurez d'où ca vient. Donc rien de tel que :

Dim R as dao.recordset
Dim R2 as dao.recordset

Merci en tout cas pour votre aide.
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
7 mars 2006 à 23:02
Salut,
As-tu fait une install en règle chez tes clients ?
Surtout en DAO, peut-être qu'ils n'ont pas la bonne version de DLL d'installée ?
Normalement, ces dll se touvent dans C:\Program Files\Fichiers communs\Microsoft Shared\DAO : dao350.dll ou dao360.dll
Ou peut-être manque-t-il une dépendance (genre vbar332.dll)
A savoir, DAO ne peut être utilisé pour des bases access converties en version supérieure à 2002 ou 2003.
0
cs_elchico Messages postés 13 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 2 novembre 2006
7 mars 2006 à 23:17
Hello,

Tout d'abord merci pour ta réponse.
L'installation se fait dans les règles avec un installshield qui fonctionne puisque 99,9% de mes clients ne rencontrent pas ce problème. La base de données est au format access 2000. L'un de mes clients a essayé de télécharger le MDAC depuis chez Microsoft, le message lui a indiqué qu'il était déjà à jour...

Je lui ai demandé de tester la ré-installation de Jet en attendant mais je n'y crois pas beaucoup...
C'est extraordinaire quand même... Je peux instancier un recordset, me connecter à la base de données etc... La seule instruction qui plante c'est :

While not r.eof

Quand même dingue ca non ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 mars 2006 à 03:05
salut,

pourquoi ces 3 là et pas les autres, pourquoi juste çà, aucune idée....

par contre tu peux essayer (à moins que ce ne soit déjà le cas) de faire un r.movelast puis un r.movefirst avant ton while.

DAO (3.6) est déconseillé puisqu'il n'est plus mis à jour depuis 98,
mais c'est aussi ce que j'utilise. (faut pas cracher dessus, VB6 n'est
plus tout jeune non plus ^^)



tu peux aussi peut-être ajouter une référence : Microsoft Data Formatting Object Library 6.0 (SP6) [MSSTDFMT.DLL]



bon courage

PCPT [AFCK]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_elchico Messages postés 13 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 2 novembre 2006
8 mars 2006 à 11:05
J'ai l'intention à plus ou moins long terme de faire évoluer le logiciel en modifiant mon code pour utiliser l'ADO. Par contre pas question pour le moment de passer en .net. Je passerais ces applications quand on me donnera un assistant qui permet de migrer celles-ci sans (ou presque d'intervention humaine)... J'ai essayé avec les assistants donnés par .net, j'ai une erreur critique dès le premier formulaire (peut-être à cause de DAO)...

Mais bon, ce n'est pas vraiment le sujet, je m'égare désolé :)

Je vais essayer de mettre un movelast & un movefirst avant mais franchement je n'y crois pas trop. Ce message d'erreur de chargement de DLL m'évoque plutôt une DLL endommagée... Le problème étant que la réinstallation du MDAC ne donne rien... Hors dans cette instruction "While not r.eof" si ce n'est pas le DAO qui est en cause c'est le "While not", ce qui métonnerais vu le nombre d'instructions passées avec succès avant d'arriver à cette ligne...

En presque 10 ans d'expérience en VB, j'ai jamais vu ca... jamais (et pourtant j'en ai vu des trucs bizarres avec notre VB adoré :))

En tout cas merci pour vos réponses, si vous avez des idées supplémentaires je suis preneur...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 mars 2006 à 11:38
(je ne te disais pas de migrer vers .net, presque au contraire ^^)



perso j'ai déjà eu des problèmes de résultats (éronnés) à cause du MoveLast MoveFirst manquant.

pour le While par contre, çà me donne ceci :



Set Rs = Db.OpenRecordset(sSql, dbOpenDynaset)

Rs.MoveLast

Rs.MoveFirst

Do Until Rs.EOF

'blabla

Rs.MoveNext

Loop

Rs.Close

Set Rs = Nothing



par contre ce que je ne comprend pas, c'est pour le MDAC ; avec DAO je n'ai jamais eu besoin de l'installer (PC sans Access)
0
cs_elchico Messages postés 13 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 2 novembre 2006
8 mars 2006 à 11:45
J'avais bien compris, j'avais besoin de me soulager sur .net ()

Pour le MDAC, installshield me demande de l'intégrer dans mon setup. D'après mes souvenirs il est installé par défaut avec XP mais bon dans le doute !

Je vais essayer ta technique, je renvoi l'exe à mon client et je te tiens au courant.
En tous cas merci beaucoup pour votre aide à tous, c'est un pur bonheur de se sentenir soutenu pendant ces phases de délire
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
9 mars 2006 à 21:09
Effectivement l'erreur peut venir de là.
En VB6, Dim R, R2 as DAO.Recordset ne veut pas dire que R et R2 sont des recordset mais que R est un Variant et R2 un recordset (je ne veux pas t'apprendre quelque chose mais il est bon de le rappeler pour les futurs lecteurs de ce topic).
Le pourquoi ça fonctionnait pour 99% et pas pour les autres, sans doute un problême de dll ou de run-time vb ?
0
Rejoignez-nous