Exporter résultat d'une reqûete dans un *.csv, problème d'accent

Résolu
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 2 févr. 2011 à 12:09
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 4 févr. 2011 à 05:51
bonjour, voilà j'ai trouvé un code permettant à partir d'une requête SQl de remplir un fichier CSV. Cependant, comme toujours, les accents posent problème :

        Dim StrSQL As String
        Dim enreg As SqlDataReader

        'sauv client
        StrSQL = "SELECT * from matable"
        enreg = reader(StrSQL) 'fct qui renvoi un reader rempli
        If enreg.HasRows Then
            Dim CSVfile As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Sauvegarde\test_1.csv"
            Dim sw As New StreamWriter(CSVfile, True, New _ System.Text.UTF8Encoding)
            Dim I As Integer
            Dim iCol As Integer
            iCol = enreg.FieldCount
            sw.Write("N°")
            sw.Write(";")
            sw.Write("Nom")
            sw.Write(";")
            sw.Write("Prénom")
            sw.Write(";")
            sw.Write("Adresse")
            sw.Write(";")
            sw.Write("Code Postal")
            sw.Write(";")
            sw.Write("Ville")
            sw.Write(";")
            sw.Write("Teléphone")
            sw.Write(";")
            sw.Write("Fax")
            sw.Write(";")
            sw.Write("E-Mail")
            sw.Write(";")
            sw.Write("Test")
            sw.Write(sw.NewLine)
            Do While enreg.Read()
                Dim Sep As String = ""
                For I = 0 To iCol - 1
                    sw.Write(Sep)
                    If Not Convert.IsDBNull(enreg(I)) Then
                        sw.Write(Trim(enreg.GetValue(I).ToString))
                    End If
                    sw.Write("")
                    Sep = ";"
                Next
                sw.Write(sw.NewLine)
            Loop
            sw.Close()
            MsgBox("Fichier créé avec succès !!", MsgBoxStyle.Information + vbOKOnly, "Exportation")
        End If


j'ai essayé de changer : System.Text.UTF8Encoding en System.Text.unicodeencoding
les accents apparaissent mais le séparateur aussi (plus de champ par cellule). Or avec UTF8, chaque chose est dans sa cellule.
Pareil avec System.Text.UTF32Encoding
Et avec System.Text.ascciiencoding, les accents sont remplacés par "?" mais les champs dont dans leurs cellules.

Quelqu'un pourrait me dire comment règler ce problème ?
merci

5 réponses

AlKatou Messages postés 95 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 28 novembre 2017
2 févr. 2011 à 19:03
salut,

regarde ceci, cela règlera peut être ton problème


EXPORT SQL VERS CSV

AlKa
3
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
4 févr. 2011 à 05:51
PLus simple encore, en reprenant mon code :
il faut remplacer New system.text.utf8encoding par :
Encoding.GetEncoding(1252)
3
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
3 févr. 2011 à 15:01
Cela permet-il tout de même de donner des noms précis aux colonnes ? De plus, il me semble qu'en VB10, il y a plus de recordset.
0
AlKatou Messages postés 95 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 28 novembre 2017
3 févr. 2011 à 19:56
Salut,

pour ce qui est des noms précis de colonnes, il te faut simplement utiliser des alias de champs dans ta requête SQL à l'aide du mot-clé As.

exemple : SELECT DateNaiss AS [Date de naissance] FROM ....
L'entête de la colonne sera "Date de naissance"

maintenant, pour ce qui est de l'existence ou non du recordset, j'en sais rien car je n'utilise pas VB10.

mais à la base, le recordset fait partie d'une bibliothèque COM sous le nom de Microsoft DAO à ajouter en référence. recherche dans l'aide quelque chose du genre "Ajouter une référence".

si tout ce passe bien, tu trouvera la définition des recordset dans l'explorateur d'objets.

bonne continuation.


Alka
0

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

Posez votre question
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
4 févr. 2011 à 05:21
Ok merci à toi
0
Rejoignez-nous