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 :

Methode find sur Dataset fortement typé


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut Methode find sur Dataset fortement typé
    Salut à tous, j'ai l'habitude de causer seul sur ce forum mais faite moi grace cette fois ci

    Voilà j'ai un dataset fortement typé (généré par Visual studio)
    je veux insérer une valeur dans une table de mon dataset
    par la methode find je retrouve la ligne adéquate dans ma table
    avec la propriété CodeTrscPh (en fait la colonne puisque fortement typé) je procède à l'affectation. message d'erreur : "la reference d'objet n'est pas defini à une instance d'un objet"

    le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim rw As New GesBourse.GesBourseDataSet.TransactionDataTable
    Dim rws As GesBourseDataSet.TransactionRow = rw.FindByCodeTrsc(CodeTransac)
    rws.CodeTrscPh = CType(Me.CodeTrscPhTextBox.Text, Long)
    (CodeTransac n'a aucun problème, j'assure qu'elle contient bien une valeur)
    j'ai fait le test suivant pour voir si l'affectation posait problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim rw As New GesBourse.GesBourseDataSet.TransactionDataTable
    Dim rws As GesBourseDataSet.TransactionRow = rw.FindByCodeTrsc(CodeTransac)
    msgbox(rws.CodeTrscPh)
    j'obtiens la même erreur.

  2. #2
    Membre averti
    Avatar de Rami
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 177
    Points : 330
    Points
    330
    Par défaut
    au debugger, verifies que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rw.FindByCodeTrsc(CodeTransac)
    te renvoies bien une valeure et pas nothing. (ce que semble indiquer les messages d'erreur)
    Ex Moderateur .Net

  3. #3
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    Tu as effectivement raison, rws renvoi "nothing". Pourtant la valeur recherchée est bien présente dans la table.

  4. #4
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    j'ai decomposé la création de rws comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim rw As New GesBourse.GesBourseDataSet.TransactionDataTable
    Dim rws As GesBourse.GesBourseDataSet.TransactionRow
    rws = New GesBourse.GesBourseDataSet.TransactionRow        
    rws = rw.FindByCodeTrsc(CodeTransac)
    rws.CodeTrscPh = CType(Me.CodeTrscPhTextBox.Text, Long)
    l'intellisense souligne la ligne de construction de rws et j'ai l'avertissement suivant:
    "Argument non spécifié pour le paramètre 'rb' de Friend sub new(rb as systeme.Data.DataRowBuilder)"

  5. #5
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    je continue mon soliloque

    j'ai parcouru le code du constructeur (new) de la classe TransactionRow dans le code (généré automatiquement) de la classe GesbourseDataset et j'avoue que je suis bleu.
    j'ai ajouté l'entête de classe si ça peut aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Partial Public Class TransactionRow
            Inherits Global.System.Data.DataRow
     
            Private tableTransaction As TransactionDataTable
     
            <Global.System.Diagnostics.DebuggerNonUserCodeAttribute()>  _
            Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder)
                MyBase.New(rb)
                Me.tableTransaction = CType(Me.Table,TransactionDataTable)
            End Sub

  6. #6
    Membre averti
    Avatar de Rami
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 177
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par stdebordeau Voir le message
    Tu as effectivement raison, rws renvoi "nothing". Pourtant la valeur recherchée est bien présente dans la table.
    le probleme viens plutot de la methode find que de la creation de rws m'est avis...
    si tu es sur des valeur textuelles vérifie les classique ( trim, casse, ... )
    Ex Moderateur .Net

  7. #7
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    non rami. c'est bien des long. mais je pense aussi que le problème est au niveau du find. en effet, j'ai laissé l'option du dataset typé pour utiliser un bindingsource.

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim rw As New GesBourse.GesBourseDataSet.TransactionDataTable
    Dim trscbind As New BindingSource
    trscbind.DataSource = rw
    Dim i As Integer = trscbind.Find("CodeTrsc", CodeTransac)
    i renvoie -1. alors que CodeTransac prend des valeurs bien présente dans ma table, et de même type "long".

  8. #8
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    On dira que c'est élementaire. mais bon voilà moi je le savais pas. je pensais qu'au lancement le dataset fortement typé se chargais tout seul, d'ailleurs il s'est créé tout seul. et d'autant plus convaincu que les assistants donnent l'impression de facilité. il faut pourtant tout écrire et je l'ai appris à mes dépends. je meriterai bien

    Bon le problème rami c'est que j'essayais de travailler sur une table vide. je l'avait déclaré mais pas chargé. voilà le bon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Dim rw As New GesBourse.GesBourseDataSet.TransactionDataTable
            Dim rwadpt As New GesBourse.GesBourseDataSetTableAdapters.TransactionTableAdapter
            CodeTransac = CType(Me.DataGridView1.Item("CodeTrsc", Me.DataGridView1.CurrentRow.Index).Value, Long)
            rwadpt.Fill(rw)
            rw.FindByCodeTrsc(CodeTransac).CodeTrscPh = CType(Me.CodeTrscPhTextBox.Text, Long)

    merci pour ton aide

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

Discussions similaires

  1. Utilisation du dataset fortement typé
    Par s.n.a.f.u dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 06/04/2007, 19h39
  2. Pb avec un dataset fortement typé
    Par chris81 dans le forum Windows Forms
    Réponses: 14
    Dernier message: 05/03/2007, 14h29
  3. "methode" Find sur une Recordset
    Par eclesia dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/01/2007, 08h55
  4. [ADO.net][VB.net] DataSet fortement typé à la main
    Par RaelRiaK dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/01/2007, 09h48
  5. Réponses: 2
    Dernier message: 19/09/2006, 13h26

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