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

Windows Forms Discussion :

Retour d'une fonction


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut Retour d'une fonction
    Bonjour

    Je débute en C# mais je développe quand même une petite application.
    Pour les besoins d'insertion dans la DB, j'ai besoin de récupérer un ID spécifique.

    Voici mon code de la fonction sensé me retourner un ID ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     public double GetIdConsommation(double Pid_User_id)
             {
     
                 string VUser_id;
                 string VUser_id_next;
     
     
                 VUser_id = (Pid_User_id*100000).ToString();
                 VUser_id_next = ((Pid_User_id+1)*100000).ToString();
     
                 string sqlCmd = "SELECT Max(ID) FROM ESSENCE WHERE ID >= " + VUser_id + " And ID < " + VUser_id_next;
                 OleDbDataAdapter mDA = new OleDbDataAdapter(sqlCmd, ConnectString);
     
                 // Je coince ici
             }
    Le problème c'est que je coince ...
    Comment pourrais je récupérer l'ID qui m'est retourné par la querry et le copier dans la variable de retour de la fonction?

    Merci beaucoup de votre aide

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Gouzoul Voir le message
    Bonjour

    Je débute en C# mais je développe quand même une petite application.
    Pour les besoins d'insertion dans la DB, j'ai besoin de récupérer un ID spécifique.

    Voici mon code de la fonction sensé me retourner un ID ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     public double GetIdConsommation(double Pid_User_id)
             {
     
                 string VUser_id;
                 string VUser_id_next;
     
     
                 VUser_id = (Pid_User_id*100000).ToString();
                 VUser_id_next = ((Pid_User_id+1)*100000).ToString();
     
                 string sqlCmd = "SELECT Max(ID) FROM ESSENCE WHERE ID >= " + VUser_id + " And ID < " + VUser_id_next;
                 OleDbDataAdapter mDA = new OleDbDataAdapter(sqlCmd, ConnectString);
     
                 // Je coince ici
             }
    Le problème c'est que je coince ...
    Comment pourrais je récupérer l'ID qui m'est retourné par la querry et le copier dans la variable de retour de la fonction?

    Merci beaucoup de votre aide
    Pour executer une requete avec une fonction (MAX, COUNT) il faut utiliser ExecuteScalar.

    Tu utilises quel type de BDD ?
    Sinon y'a une requete pour recupérer le dernier IDENTITY généré.

  3. #3
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    A priori sous SQL Server ce serait
    SELECT SCOPE_IDENTITY();

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut
    C'est une base de données ACESS

    En réalité, j'ai pas donnée assez de précision.
    C'est un ID un peu spécial. Cet ID est calculé en fonction de l'ID de l'utilisateur.
    Donc le premier user a une plage d'ID comprise entre 100000 et 199999, le 2eme entre 200000 et 299999 .... etc etc

    tu vois ce que je veux dire?

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ok ben fais comme tu fais et utilises ExecuteScalar.

    Edit : pourquoi tu utilises un Adapter ? Pourquoi pas directement une OleDbCommand ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut
    Ben je sais pas au fait ....

    Comment ferrais tu ?

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Bah normalement on utilises un Adapter pour faire le pont avec un DataSet.

    Sinon je ferais ça (non testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       string sqlCmd = "SELECT Max(ID) FROM ESSENCE WHERE ID >= " + VUser_id + " And ID < " + VUser_id_next;
       OleDbCommand cmd = new OleDbCommand(sqlCmd, new OleDbConnection(ConnectString));
       int id = cmd.ExecuteScalar();

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut
    Merci beaucoup, je vais essayer cela de suite

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut
    J'ai essayé mais j'ai cette erreur :


    Error 1 Cannot implicitly convert type 'object' to 'int'. An explicit conversion exists (are you missing a cast?) c:\Programmes\C#\GestionVie\Essence\DataAccess.cs 102 24 Essence


    Probleme de converstion on dirait ...

  10. #10
    Membre éprouvé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Par défaut
    Oui, le ExecuteScalar() retourne un objet.
    Il faut que tu castes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int id = Int32.Parse(cmd.ExecuteScalar());
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int id = Int32.Parse(cmd.ExecuteScalar().ToString());
    je sais plus si la première version est possible et j'ai pas visual studio sous la main pour vérifier.. Mais c'est quelque chose dans le genre

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par debug Voir le message
    Oui, le ExecuteScalar() retourne un objet.
    Il faut que tu castes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int id = Int32.Parse(cmd.ExecuteScalar());
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int id = Int32.Parse(cmd.ExecuteScalar().ToString());
    je sais plus si la première version est possible et j'ai pas visual studio sous la main pour vérifier.. Mais c'est quelque chose dans le genre
    Euh, ça c'est pas un cast... un cast ce serait comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int id = (int)cmd.ExecuteScalar();

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut
    oui tout simplement le (int) ...

    Merci beaucoup à vous tous

    C'est dingue comme le C/C++ s'oublient vite quand on travaille tous les jours avec les outils ORACLE ...

    Encore Merci

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

Discussions similaires

  1. retour d'une fonction
    Par papy_tergnier dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 15/05/2006, 17h21
  2. [XML][XSLT][debutant]retour d'une fonction
    Par maxvador dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 30/03/2006, 14h12
  3. recuperer en php le retour d'une fonction plsql
    Par gismoblue dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/03/2006, 16h39
  4. PL/SQL retour d'une fonction
    Par aaronw dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/12/2005, 13h25
  5. [Oracle 9.1] Types de retour d'une fonction PL/SQL
    Par ftrifiro dans le forum PL/SQL
    Réponses: 8
    Dernier message: 12/10/2005, 16h54

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