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

VB.NET Discussion :

Variable Date mal renseignée.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 117
    Par défaut Variable Date mal renseignée.
    Bonjour,

    Je remplis un DataGridView de 2 façons différentes.

    1 - Si des enregistrements sont présent ds ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ReqSQL = "SELECT * FROM TB_DEPENSES WHERE ID_DENOM=" & ComboBox1.SelectedValue & " AND EXTRACT(MONTH from DATE_DEP) = " & ComboBox2.Text & " AND EXTRACT(YEAR from DATE_DEP) =" & ComboBox3.Text
    myCommand = New FbCommand(ReqSQL, connection)
    Dim myreader As FbDataReader = myCommand.ExecuteReader
    Do While myreader.Read()
                    DataGridViewDepenses.Rows.Add() ' Ajoute une nouvelle ligne
                    DataGridViewDepenses.Rows(Ligne).Cells(0).Value = myreader.GetDateTime(3) 'Date
                    DataGridViewDepenses.Rows(Ligne).Cells(1).Value = myreader.GetDouble(1) 'Tarif
                    Ligne = Ligne + 1
    Loop
    2 - Si il n'y a pas d'enregistrement ds ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataGridViewDepenses.Rows.Add() ' Ajoute une nouvelle ligne
    DataGridViewDepenses.Rows(Ligne).Cells(0).Value = DateTime.Now
    J'ai ensuite un bouton qui me permet d'ajouter des lignes ds le DataGrid.
    Je récupère la date de la ligne précédente et je lui ajoute 1 mois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim DateDepense as Date
    Ligne = Ligne + 1
    DataGridView.Rows.Add()
    DateDepense = DataGridView.Rows(Ligne - 1).Cells(0).Value
    DateDepense = DateDepense.AddMonths(1)
    DataGridView.Rows(Ligne).Cells(0).Value = DateDepense
    DataGridView.Rows(Ligne).Cells(1).Value = DataGridView.Rows(Ligne - 1).Cells(1).Value
    Et c'est là que le problème apparaît.
    Si j'ajoute une ligne ds le DataGrid vierge ça fonctionne, par contre si mon datagid est déjà rempli grâce à ma requête la variable DateDepense est mal renseignée car DateDepense = #2/1/0001#

    Où est le problème

    Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Par défaut
    Bonjour,

    je pense que tu ne devrais pas t'embêter avec la variable Ligne.
    Tu devrais plutôt retourner l'index retourné par la méthode Add. Ainsi tu n'a pas à incrémenter ta variable Ligne.

    Pour l'ajout de ligne sur click d'un bouton, je pense que tu devrais faire ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim DateDepense as Date
    Dim ligne as integer
    ligne = DataGridView.Rows.Add()
    ' Je te conseille aussi de ne pas directement utiliser l'index de la colonne.
    ' Imagine que ta colonne change de place et t'es bon pour quelques erreurs
    ' Il faut donc plutôt utiliser le nom de la colonne 
    ' j'utilise aussi la classe Convert pour convertir Value qui est de type object en DateTime. A mon avis, ton problème venait de là.
    ' Je pense quand même qu'il faudrait faire différemment pour trouver la ligne précédente
    DateDepense = Convert.ToDateTime(DataGridView.Rows(ligne - 1).Cells(taColonne.ColumnName).Value)
    DateDepense = DateDepense.AddMonths(1)
    ' Idem pour le nom de la colonne
    DataGridView.Rows(Ligne).Cells(taColonne.ColumnName).Value = DateDepense
    DataGridView.Rows(Ligne).Cells(tonAutreColonne.ColumnName).Value = DataGridView.Rows(Ligne - 1).Cells(tonAutreColonne.ColumnName).Value
    Bye

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 117
    Par défaut
    Merci pour ton aide,

    Le probleme venait de l'incrémentation de ma variable ligne.
    J'ignorai qu'il etait possible de récuperer l'indexe ainsi.

    Merci encore

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

Discussions similaires

  1. Date mal ou pas renseignée
    Par Steubla dans le forum SAS Base
    Réponses: 6
    Dernier message: 15/10/2014, 11h12
  2. variable DATE en Globale
    Par jejam dans le forum SQL
    Réponses: 9
    Dernier message: 20/09/2006, 22h29
  3. initialisation d'une variable DATE
    Par olivll dans le forum Access
    Réponses: 4
    Dernier message: 25/07/2006, 11h57
  4. convertir une variable texte en variable date
    Par tafamilk dans le forum ASP
    Réponses: 2
    Dernier message: 12/08/2005, 01h01
  5. Réponses: 6
    Dernier message: 14/02/2005, 11h53

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