goldoyaxx
Messages postés5Date d'inscriptiondimanche 28 janvier 2007StatutMembreDernière intervention25 avril 2008
-
14 avril 2008 à 16:51
goldoyaxx
Messages postés5Date d'inscriptiondimanche 28 janvier 2007StatutMembreDernière intervention25 avril 2008
-
25 avril 2008 à 16:20
Bonjour les gens,
Jusqu'à aujourd'hui j'ai toujours trouvé une solution à mes problèmes en VB6 en fouillant sur ce forum, mais là je suis un peu perdu...
Explication: au boulot, je dois connecter 3 machines sur un PC, afin de vérifier si les pièces sont passées bonnes en lisant un code barre et en vérifiant dans les base de données des machines, via un programme en VB6 déjà existant (servant à générer des étiquettes avec datamatrix), en utilisant l'ADO.
dans form_load():
DBS.DB1.ConnectionString = strDB1 (string avec le chemin de la base)
Puis dans une fonction, je fais un MoveFirst
& MoveNext pour vérifier ligne par ligne jusqu'à trouver le bon
numéro.
J'aimerais lire dynamiquement dans les bases, mais je n'y arrive pas. Les pièces passées juste après la connexions sont introuvables, pourtant bien inscrites dans les bases dans les machines
Je suis obligé de refaire une connexion (new recordset...) aux bases, mais elles sont assez conséquentes, les re-connexions sont assez longues (10-15s pour me connecter aux 3 DB).
Peut-on lire dynamiquement dans une base en tant que client dans une base distante?
@Renfield:
En effet ça serait plus pratique, surtout lorsqu'il doit scuter 30000 enregistrements pour ne rien trouver
Mon soucis est que je suis obligé de refaire un RS1.open a chaque cycle pour pouvoir voir les derniers enregistrements. Apparemment le curseur adOpenDynamic ne fonctionne pas.
J'ai fait un essai en faisant un enregistrement dans une base sur mon PC et de lire sans la rouvrir, et ça fonctionne. Mais sur les bases distantes ça fonctionne pas...
goldoyaxx
Messages postés5Date d'inscriptiondimanche 28 janvier 2007StatutMembreDernière intervention25 avril 2008 16 avril 2008 à 08:49
bon allez, je la refais mais en plus clair (j'vais essayer )
j'ai un PC en bout de ligne de production. Sur ce PC il y a deja un soft en VB6 où je dois me connecter à 3 machines via ethernet. Sur ces 3 machines, il y a 1 base de données (Access97/2000).
PC
|
SWITCH
______|_______
| | |
DB1 DB2 DB3
Mon but est de connecter ce PC aux machines afin d'y vérifier une données (à savoir si la pièce est bonne ou non), pour pouvoir finaliser le produit.
Dans le principe ça fonctionne pas mal. Sauf que, une fois les recordsets (1 pour chaque machine: RS1,RS2,RS3) ouvert, je ne vois pas les données ajoutées (par les machines) après l'ouverture des bases (sur le PC).
Je déclare puis ouvre les bases à l'ouverture du soft:
DBS.DB1.ConnectionString = "chemin database"
DBS.DB1.Open
Set cn1 = DBS.DB1
Set RS1 = New Recordset
RS1.Open "Dataposte", cn1, adOpenDynamic, adLockOptimistic, adCmdTable
puis je refais:
Set RS1 = New Recordset
RS1.Open "Dataposte", cn1, adOpenDynamic, adLockReadOnly, adCmdTable (idem pour RS2 et RS3)
tous les 2min, pour pouvoir faire une "mise à jour" des bases. Mais ce principe prend 10s à chaque fois.
Pourtant, j'ai déclarer le CursorType en dynamique, c'est là où je comprends pas pourquoi je ne vois pas les données ajoutées après l'ouverture du recordset.
en espérant que cette explication soit plus clair
Merci d'avance
lequel peut par contre être executé en mode asynchrone, ce qui ferais que ton application de serait pas bloquée pendant le refresh (un évènement t'avertit de la fin du refresh)
goldoyaxx
Messages postés5Date d'inscriptiondimanche 28 janvier 2007StatutMembreDernière intervention25 avril 2008 21 avril 2008 à 15:52
désolé pour le retard, mais j'étais en plein installation de ce soft.
Donc le problème du temps de connexion est toujours là.
Mon code n'est pas équivalent à un RS1.Requery. Mais en effet, ça pourrait résoudre qlq soucis à ce niveau...
Pour le moment, le new recordset et le open est exécute toutes les 5 minutes, le flux des pièces le permet.
J'ai aussi remarqué que le temps d'accès aux PC des machines sont très long, c'est peut-être pas dû aux bases elles-mêmes.
Cramfr
Messages postés160Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention 8 juillet 2008 24 avril 2008 à 10:36
Bonjour,
Ce que j'ai pu remarqué c'est que la connection est ce qui a de plus long. le recordset, en revanche, est relativement cours selon si il est utilisé correctement.
si tu laisses ouvert tes 3 connections au démarrage et que tu refais tes recordsets peut-être va tu gagné du temps...