rudybiss
Messages postés60Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention20 juillet 2009
-
17 juin 2009 à 13:00
rudybiss
Messages postés60Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention20 juillet 2009
-
19 juin 2009 à 14:01
Bonjour!
Je vous explique mon problème.Je voudrais faire un ajout dans une table donnée puis en même temps la modification d'un champ dans une autre table.
Ceci dit: j'ai un allotment qui contient plusieurs stickers,à la création de l'allotment il y a un montant initial et lors de la création d'un stickers,son montant ne doit pas être supérieur à celui de l'allotment et aussi à chaque création d'un stickers(puisque le stickers a aussi un montant),le montant de l'allotment doit diminuer c'est-à-dire (montant allotment - montant stickers).
Donc dans le formulaire de saisie des stickers,j'ai une combobox pour selectionner le numéro de l'allotment,une fois selectionné le numéro de l'allotment,automatique est recupéré le montant de l'allotment et son id. Donc à la création du stickers,je dois modifier dans la table allotment le montant correspondant à l'id.Mais pour l'instant,ca ne marche pas j'ai cette erreur:
L'index se trouve en dehors des limites du tableau. Voici le code complet:
Private Sub Btn_enrgistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_enregistrer.Click If txt_stick_num.Text "" Or txt_montant.Text "" Or cmb_allot_num.Text = "Choisir..." Or cmb_allot_num.Text = "" Then
MsgBox("Tous les champs doivent être renseignés", MsgBoxStyle.Information, "Vérification des champs")
ElseIf (Val(txt_montant.Text) > Val(txt_montant_allot.Text)) Then
MsgBox("Le montant du stickers est supérieur à celui de son allotment", MsgBoxStyle.Information, "Vérification des montants")
Else
txt_solde.Text = Val(txt_montant_allot.Text) - Val(txt_montant.Text)
Dim NewLigne As DataRow
With DtSet
' Création de la nouvelle ligne
NewLigne = DtSet.Tables("stickers").NewRow
'affectation des valeurs
' Ajout de la ligne à la table
.Tables("stickers").Rows.Add(NewLigne)
Connection.Open()
' Création CommandBuilder
'(genere automatiquement l'update entre le dataSet et la base de donnée
Dim CmdBuild As OleDbCommandBuilder
CmdBuild = New OleDb.OleDbCommandBuilder(AdapTstickers)
AdapTstickers.UpdateCommand = CmdBuild.GetUpdateCommand()
AdapTstickers.Update(DtSet, "stickers")
'recupere la clé de la ligne sélectionné
Dim idallotment As String
idallotment = txt_solde.Text
'definition de notre table
Dim Matable As DataTable
Matable = DtSet.Tables("allotment")
'recherche la ligne a modifier dans notre table
Dim LaLigne As DataRow() LaLigne Matable.Select("id_allotment " & idallotment)
'affecte les modifications
LaLigne(0)(3) = txt_solde.Text
Connection.Close()
End With
End If
'manipulation sur les boutons et controles
Btn_nouveau.Visible = True
Btn_enregistrer.Visible = False
Vide_champ()
bloque_ctrls()
End Sub
Je me demande si cette méthode est bonne car j'ai juste fait une adaptation!
rudybiss
Messages postés60Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention20 juillet 2009 19 juin 2009 à 14:01
Bonjour!
Problème résolu,en fait je me trompait de textbox où il fallait récupérer l'id.Donc je prenais un id très grand(qui n'etait que le montant),du coup il ne trouvais pas dans la table.
Merci encore!