Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBScript ADO ACCESS 2000

11 réponses
Avatar
---DGI972---
Bonjour,
Je dois mettre à jour un fichier txt qui possède des anciens N° de
clients.
On me fournit un fichier client de maj en txt en 3 colonnes:
ANCIEN NOUVEAU NOM
000007730 120352544 Mr TEST
000007731 120352548 Mme TEST
Je l'ai mis dans une base de donnée du type MS Access 2000
j'ai créée une connection ODBC sur la base DBDTEST.mdb
Avant de me lancer dans un Script de remplacement sur la totalité de
mon fichier, je me suis fait un petit bout de Script de test pour
comprendre et voir comment cela fonctionne
Voici le code

---8<---Début---8<---
Dim obj_Con
Dim obj_Rec
Dim ch_Source
Dim ch_SQL

set obj_Con=CreateObject("ADODB.connection")
ch_Client = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="
ch_Source = "C:\TEST\DBDTEST.mdb"
obj_Con.Open ch_Client & ch_Source
ch_SQL = "SELECT ANCIEN,NOUVEAU FROM DBDTEST WHERE ANCIEN ='000007730'"
set obj_Rec = obj_Con.Execute(ch_SQL)
Nouv = obj_Con.value
MsgBox "Le nouveau Numéros est: "& Nouv &" qui remplace l'ancien
000007730", vbInformation, "Nouveau CPTE"
obj_Rec.close
obj_Con.close
Set obj_Rec = Nothing
Set obj_Con = Nothing
---8<---Fin---8<---

Le pb c'est je n'arrive pas a récupurer la valeur du champ NOUVEAU
(j'ai pas compris comment cela fonctionne).
Suis sur la bonne voie ?
Mon fichier a corriger contient 1000 lignes à redresser je m'inquiète
sur les temps d'accés.

Merci d'avance

1 réponse

1 2
Avatar
Fred
Dans : news:,
---DGI972--- disait :

Merci fred de ton soutien moral et concret.
Effectivement il y avait encore des erreurs de variable:
j'ai beaucoup de mal de partir d'un feuille blanche et j'utilise des
anciens Script.
En enlevant le Resume next c'est la catastrophe:


Mais non, cela te permet de voir les erreurs (que je n'ai pas vues
d'ailleurs) ;-)

Erreur :Objet requis sur la ligne f1 = fso.GetFile (comprends pas j'ai
toujours déclaré mes variables comme cela).


C'est normal, tu utilises fso que tu crées ... plus tard !
Mets ton «set fso=CreateObject(....)» au début.

Erreur :BOF ou EOF est égal à True ou l'enregistrement a été suprimmé
sur la ligne obj_Rec.MoveFirst.


Bon, là visiblement, c'est l'erreur que je supposais ne jamais arriver !
La requête n'a rien renvoyé donc le MoveFirst n'a pas de sens.
Cela peut aussi venir d'une erreur dans l'extraction de l'ancien numéro.
Vérifie ta formule Mid(lct,1,2) avant toute chose.
Sinon, pour éviter le MoveFirst sur un RecordSet vide tu peux écrire

If not obj_Rec.EOF Then
obj_Rec.MoveFirst
'Suite du traitement

Else
MsgBox "Le numéro : " & lct2 & " non trouvé dans la base"
End If

Mais le fait que la requête ne renvoie rien peut aussi provenir des
apostrophes que j'ai mis autour de lct2. Si dans la base ces colonnes
sont de type numérique, il faut les enlever, ce qui donnerait :
Set obj_Rec = obj_Con.Execute(ch_SQL & lct2 )

Pense aussi à écrire ton programme progressivement.
Dans un premier temps, tu peux peut-être te contenter d'écire dans le
fichier de sortie les numéros à changer (par exemple). En écrivant tout
en une seule fois tu augmentes la difficulté.



--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

1 2