IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Base Access à dataset : type de données non respecté


Sujet :

Dotnet

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut Base Access à dataset : type de données non respecté
    Bonjour,

    Je n'arrive pas à expliquer ce souci : j'ai une bdd access avec une colonne de date, lorsque je charge un dataset le format de données dans cette colonne passe de Date à Double.

    J'ai vérifié dans Access avec la requête qui charge le dataset et la fonction typename : mes données sont bien de type date

    Mais une fois chargé dans le dataset, celui-ci les convertit en type Double.

    J'ai essayé de convertir avec Cast, Cdate et FormatDateTime mais le système m'indique que la conversion ne peut se faire.

    Une idée ?

    Le code de chargement de mon dataset :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Public Sub RecherchePret()
     
            Dim requete As String = "Select * FROM archivage LEFT JOIN pret ON archivage.Num = pret.Num_Archives where pret.ID = " & Modif_pret.Txt_pret.Text & ""
     
            Try
     
                If ConnexionAccess.State = ConnectionState.Closed Then
                    ConnexionAccess.Open()
                End If
     
                Commande = New OleDbCommand(requete, ConnexionAccess)
                DataSetAdaptateur = New OleDbDataAdapter(Commande)
     
                Try
                    DataSetArchives.Clear()
                    DataSetAdaptateur.Fill(DataSetArchives, "Archivage")
                    Resultats.DGV_Resultats.DataSource = DataSetArchives.Tables("Archivage")
                    Resultats.Show()
     
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
     
            Catch ex As Exception
                MessageBox.Show(ex.Message)
     
            End Try
     
            ConnexionAccess.Close()

  2. #2
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 837
    Points : 975
    Points
    975
    Par défaut
    As-tu essayé en configurant ton Dataset sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataSetArchives.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Bonjour,


    a quoi sert cette ligne ? je ne connaissais pas ; quoiqu'il en soit, après l'avoir ajouté, j'ai toujours l'erreur. C'est vraiment bizarre car c'est pourtant bien une date qui apparait dans le datagridview

  4. #4
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 837
    Points : 975
    Points
    975
    Par défaut
    Ca sert à indiquer dans le cas où la table Archivage n'existe pas encore dans le Dataset de la créer avec un schéma respectant la structure de la table définie dans la BDD.
    A quoi correspond Resultats.DGV_Resultats ?
    S'il s'agit de ton DataGridView, tu pourrais peut être passer par l'intermédiaire d'un BindingSource dans un premier temps plutôt que de binder direct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BindingSource bindingsourceArchivage = new BindingSource();
    bindingsourceArchivage.DataSource = DataSetArchives;
    bindingsourceArchivage.DataMember = "Archivage";
    ...
    Resultats.DGV_Resultats.DataSource = bindingsourceArchivage;
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Malheureusement ça ne fonctionne toujours pas

  6. #6
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 837
    Points : 975
    Points
    975
    Par défaut
    Dans ce cas, tu peux faire un projet test avec le designer WindForms de création de Dataset typé et voir comment les colonnes de type date sont définies.
    En faisant glisser les définitions de tables dans le designer de l'interface utilisateur, en ayant défini au préalable les types des controles à générer (DataGridView), tu obtiendra le code de définition.
    C'est une piste à étudier
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si jamais Access traite les dates de la même façon qu'Excel, le "phénomène" est tout à fait normal. En effet, les dates d'Excel ne sont que des nombres et le nombre 1 correspond au 1er janvier 1900 (Windows par défaut) ou au 1er janvier 1904 (Mac ou une option pour Windows).

    Il me semble, et je dis bien il me semble, que si tu mets ta colonne "d'importation" en type String, tu récupères ta date en texte et tu peux probablement la caster en date.

    Pour la "mécanique" des dates sans Office.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  8. #8
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Même en string ça ne passe pas, Vb continue de m'indiquer "La conversion du type 'Double' en type 'Date' n'est pas valide." alors que concernant mes autres champs dates y a pas de soucis, ceux ci sont bien pris en compte par le datagridview.

    En gros ce que fait cette partie de mon programme :
    - Le user affiche des dossiers en cours de prêt
    - Il clique sur le bouton "notifier un prêt", le système lui indique que le prêt qu'il a sélectionné est actuellement en cours, et l'invite à clôturer le prêt sélectionné s'il le désire
    - une fenêtre de modif de pret apparait alors, je charge dans deux DateTimePicker, à partir du datagridview, la date de début de prêt (celle qui merde) et la date de fin de prêt positionné par défaut à la date du jour. J'enregistre, la bdd est réactualisé. Pas de soucis jusque là.
    - Le datagridview affiche maintenant les données qui étaient chargées dans la fenêtre précédente, si le user clique sur le bouton "Modifier données d'un prêt" ; la même fenêtre que précédemment s'affiche et est alimenté à partir des données du datagridview mais pour la date de début de prêt, j'ai l'erreur : "La conversion du type 'Double' en type 'Date' n'est pas valide."
    Alors que je n'ai aucun souci avec la date de fin de prêt, qu'elle reste par défaut ou qu'elle soit modifiée à une autre date, ce pb me prend la tête ... surtout que tout semble correct également dans Access avec les dates au format date (typename me le confirme)

  9. #9
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Ok au temps pour moi, j'avais caché une colonne mais je n'en ai pas tenu compte dans la suite du code, ce qui fait que mon code chopait un ID plutôt qu'une date, d'où l'erreur. Désolé d'avoir fait perdre votre temps et merci quand même des réponses apportées

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. type de données non valide dans un cast
    Par psyka dans le forum PL/SQL
    Réponses: 3
    Dernier message: 05/03/2009, 11h05
  2. type de données non standard
    Par lity7 dans le forum Services Web
    Réponses: 1
    Dernier message: 03/09/2008, 14h46
  3. <Type de données non pris en charge>
    Par Alex35 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/12/2007, 12h38
  4. [CRXI] Types de données non compatibles
    Par KaNos_Isterik dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 23/03/2007, 11h01
  5. Réponses: 4
    Dernier message: 01/07/2005, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo