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

VB.NET Discussion :

problème lors de l'appel d'une méthode


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut problème lors de l'appel d'une méthode
    bonjour,


    j'ai un problème dans l'exécution de mon programme lors de l'initialisation d'un composant ocx , en faite cette intialisation fait appel a une méthode d'une autre classe:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim rs As New ADODB.Recordset
    		SSDBCombo1.RemoveAll()
    		rs.Open("select  * from employer order by matricule", cn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockReadOnly)
    		While Not rs.EOF
                SSDBCombo1.AddItem(rs.Fields("matricule").Value & ";" & rs.Fields("nom").Value & ";" & rs.Fields("prenom").Value & ";" & rs.Fields("sexe").Value & ";" & rs.Fields("etat_civil").Value & ";" & rs.Fields("Position").Value & ";" & rs.Fields("Date_Embauche").Value & ";" & Per.Nomsociete(rs.Fields("Societe").Value) & ";" & IIf(rs.Fields("resiliation").Value = 0, "non", "oui"))
    			rs.MoveNext()
    		End While


    l'appel de la methode s'effectue dans l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Per.Nomsociete(rs.Fields("Societe").Value)
    le programme ne continu pas l'exécution de la boucle while ???? lorsqu'il appel cette méthode

    merci de m'aider

  2. #2
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    Encore du VB6 dans du VB.net
    Je ne crois pas pouvoir t'aider si tu ne décrit pas ce que la méthode appeler dans la boucle fait ou a défaut tu poste le code de celui-ci. Mais déjà le plus souvent je voie ce problème lorsque l'on imbrique un recorset dans la boucle de lecture d'un autre.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut le code de la méthode appelée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function Nomsociete(ByRef mat As Integer) As String
    		Dim textrs As String
    		On Error GoTo erreur
    		Dim rs As ADODB.Recordset
    		rs = New ADODB.Recordset
    		rs.Open("select  * from societe where code = " & mat, cn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockReadOnly)
    		rs.MoveFirst()
    		Nomsociete = rs.Fields("Societe").Value
            Exit Function
    erreur: 
    		MsgBox("code société inexistante ")
    	End Function

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    déjà au lieu d'utiliser des recordset de vb6 dans vb.net, utilise les méthodes d'accès aux données de vb.net, après on verra

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut ya pas une solution sans modifier beacoup dans le code
    Citation Envoyé par sperot51 Voir le message
    déjà au lieu d'utiliser des recordset de vb6 dans vb.net, utilise les méthodes d'accès aux données de vb.net, après on verra
    SVP y a pas d'autre solution car si je vais changer dans le code c'est la merde pour mois

    ce morceaux de code n'est qu'une méthode parmis centaines


    je peux pas m'en sortir autrement?

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    au lieu de faire une requete qui te retourne (surement) un numéro de société et que pour chaque ligne retournée tu fasses une nouvelle requete pour avoir le nom de cette société

    il est possible de faire une requete avec une jointure pour avoir les 2 infos en meme temps, ce qui augmentera significativement les performances de ton programmes en plus


    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT employes.idemp, employes.nomemp, societes.nomsociete 
        FROM employes 
            INNER JOIN societes ON employes.idsociete = societes.idsociete

    j'espère que ton logiciel n'est pas destinée à une clientèle, sinon je les plainds ...

  7. #7
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    Comme je l'ai dit plus haut je voie évidement que la fonction appelé utilise un autre Recorset c'est sa la cause de ton problème on ne peut imbriquer un recorset dans la boucle de lecture d'un autre et c'est pareil avec le DataReader faudra procéder comme Sperot51 a dit.

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par lilroma Voir le message
    Comme je l'ai dit plus haut je voie évidement que la fonction appelé utilise un autre Recorset c'est sa la cause de ton problème on ne peut imbriquer un recorset dans la boucle de lecture d'un autre et c'est pareil avec le DataReader faudra procéder comme Sperot51 a dit.

    lorsque j'ai mis le code en question dans un bloc try catch j'ai eu cette execption :


    Le jeu d'enregistrements suivant ne prend pas en charge la mise à jour. Il s'agit peut-être d'une limitation du fournisseur ou du type de verrou sélectionné.

    ADODB.Field
    at ADODB.Field.set_Value(Object pvar)
    at ADODB.InternalField.set_Value(Object value)
    lorsque j'ai remplacer la méthode appelé par une méthode dans la classe actuel sa fonctionne !!!!

    je comprend pas la différence

    @sperot51 : si j'aurais la décision je changerais tous le code mais ......

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut ça fonctionner je sais pas comment!!!!
    bon apparement ça fonctionner j'ai juste changer la signature de la méthode appelé ( j'ai juste changer le passage de parametre de ByRef à ByVal )

    c'est vraiment bizard si c'est celle ci l'erreur

    merci pour l'aide

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    de byref à byval, ce n'est pas ca qui a pu corriger l'erreur

    sinon à ta place je chercherais du boulot ailleurs, faire de la merde c'est pas top, et en plus ca ne permet pas d'apprendre grand chose et d'évoluer

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

Discussions similaires

  1. problème lors de l'appel d'une méthode
    Par khadi8 dans le forum Débuter
    Réponses: 6
    Dernier message: 09/04/2013, 07h57
  2. Problème de timeout lors de l'appel d'une méthode Stop
    Par drieu13 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 12/04/2012, 16h53
  3. POO Trap lors de l'appel d'une méthode
    Par QAYS dans le forum Delphi
    Réponses: 3
    Dernier message: 05/06/2007, 21h22
  4. Problème lors de l'appel d'une procédure stockée
    Par ToxiZz dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/05/2006, 23h42
  5. [POO] Problème lors de l'appel d'une propriété d'un objet.
    Par akecoocoo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 08h51

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