HEEEEEEEEEEEEEEEEEEEELLLLLLLLLLLLLLLLLLLLPPPPPPPPPPP!
salut j'y ai passé ma soirée d'hier et je ne vois toujours pas, si quelqu'un voit pourquoi ça marche pas, je lui voue un culte sans fin pendant au moins 4 minutes d'affillées.
j'essaie de remplir un dataset typé (généré par un dataadpter), en lui passant un paramètre:
je cherche l'adresse d'une personne ici appelée Investisseur.
j'utilise pour ça une proc stockée (adresse_investid qu'elle s'appelle) qui marche tres bien par ailleurs.
voici l'appel qui est tres simple:
Private Sub LoadAdresse(ByVal InvestId As Integer)
' Recharge les adresses au changement d'investisseur
DsInvest1.Adresse_InvestId.Rows.Clear()
With daAdresse
.SelectCommand.Parameters("@InvestId").Value = InvestId
.Fill(DsInvest1)
' ¤¤¤¤¤ TEST DEBUG A VIRER ¤¤¤¤¤
' Dim Nbloaded As Int16 = .Fill(DsInvest1)
' If Nbloaded = 0 Then MessageBox.Show("Aucune adresse Trouvée pour cet investisseur (" & InvestId.ToString & "): " & CType(Nbloaded, String))
' ¤¤¤¤¤ TEST DEBUG A VIRER ¤¤¤¤¤
End Withla fonction est tres courte et ne fait rien de particulier:
elle définit le parametre (InvestisseurId)
puis lance le fill pour remplir la table correspondante dans le dataset.
le bleme c'est que il ne ramène rien, 0 ligne.
( testé dans le NbLoaded = .fill puis msgbox dudit nbloadedd (=0)
et je sais qu'il y en a.
si quelqu'un a rencontré ce probleme ou si n'importe qui a n'importe quelle idée ou n'importe quelle question, je suis preneur.
LA OU JE BLOQUE C'EST QUE TOUT PASSE BIEN, MAIS QU'IL NE SE PASSE RIEN!
pour les curieux, voici le code complet de ma form:
Private cmInvest As CurrencyManager 'pour que tout le monde se base sur l'investisseur (MaJ données en cascade)
Private Sub TableInvestisseur_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
LoadData()
End Sub
Private Sub LoadData() 'je mets des noms de proc en anglais, c'est dire si je suis au point !
cmInvest = BindingContext(DsInvest1, "Investisseur_Get")
AddHandler cmInvest.PositionChanged, New EventHandler(AddressOf InvestChange)
LoadInvest()
End Sub
Private Sub LoadInvest()
' vide le dataset, le recharge et envoie la nouvelle position pour adresse et snc
DsInvest1.Investisseur_Get.Rows.Clear()
daInvestisseur.Fill(DsInvest1)
' ¤¤¤¤¤ TEST DEBUG A VIRER ¤¤¤¤¤
' Dim Nbloaded As Int16 = daInvestisseur.Fill(DsInvest1)
' '1088 investisseurs en base normalement
' If Nbloaded <> 1088 Then MessageBox.Show("Nbre d'investisseurs chargés: " & CType(Nbloaded,
string))
' ¤¤¤¤¤ TEST DEBUG A VIRER ¤¤¤¤¤
'InvestChange(Me, Nothing)
End Sub
Private Sub InvestChange(ByVal sender As Object, ByVal e As System.EventArgs)
If (cmInvest.Position > DsInvest1.Investisseur_Get.Rows.Count) Then
' Si on est pas dans la plage du currency manager on se pose sur le premier enregistrement
cmInvest.Position = 1
End If
LoadAdresse(DsInvest1.Investisseur_Get(cmInvest.Position).InvestisseurId)
End Sub
Private Sub LoadAdresse(ByVal InvestId As Integer)
' Recharge les adresses au changement d'investisseur
DsInvest1.Adresse_InvestId.Rows.Clear()
With daAdresse
.SelectCommand.Parameters("@InvestId").Value = 4228 ' InvestId
.Fill(DsInvest1)
' ¤¤¤¤¤ TEST DEBUG A VIRER ¤¤¤¤¤
' Dim Nbloaded As Int16 = .Fill(DsInvest1)
' If Nbloaded = 0 Then MessageBox.Show("Aucune adresse Trouvée pour cet investisseur (" &
InvestId.ToString & "): " & CType(Nbloaded, String))
' ¤¤¤¤¤ TEST DEBUG A VIRER ¤¤¤¤¤
End With
End Sub
et puis je vous mets meme les déclarations utiles
(le data adaptateur et la commande sql du get)
'
'daAdresse
'
Me.daAdresse.DeleteCommand = Me.SqlAdresse_Del
Me.daAdresse.InsertCommand = Me.SqlAdresse_Ins
Me.daAdresse.SelectCommand = Me.SqlAdresse_Get
Me.daAdresse.UpdateCommand = Me.SqlAdresse_Upd
Me.daAdresse.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "Adresse_InvestId", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("InvestisseurId", "InvestisseurId"), New System.Data.Common.DataColumnMapping("AdresseId", "AdresseId"), New System.Data.Common.DataColumnMapping("Ad0", "Ad0"), New System.Data.Common.DataColumnMapping("Ad1", "Ad1"), New System.Data.Common.DataColumnMapping("Ad2", "Ad2"), New System.Data.Common.DataColumnMapping("Ad3", "Ad3"), New System.Data.Common.DataColumnMapping("CP", "CP"), New System.Data.Common.DataColumnMapping("Ville", "Ville"), New System.Data.Common.DataColumnMapping("Pays", "Pays")})})
'
'SqlAdresse_Get
'
Me.SqlAdresse_Get.CommandText = "[Adresse_InvestId]"
Me.SqlAdresse_Get.CommandType = System.Data.CommandType.StoredProcedure
Me.SqlAdresse_Get.Connection = Me.connSP101
Me.SqlAdresse_Get.Parameters.Add(New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False, CType(0, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))
Me.SqlAdresse_Get.Parameters.Add(New System.Data.SqlClient.SqlParameter("@InvestId", System.Data.SqlDbType.Int, 4))
JE DEVIENS FOU DE PERDRE AUTANT DE CODE POUR UN CODE QUI A L'AIR SI SIMPLE!
vbnouille, desespéré pour ses investisseurs devenus SDF
Benouille la grenouille