SERTNM
Messages postés3Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention19 juillet 2006
-
18 juil. 2006 à 16:14
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
19 juil. 2006 à 10:35
Bonjour,
Je suis en train de développer un soft de traitement d'images avec visual C++ 6.0. Ce soft enregistre ses résultats dans une base de donnée Access 97 ( 1 à 10 enregistrements par seconde ).
La base de donnée était pilotée dans un premier temps par les drivers ODBC. Au bout de quelques heures voire quelques jours mon soft plante : un des thread que je ne métrise pas (un des thread du moteur JET je pense) reste en mode Wait paralysant toute mon application.
J'ai pensé résoudre mon problème en abandonnant les driver ODBC et en utilisant la technologie DAO des MFC, mais il n'en est rien...
Je viens également de me rendre compte que par moment mes enregistrements sont mélangés : j'utilise une clé primaire incrémentée automatiquement et pourtant quand je réouvre ma base avec Access on passe par exemple de l'enregistrement 120 à 128, les enregistrements 121 à 127 se trouvant entre les enregistrements 133 et 134 !!!
est ce que ce mélange des enregistrements est normal sous Access ?
est ce que certain ont déjà rencontré ce type de plantage du moteur JET ? (si c'est bien de lui dont il sagit...)
est ce que les 2 problèmes sont liés ?
Un grand merci à ceux qui vont me lire jusqu'au bout !!!
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 18 juil. 2006 à 19:43
Ben j'y connais rien au lib de base de données, mais je vois pas le
soucis (meme si ca peut paraitre étonnant) qu'il enregistre pas tout a
fait dans l'ordre, tant que les données sont corrects :)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 juil. 2006 à 20:12
Quasi assuré que l'erreur ne vient pas de Jet, j'ai du soft qiu tourne dessus depuis plusieurs années sans aucun problème avec une cadence d'enregistrement injectés et extraits nettement supérieure.
Il faut te méfier de ce que tu vois dans Access, il y a toujours un tri sur colonne même si on ne le spécifie pas.
Pour être certain de l'ordre des enregs, ouvre un recordset en mode adCmdTable sans tri, puis liste les enregs et ainsi tu sauras.
SERTNM
Messages postés3Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention19 juillet 2006 19 juil. 2006 à 09:12
En fait ma formation de base c'est le traitement d'images.... les bases de données j'y viens parce que j'ai pas le choix, je suis totalement novice !!! d'ou ma question : qu'est ce que tu entend par
ouvre un recordset en mode adCmdTable sans tri, puis liste les enregs
comment je m'y prend ?
pour info voilà la partie de mon code qui semble poser soucis... si quelqu'un voie une erreur là dedans j'en serai ravi
PS : la base de donnée est une CDaoDatabase et est déclaré en global. Elle est ouverte une fois pour toute au début du programme.
le recordset est un CDaoRecorset lui aussi déclaré en global et initialisé une fois pour toute au début.
On ne devrait plus utiliser DAO depuis 1998, date à laquelle MS a prévenu que DAO était abandonné au profit de ADO.
Plus aucune mise à jour ni portage en 64 bits.