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

C# Discussion :

Bindingsources et dates "null"


Sujet :

C#

  1. #1
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut Bindingsources et dates "null"
    est t il possible de transferer a une base de donnée une valeur "null" pour une date.

    Visiblement le composant DateTimePicker ne permet pas ce genre de choses via sa property Value.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  2. #2
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    Plusieurs possibilités pour un null vers un type date :

    - les types nullable, mais je ne suis pas sur que cela fonctionnera avec le DateTimePicker, ça reste à tester...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime? maDate = null;
    - DateTime.MinValue, quand tu récupères de ta base de données, si la valeur dans la db est null, tu le mets sur MinValue (ou sur toute autre valeur) mais bon c'est pas la bonne solution je trouve, juste un tips utilisé quand on connais pas trop les types nullables.
    ****** Analyse/Développeur .Net

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    je cherhce a faire l'inverse : Effacer uen date du datetime picker (ca ok) et transferer a la base la valeur "null" or, la property "value" est un cardinal (entier positif) donc a priori non nullable car toutes les valeurs sont associées a une date (recalculé)

    En gros on souhaite depuis l'interface envoyer "null" a la base.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    oops désolé j'avais mal lu ^^

    Il me semble qu'il y a moyen de mettre une checkbox au DateTimePicker et si il n'est pas checked tu peux facilement dire que c'est un null à envoyer... non?
    ****** Analyse/Développeur .Net

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    ben justement, la est tout le probleme.
    Comment transmettre au Bindingsource/dataset la valeur "null" depuis un composant, sacahnt que derriere tout ca, dans ma base SQL, c'est une variable de type "DateTime" qui est utilisé, a la fois en tant que parametre d'un PS et d'un type de colonne de table.

    Je maitrise tres mal la chaine BindingSource/DataSet/TableAdapter ....
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  6. #6
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    Je vois que tu parles de TableAdapter, tu dois certainement donc utiliser des dataset typés.
    La valeur null est représenté par System.Data.DBNull.Value
    Lors de la définition de ton DataSet, le designer de VS a dû te générer une méthode te permettant de mettre à NULL pour chaque champ qui peut-être null.
    Ainsi il te suffit pour l'attribution de la valeur de faire:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonDataSet.TonDataRow rowSelectionne = ((DataRowView)tonBindingSource.Current).Row as TonDataSet.TonDataRow;
    rowSelectionne.SetTonChampDateTimeNull();

    Bye

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Mouais .... hard mais pkoi pas.

    Apres tout si j'ai pas trop le choix
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  8. #8
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Oui je reconnais volontiers que cette solution n'est pas terrible mais elle doit être utilisé avec le composant DateTimePicker fournit dans le framework avec lequel il n'est pas possible de définir une valeur nulle. Si évidemment tu réalises ton propre composant (j'ai vu que c'est le sujet d'un autre post que tu as ouvert), tu peux gérer différemment l'affectation de System.Data.DBNull.Value au champ bindé.

    Bye

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par zoaax Voir le message
    Oui je reconnais volontiers que cette solution n'est pas terrible mais elle doit être utilisé avec le composant DateTimePicker fournit dans le framework avec lequel il n'est pas possible de définir une valeur nulle.
    Un type valeur ne peut pas avoir de valeur null; DateTime est un type valeur, donc DateTimePicker ne peut avoir de valeur null pour la propriété Value.

    Ergo
    , DateTimePicker n'a pas grand chose à voir avec cette contrainte.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  10. #10
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Je suis d'accord mais ce qui est dommage avec le DateTimePicker dans le cas où la valeur est bindée et que le champ associé est nul c'est qu'une date est quand même affichée. Je suis d'accord que Value étant de type DateTime celle-ci ne peut-être nul. Ce qui aurait été bien c'est que la valeur ne soit pas affichée

    Bye

  11. #11
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    A vrai dire, comme j'avais quelques minutes à perdre (en attendant de nouvelles SFG qui tardaient, mais houspiller les AMOA un 2/1, çà se fait pas ) j'ai fait quelques essais avec le Dtp, et ce contrôle me laisse une impression de "pas vraiment fini". Notamment, on ne peut pas lui faire afficher "rien" via la propriété Text même si celle ci est en lecture/écriture. De plus, il se remet à la date du jour parfois sans trop de raisons et n'admet pas une date antérieure à 1753 (va savoir pourquoi .... au mieux, on aurait compris qu'il ne prenne pas de date antérieures au début du calendrier grégorien - donc 4/10/1582 - puisque il ne gère que ce dernier, mais visiblement c'est l'année suivant le début du calendrier grégorien en Grande-Bretagne -1752- qui a été pris - 1753 correspond aussi au début de ce calendrier en Suède; le Dtp a-t-il étét développé par un suédois ou par un finlandais qui a voulu laisser une marque "amusante" ? ), même si on positionne le MinDate à DateMin. (et, le pire, c'est que si on met ensuite le Value à DateMin, il envoie une exception).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  12. #12
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Bravo pour cette analye plutot complete

    De toutes vos reponses ici et la .. j'ai retenu celel ci qui me semble la plus propre : Voir le site

    Ceci dit, j'aimerais bien monter mon propre composant "DateTimePicker" a partir d'une simple combobox ou assimilé (edit+dropbutton) mais j'ai du mal a afficher le month calendar.

    Comment pourrais-je deriver un combobox et y afficher un month calendar en tant que drop box ?
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

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