Récupération d'une chaine de caractère en VB

slyv44 Messages postés 4 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004 - 8 déc. 2004 à 17:50
imad_686 Messages postés 2 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 6 mai 2005 - 2 mai 2005 à 21:24
Bonjour,

J'essais de récupérer des données dans une tables foxpro (dbf) depuis un VBscript. Mais pour certains champs je ne récupère que le premier caractère. J'ai essayé de plein de façon mais sans succés.
Voici mon code source :

set objconnex = createobject("ADODB.connection")
objconnex.open "trend3"
Const PATH="c:"

'Ouverture du fichier
Set bmw = CreateObject("Scripting.FileSystemObject")
Set createText = bmw.CreateTextFile(PATH & "dbVirusLog.txt")

reqmail="SELECT login from dbVirusLog;"
set resmail= objconnex.execute(reqmail)
For i = 0 to resmail.Fields.Count - 1
createText.write resmail(i).Name & ";"
Next
createtext.writeline " "

Do While Not resmail.EOF
For i = 0 to resmail.Fields.Count - 1
createtext.write replace(resmail(i).value,chr(0),"") & ";"

Next
createtext.writeline " "
resmail.MoveNext
Loop

et dans le fichier resultat j'obtiens quelque chose comme ça :
uid;log_type;login;found_date;virusname;infectfile;
bd8cae05-d090-4a4e-ac46-0016b9cc7b53;1;s;1101137809;ADW_EXACTSER.A;;

alors que si j'ouvre le fichier dbf avec notepad j'ai ça :

UID OG_TYPE LOGIN FOUND_DATE VIRUSNAME INFECTFILE
bd8cae05-d090-4a4e-ac46-0016b9cc7b531s g u i g u i 1101137809 ADW_EXACTSER.A e x d l 1 . e x e

Il y a donc des champs qui ne passent pas : login et infectfile entre autre.

J'espère que quelqu'un à un tuyau.
Merci d'avance !

7 réponses

ThierryPerretier Messages postés 103 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 6 juillet 2006 1
8 déc. 2004 à 18:56
Bonjour,
ça ressemble à des champs contenant des caractères UNICODE (2 octets par caractères)

Ta connexion "Tend3" utilise un driver ODBC.

Je viens de faire un essai, il n'y a pas ce problème en utilisant le driver VFPOLEDB.DLL
(à télécharger sur http://msdn.microsoft.com/vfoxpro/)

objconnex.Open "Provider=vfpoledb;Data Source=c:\dossier"
slyv44 Messages postés 4 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004
9 déc. 2004 à 10:40
Merci de t'as réponse!

J'ai mis en place le driver vfpoledb et j'ai utilisé la ligne de connexion que tu m'as conseillé:
objconnex.open "Provider=vfpoledb;Data Source=C:\HTTPDB"

et j'obtiens ça :
login;
s  x ;
j  x ;

J'ai l'impression qu'il y a des caractères "alacon" qui m'empêche de récupérer la fin de la chaine.

Si vous avez des pistes.
ThierryPerretier Messages postés 103 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 6 juillet 2006 1
9 déc. 2004 à 11:15
Je viens de ré-essayer, effectivement avec vfpoledb v8 SP1, ça ne marche pas, mais j'avais vfpoledb V9 beta installé sur mon poste (et ça marche !!!)

Sinon, en demandant à Foxpro d'effectuer la conversion, il n'y a plus de problème, quelque soit la version de vfpoledb.

SELECT ChrTran(login,Chr(0),'') as login from dbVirusLog
slyv44 Messages postés 4 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004
9 déc. 2004 à 11:35
Wahou!!!
J'ai utilisé la deuxième méthode
SELECT ChrTran(login,Chr(0),'') as login from dbVirusLog

et ça marche nickel !
Je te remercie beaucoup de ton aide!!

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

Posez votre question
slyv44 Messages postés 4 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004
10 déc. 2004 à 15:13
Bon j'ai crié victoire un peut trop vite ...

La manipulation avec Chrtran marche pour certains champs mais il m'en reste qui ne veulent s'afficher. J'ai aussi essayé Strconv mais sans succés. Je me retourne donc vers ta première solution qui est d'utiliser les drivers oledb de la version 9. Mais je ne les trouve pas sur le site en téléchargement, il n'y a que la version compléte de foxpro 9. Donc si tu peux m'indiquer comment me procurer ces drivers, ça m'interesserai.

Merci d'avance
ThierryPerretier Messages postés 103 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 6 juillet 2006 1
10 déc. 2004 à 16:43
Télécharges le fichier VFP9BETA.exe, le lancer et effectuer la décompression des fichiers d'installation de vfp9.

Le fichier vfpoledb.dll se trouve dans le sous-dossier "program files\common files\ole db".

Attention, il s'agit d'une version béta, à n'utiliser que pour faire des tests.
imad_686 Messages postés 2 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 6 mai 2005
2 mai 2005 à 21:24
imad mla
Rejoignez-nous