[.NET] remplir un dataset par un dataadapter et une proc stockée HEEEEEEEEEELPPP
cs_Benouille
Messages postés215Date d'inscriptionjeudi 24 octobre 2002StatutMembreDernière intervention 7 septembre 2007
-
15 avril 2005 à 17:38
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 2014
-
16 avril 2005 à 11:15
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
With
la 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)
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")})})