Partage
  • Partager sur Facebook
  • Partager sur Twitter

Trie de dates avec OleDB - Excel en C# - V.S

Sujet résolu
    21 avril 2021 à 18:11:07

    bon bah déjà dateout est de type string, donc on ne peut pas le comparer avec un DateTime, donc pas de #, un toString(), et peut-être des guillemets simple autour:

    dv.FilterRow=$"[dateOut]='{DateTime.Now.addMonths(-1).ToString("dd/MM/YYYY")}'"



    • Partager sur Facebook
    • Partager sur Twitter
      21 avril 2021 à 19:10:14

      C'est le genre d'embrouille qui se passe quand on ne type pas "fortement" les colonnes. :-°

      Si on reste sur de la colonne "String", je pense qu'il faut encadrer la chaîne de caractère avec des quotes comme l'indique @umfred (ou peut-être des guillemets/double quote).

      S'il y a toujours des problème de cast en DateTime, ça doit venir des colonnes de la DataGrid et non de la DataView.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        22 avril 2021 à 9:18:41

        Un grand merci à tous les deux ! 

        Ça fonctionne, alors bacelar j'ai repassé le type de ma colonne en DateTime, et bizarrement là où ça faisait une erreur avant cela ne le fait plus. C'était la raison pour laquelle nous sommes passés en typeof(string).

        Effectivement la solution de umfred fonctionne, attention à un détail il s'agit de dv.RowFilter et "dd-MM-yyyy" avec les y en minuscule sinon ça change de format. 

        Il me reste juste un détail, une interrogation. J'aimerais pouvoir séparer le filtre, de l'affichage complet, pour appeler ma fonction affichage complet dans un private void button1, et pouvoir appliquer le filtre de ce même affichage dans un autre private void button2.

        Seulement je ne sais pas quoi passer en paramètre pour pouvoir récupérer le fichier dans les deux fonctions sans pour autant réouvrir le fichier etc...

        Avez-vous une dernière idée ?

        Merci 

        • Partager sur Facebook
        • Partager sur Twitter
          22 avril 2021 à 11:38:06

          Merci pour ce retour.

          Comme je l'ai déjà écrit, le fichier Excel n'est qu'une source de données.

          Vous pouvez charger vos données au début de votre programme via le DataAdapter et supprimer le fichier après sans aucun problème.

          Vos données sont déjà bien au chaud dans la RAM, dans le DataSet.

          Donc il faudrait que votre programme ne se serve que du DataSet tout du long de son exécution, sauf peut-être à des endroits spécifiques comme les sauvegardes des modifications.

          Mais j'ai l'impression que vous ne modifiez pas les informations.

          Le DataRow ne fait que filtrer ce qu est visible via la DataView.

          Toutes les données du fichier Excel sont déjà dans la/les Datatable(s) de votre DataSet.

          Si le fichier ne change pas, vous n'avez pas besoin de recharger le DataSet, même si les conditions/règles d'affichage changent.

          C'est juste la configuration de la ou des DataView qui sont à modifier.

          Vous pouvez très bien réserver la DefautView du DataTable pour l'affichage et utiliser d'autres DataView sur la même DataTable si vous ne voulez utiliser qu'une partie des données dans vos règles business.

          >J'aimerais pouvoir séparer le filtre, de l'affichage complet

          Pas de problème, vous pouvez utiliser autant de DataView que vous voulez sur une même DataTable.

          Comme vous parlez de boutons, je vous conseille chaudement de séparer la partie affichage de votre programme de la partie métier.

          Les données seront dans le DataSet/ la DataTable, mais les vues seront spécifiques à chaque partie du programme (GUI/Métier).

          Vous ne devez donc pas ré-ouvrir le fichier pour recréer encore et encore un nouveau DataSet, vous devriez passer ce DataSet, créer une fois au début de l'exécution, voire utiliser des DTO pour éviter que des parties du code de Gui ne modifie les données dans le DataSet, car ce n'est pas sont rôle.

          Faire un découpage en couche à posteriori, c'est un peu compliqué, mais faire en sorte de respecter ces règles d'isolation pour éviter la casse, c'est jouable à tout moment.

          Si c'est pas clair, postez-nous un bout de code qui pose problème et on essayera de vous montrer la démarche.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            22 avril 2021 à 13:29:56

            C'est bon ça fonctionne ! J'ai effectivement sorti le DataSet, et j'ai passé en paramètre formel ce DataSet dans les différentes fonctions. Parmi les différentes fonctions il y en a une qui se charge d'établir la connexion avec le fichier excel, une fonction qui se charge d'afficher le fichier complet, et une dernière fonction pour l'affichage partiel selon les dates.

            Je ne manquerai pas d'afficher votre aide lors de mon oral final qui regroupe des anciens projets et celui-ci.

            Merci à vous et bonne fin de semaine :D .

            • Partager sur Facebook
            • Partager sur Twitter

            Trie de dates avec OleDB - Excel en C# - V.S

            × 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