Problème avec les types binaire (recordset de type ID)

deeps123 Messages postés 12 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 17 avril 2007 - 16 avril 2007 à 15:08
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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
0
Rejoignez-nous