none
enregistrement d'une bd RRS feed

  • Discussion générale

  • Bonjour,

    avec un bindingsource la méthode insert me donne un message d'erreur qu'il est impossible d'inserer des objets externes dans cette liste.

    Je n'ai pas encore tout compris la méthode get qui apparament doit gérer l'ensemble, j'utilise les méthodes du bindingsource.

    Merci par avance pour votre patience.

    Jacky

    samedi 31 décembre 2011 10:52

Toutes les réponses

  • Bonjour,

    Pouvez vous nous poster votre ode d'insertion et le message d'erreur ?

     

    Cordialement.

    samedi 31 décembre 2011 11:58
    Auteur de réponse
  • Bonjour et merci pour le temps que vous m'accordez,

    voici le code utilisé

    Bindingcot est mon bindingsource

    Setcotisation mon dataset

    Adaptercotisation mon  oldeatadaptater

     

     Bindingcot.MoveNext()

     Bindingcot.MovePrevious()

    Bindingcot.AddNew()

     Bindingcot.EndEdit()

     Adaptercotisation.Update(Setcotisation, "Cotipatre")

    en l'état le 1e est il faut la méthode insert

    j'ai voulu inserer 1 datarow

    Bindingcot.AddNew()

    val(num) vaut "000018"

     Bindingcot.Insert(Val(Num), RowCot) sur cette ligne j'ai ce message d'erreur

    Impossible d'insérer des objets externes dans cette liste.

    tout fonctionne sauf la mise à jour des enregistrements

    samedi 31 décembre 2011 13:21
  • Bonjour,

     

    Le problème est que vous essayez ajouter votre DataRow à l’objet BindingSource, mais il faut l’ajouter à la liste à laquelle votre BindingSource est lié  (voir cette discussion pour avoir un exemple ).

     

    Les liens sont en anglais, mais vous pouvez utiliser Microsoft Translator pour les traduire.

    Vu que votre code n’est pas clair et complète il est difficile vous créer un exemple pour votre situation (on ne sait pas quelle est la liste de votre BindingSource, etc.)

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    mercredi 4 janvier 2012 09:09
  • Bonjour,

    Tout d'abord merci pour les infos.

    Si je comprend je dois enregistrer le datarow dans le dataset ou la base.

    Mais j'ai lier les textbox  aux données avec textbox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Bindingcot, champ(Cpt), True))

    et l'utilisation du bindingsource pour les méthodes bindingsource.AddNew, bindingsource.move, et autre me plait bien. J'aurais souhaiter valider

    l'enregistrement des modifications de données avec les textbox. N'ayant pas mis de navigator je dois créer le code d'enregistrement, les modifications sont actualisées dans le datagridwiew mais pas dans la base de données

    voici mon code qui génére la liaison.

             ReDim Preserve TxtBCot(Cpt)
                TxtBCot(Cpt) = New TextBox
                With TxtBCot(Cpt)
                    .Size = New Size(Aa, Bb)
                    .Location = New Point(Xx, Yy)
                    .BorderStyle = BorderStyle.Fixed3D
                    .BackColor = Color.White
                    .Multiline = Ml
                    .Font = New Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Point)
                    .ForeColor = Color.Black
                    .DataBindings.Add(New System.Windows.Forms.Binding("Text", Bindingcot, champ(Cpt), True))
                    ' .Text = RowGesClie(Cpt + 1).ToString
                    .BringToFront()
                End With
                AddHandler TxtBCot(Cpt).Validated, AddressOf TxtBCotEv_Validated
                Panelcot.Controls.Add(TxtBCot(Cpt)).

    J'ai 2 boutons pour  se déplacer en avant et arriere

     

     Private Sub BtnAvantGesCot_Click(sender As System.Object, e As System.EventArgs) Handles BtnAvantGesCot.Click
            Bindingcot.MoveNext()
        End Sub

        Private Sub BtnArriereGesCot_Click(sender As System.Object, e As System.EventArgs) Handles BtnArriereGesCcot.Click
            Bindingcot.MovePrevious()
        End Sub Private Sub BtnAvantGesCot_Click(sender As System.Object, e As System.EventArgs) Handles BtnAvantGesCot.Click
            Bindingcot.MoveNext()
        End Sub

        Private Sub BtnArriereGesCot_Click(sender As System.Object, e As System.EventArgs) Handles BtnArriereGesCcot.Click
            Bindingcot.MovePrevious()
        End Sub

    et 2 boutons pour nouveau et enregistrer ( Num est une procédure qui me retourne le numéro d'index)

    Private Sub BtnNouvCot_Click(sender As System.Object, e As System.EventArgs) Handles BtnNouvCot.Click
            Dim Num As String = NumLibre(Adaptercotisation, "Cotipatre")
            Bindingcot.AddNew()
            TxtBCot(0).Text = Num
         End Sub

     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
              Dim aa = Bindingcot.Current()
                                                                                 '  Bindingcot.Insert(Val(TxtBCot(0).Text), aa)
                                                                                   'Bindingcot.Insert(Val(TxtBCot(0).Text), "Cotipatre").ExecuteNonQuery()
            CType(Me.Bindingcot, System.ComponentModel.ISupportInitialize).EndInit()
            Bindingcot.EndEdit()
                                                                                  ' Bindingcot.Insert(Val(TxtBCot(0).Text), "Cotipatre")
            Adaptercotisation.Update(Setcotisation, "Cotipatre")
        End Sub

    Voici le code complet, et j'ai une message d'erreur.

    Grand merci pour votre patience.

    Cordialement

    mercredi 4 janvier 2012 17:35
  • Bonjour,

     

    Est-ce que la propriété AllowNew de votre BindingSource a la valeur « True » ? Si sa valeur e false la méthode AddNew déclenchera une exception.

     

    En plus, ce que je vous ai proposé ne vous modifie pas beaucoup votre code : quand vous ajoutez un élément nouveau, vous utilisez soit la propriété List de votre BindingSource pour obtenir l’objet ou il faut ajouter l’element, soit directement l’objet Setcotisation et la DataTable correspondant.

     

    Si ces informations ne résoudront pas le problème,  pouvez-vous nous montrer aussi les sources des données de vos BindingSource et DataSet ? Merci d’avance !

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 5 janvier 2012 14:10