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

Windows Forms Discussion :

OleDBCommandBuilder n'update pas certain paramètre fixe


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut OleDBCommandBuilder n'update pas certain paramètre fixe
    Bonjour,
    J'ai un problème mon application, en voici le setup:

    1 bouton "Enregistrer"
    1 listbox qui contient des nom d'usager
    1 combobox qui contient l'année des activitées à afficher
    1 datagrid qui contient des activitées

    Les rangées du datagrid mimique ma base de données Access:
    ID - Identifie une activitée
    Usager - Identifie l'usager qui a faite une activitée
    Année - L'année de l'activitée
    Description - La descr.
    Points - Un nombre de points accordé pour l'activitée

    J'effectu une OleDBCommand, ou usagerID et annee sont des paramètres a ma fonction:
    SELECT ID, Usager, Année, Description, Points, Accepté FROM Activitées WHERE Usager = " & usagerID & " AND Année = " & annee

    J'assigne à un data adapter et crée un CommandBuilder. Je change le style pour cacher le numéro d'usager et le ID (eg: tableStyle.GridColumnStyles.Remove(hiddenColStyleUsager) ), étant donner qu'ils sont déjà afficher dans d'autres contrôles ou qu'ils sont automatiquement assigner une valeur par la base de donnée. Je les gardais dans ma requête car je pense que le commandBuilder en as de besoin pour faire la mise à jour automatique. Si je modifi une rangée qui existe déjà, tout fonctionne. Cependant, si j'ajoute une rangée et que je click sur "Enregistrer", le numéro d'usager est vide!

    Donc, j'ai deux questions:
    1) Que dois-je faire pour que le numéro d'usager soit automatiquement ajouter au insertion de ligne?
    2) Lorsque j'ajoute une rangée, est-ce possible de définir une valeur par défault pour les certaines colonnes?

    Merci,

    David

  2. #2
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    dans ta base donnee access:

    1) autoincrement.
    2)default value: ta valeur par default.

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Citation Envoyé par zeavan Voir le message
    dans ta base donnee access:

    1) autoincrement.
    2)default value: ta valeur par default.
    Bonjour Zeavan,
    Merci de ta réponse, cependant:

    1) Auto-inc. ne fonctionnerais pas, car le numéro d'usager est une clé qui fait référence au UsagerID (clé primaire) dans la table Usagers. Je dois donc spécifié le (bon) numéro à insérer, mais tout ce que j'ai essayé jusqu'à date ne fonctionne pas.

    2) Je suis aller dans Access, en mode création, et j'ai essayé de donner des valeur par défault, mais lorsque dans mon datagrid j'ajoute une nouvelle ligne, les valeurs par défault que j'ai défini ne sont pas afficher. Le datagrid affiche "(null)" dans chaque colonne.

    Merci

    David

  4. #4
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    Voyons si j'ai bien compris.

    Tes resultats sont affiches correctements sur ton grid , mais lors d'un edit ou d'une insertion , tu t'apercois que le champ userID est null, ce qui te lance une exception.

    1er question, as tu bien databinde ton userID dans ton datagrid.

    si oui , est-il defini comme datakey name propriete de ton datagrid.

    si non fait le


    essai d'etre un peu plus clair sur le scenario.
    par example:
    j'ai effectivement les donnes qui s'affichent , mais lors d'un update une erreur se produit sur le champ userID.

    sinon pour la valeur par defaut tu peux tres bien definir l'une de tes colonnes comme template colonne et la bas inserer un text box avec comme text propertie ta valeur par default.

    en esperant avoir bien cerne ta question.

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Voici le flow d'actions:

    1) L'application load et rempli un listbox des differents "centre" de la compagnie
    2) L'usager click sur un centre, ce qui rempli un autre listbox avec toute les usagers qui sont dans le centre sélectionner.
    3) L'usager click sur un usager, ce qui rempli le datagrid des activitees pour l'usager selectionner.

    Lorsque l'usager fait les actions 1-2-3, la liste d'activitées (datagrid) est correctement afficher. Si je fais un edit d'une des lignes existantes et que j'enregistre les changements, sa fonctionne sans probleme.

    Si je supprime une ligne dans le datagrid et que j'enregistre mes changements, sa fonctionne aussi sans probleme.

    Cependant, si j'ajoute une ligne dans le data grid, un des champs cacher (le champ "Usager": Integer, qui refere a l'information sur l'usager dans une autre table) est vide lorsque je fais l'enregistrement. Cependant, je voudrais qu'il ait la valeur (sans que l'usager ait a la selectionner de nouveau) du listbox qui affiche la liste d'usager (qui contient 2 champs: ID et Nom). Lors du insert, je voudrais que le champs du datagrid "Usager" soit automatiquement la valeur de la propriete SelectedValue du listbox Usager.

    En ce qui attrait au databinding, j'en fais aucun. Peux-etre est-ce le probleme?

    David

  6. #6
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    oksi tu databind ton grid a une datasource tu a le choix sur plusieurs type de parametre, session parametre, default , .. et control parameter c'est celui qu'il te faut ensuite tu choisis le ID de ton control et normalement la propriete selected value (c'est celle choisis par defaut pour ton listbox).


    maintenant si tu n'utilises [as de de datasource.

    en quoi il t'es difficile de specifier que ton parametre dans ton code pour user est le selectedValue de ta liste box.

    pour ton grid tes insertions sont implementer comment , a l'aide de class , de datasource, de sql query , dataset???

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/08/2006, 19h24
  2. Réponses: 10
    Dernier message: 10/05/2006, 22h04
  3. [Forms 6i] Update -> Pas de sortie en Exception
    Par macben dans le forum Oracle
    Réponses: 14
    Dernier message: 27/12/2005, 12h17
  4. Commande Update... vider certains champ dans table.
    Par angelevil dans le forum ASP
    Réponses: 3
    Dernier message: 04/05/2005, 21h08
  5. Réponses: 2
    Dernier message: 21/04/2005, 17h09

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