Problème avec les types binaire (recordset de type ID)
deeps123
Messages postés12Date d'inscriptionjeudi 12 avril 2007StatutMembreDernière intervention17 avril 2007
-
16 avril 2007 à 15:08
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
16 avril 2007 à 21:24
Salut,
J'ai un programme pour extraire des données SQL server dans un fichier .csv
Il m'affichent bien tout les champs sauf les champs de types binaires, (les Id's de chaque lignes. Il me les remplace avec des '?' .
En mode debug je vois qu'il montre des carré et des point d'intérogation.
Est ce que c'est un problème de recordset? ou dois je convertir les binaires en autres formats avant de les exporter? ( ceci ne marchera pas comme le recordset lui même est érroné.
Voice le code de la connexion avec la base et la conversion en .csv
Set fs = CreateObject("Scripting.FileSystemObject")
Set sqlFile = fs.OpenTextFile(App.Path + "\Script_sql\test.sql")
sqlLine1 = sqlFile.ReadLine
Set connec = New ADODB.Connection
Set rst = New ADODB.Recordset
connec.Open "Driver={SQL Server};Server=" + serveurSql + ";Uid=" + utilisateurSql + ";Pwd=" + pwdSql + ";Database=" + BDDSql
connec.CommandTimeout = 0 'Annul la vérification du TimeOut de 30 sec
'Set rst = connec.Execute(sqlLine1)
rst.Open sqlLine1, connec, adOpenKeyset, adLockOptimistic
Set mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
dossierFileEcriture = fichierSourceIn & "\Ext" & "xxxxxxxxx" & annee & mois & jour
bool = DirExists(dossierFileEcriture)
If bool = True Then
DeleteDirectory (dossierFileEcriture)
MkDir (fichierSourceIn & "\Ext" & "xxxxxxxxx" & annee & mois & jour)
Else
MkDir (fichierSourceIn & "\Ext" & "xxxxxxxxx" & annee & mois & jour)
End If
DossierFinal = fichierSourceIn & "\Ext" & "xxxxxxxxx" & annee & mois & jour
'File_name = Dir(fichierSourceIn & "\Ext" & "xxxxxxxxx" & annee & mois & jour & "\Ext" & "xxxxxxxxx" & annee & mois & jour & ".csv")
file_name = DossierFinal & "\test.csv"
'file_name = "C:\test.csv"
Open file_name For Output As #3
'Close before reopening in another mode.
rst.MoveFirst
Do Until rst.EOF
line = ""
For i = 0 To rst.Fields.Count - 1
If IsNull(rst(i).Value) Then
Astring = Null
Else
Astring = CStr(rst(i).Value)
End If
line = line & sep & quote & Astring & quote
Next i
Print #3, line
'Mid(line, Len(sep) + 1)
rst.MoveNext
Loop
rst.Close
Close #3
sqlFile.Close
connec.Close
Set connec = Nothing
Set sqlFile = Nothing
Set fs = Nothing
ExportCsv = True
Exit Function
A voir également:
Problème avec les types binaire (recordset de type ID)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 16 avril 2007 à 21:24
Salut
Pour moi, une donnée binaire vaut 0 ou 1.
De quel type de donnée parles-tu ?
Bizarre en effet que sur un simple chiffre (en général pour un id) il affiche des symboles extra-standard-ascii.
Le code que tu donnes en exemple ne sert pas à grand chose dans la compréhension de ton problème.
Qu'y a t-il dans ta requète SQL ?
Quels sont les types de champ (tels que déclarés dans la DB) qui te posent problème ?
Sont-ce les données extraites du SQL (dans le RecordSet) ou bien celles du fichier CSV qui te posent problème ?
Dans ton code, tu remplaces Null par Null.
A quoi cela sert-il ?
Ne serait-ce là ton problème ?
If IsNull(rst(i).Value) Then
Astring = Null <=== Null n'est pas un mot clé de VB : Qu'y a t-il dans cette variable ?
Else
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on