Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VB.NET/WPF] Création de fichier

Sujet résolu
    17 mars 2021 à 11:06:10

    Bonjour, 

    Je viens vers vous, car j'ai un problème et malgré toutes mes recherches impossible de trouver une réponse à mon problème. 

    Tout d'abord quelques infos : Je travaille sous Visual Studio 2017 avec la version Framework .NET 4.0.

    Lors du chargement de mon programme, je créer différents fichiers qui seront utilisés pour de l'auto implémentation dans un TextBox. 

    Le voici :

        Public Function LoadCheckDate() As AutoCompleteStringCollection
            Try
                ConnectBdd()
                Dim oledbReaderQ As OleDbDataReader
                Dim list As New List(Of String) From {"Fichier1", "Fichier2", "Fichier3", "Fichier4", "Fichier5", "Fichier6"}
    
                For Each item As String In list
                    If System.IO.File.Exists("SourceAuto\" & item & ".txt") = False Then
                        SqlQuery = "SELECT DISTINCT " & item & " FROM v_AlarmEventHistory2 WHERE (" & item & " LIKE '%')"
                        oledbCmdQ = New OleDbCommand(SqlQuery, MyConnection)
                        oledbReaderQ = oledbCmdQ.ExecuteReader()
                        File.Create("SourceAuto\" & item & ".txt").Dispose()
                        Do While (oledbReaderQ.Read())
                            MsgBox("SourceAuto\" & item & ".txt" & oledbReaderQ.Item(i))
                            My.Computer.FileSystem.WriteAllText("SourceAuto\" & item & ".txt", oledbReaderQ.Item(i) + Environment.NewLine, True)
                        Loop
                        oledbReaderQ.Close()
                        oledbCmdQ.Dispose()
                    End If
                Next
                MyConnection.Close()
            Catch ex As Exception
                MsgBox("Erreur")
                MsgBox(ex.Message)
                MsgBox(ex.ToString)
            End Try
        End Function



    Donc, pour les 5 premiers fichiers tout fonctionne parfaitement et le 6ème non. La valeur du premier oledbReaderQ.Item(i) pour le fichier 6 est 999.

    J'ai un moment cru qu'il s'agissait du fait que ça soit des nombre, mais le fichier 3 est également composé de nombre.

    J'ai pour message d'erreur : 

    La Conversion de la chaîne ” “ de type 'Double' n'est pas valide.

    J'espère avoir donné assez d'éléments pour que vous m'aidiez et je vous remercie d'avance pour vos réponses .

    -
    Edité par Doristos 17 mars 2021 à 11:06:50

    • Partager sur Facebook
    • Partager sur Twitter
      17 mars 2021 à 17:07:39

      il manque l'info sur la ligne sur laquelle se produit l'erreur. Mais ça semble être un problème de format.

      Essaie en remplaçant le '+' de la ligne 15 par un '&' pour la concaténation (comme sur la ligne 14)

      • Partager sur Facebook
      • Partager sur Twitter
        17 mars 2021 à 17:22:29

        Salut umfred,

        Et bien encore merci à toi, c'était effectivement le "+" à changer en "&". 

        Je ne comprends pas trop pourquoi ça fonctionnait pour le fichier3 et pas le fichier6. Peut-être du fait que le fichier 3 soit des décimal ? 

        Bonne soirée. 

        • Partager sur Facebook
        • Partager sur Twitter
          17 mars 2021 à 17:28:17

          A moins que votre table/vue "v_AlarmEventHistory2" ait 999 colonnes avec des noms de colonne aussi absurdes que "Fichierxxx", votre requête n'a aucun sens, et encore.

          Déjà, arrêtez de bricoler une requête SQL avec des concaténations de chaines et faites au moins des requêtes préparées, si vous ne voulez pas utiliser un ORM.

          On oublie l'utilisation des DataReader, obsolètes depuis plus de 15 ans, utilisez un DataAdapter/DataSet, si vous êtes allergiques aux ORMs.

          On arrête de faire joujou avec les "Close" et autres "Dispose" et utilisez l'instruction "Using", SVP :

          https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/using-statement

          Et on dégage ce "Catch ex As Exception", FISSA !!!

          Et je ne vois pas l'intérêt de votre bidouille par rapport à un simple DataSet qui peut récupérer ses données aussi bien d'un jeu de fichier que d'une base de données.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            17 mars 2021 à 17:57:44

            J'ai oublié de signaler/demander d'où vient le i de item(i), il n'est initialisé nul part dans le code fourni (qui est peut-être une version allégée du vrai code)
            • Partager sur Facebook
            • Partager sur Twitter
              19 mars 2021 à 10:53:36

              Bonjour bacelar,

              J'ai modifié le programme ci-dessus pour expliquer mon problème avec les fichiers, les colonnes n'ont évidemment pas ce genre de nom.

              J'en prends note et compte modifié mon programme. Et je vais également virer ce catch, je l'avais mis pour essayer de comprendre mon problème en affichant le message d'erreur. 

              Bonjour umfred,

              Le "i" s'agit d'une variable global, pour éviter de répéter le "i" à chaque fois que je fais une boucle. 

              • Partager sur Facebook
              • Partager sur Twitter
                19 mars 2021 à 11:39:47

                Doristos a écrit:

                Le "i" s'agit d'une variable global, pour éviter de répéter le "i" à chaque fois que je fais une boucle. 


                Très mauvaise pratique selon moi. Dans cette fonction, tu ne maitrises pas sa valeur, donc tu peux être en IndexError (tu ne l'utilises pas comme itérateur de boucle, ni tu ne l'initialises)

                Si ta fonction travaille sur un élément, passe le en paramètre. Si, comme ici, tu récupères toujours le même élément de la requête, utilise directement la valeur de cet élément (ici, ça doit être 0)

                • Partager sur Facebook
                • Partager sur Twitter

                [VB.NET/WPF] Création de fichier

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown