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 :

mettre résultat requete dans une variable


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut mettre résultat requete dans une variable
    Bjr a tous, je cherche a mettre le resultat d'une requete sql dans un variable. Je ne sais pas quel type mettre a ma variable.
    Je recupere le nom de l'abonne dans un combobox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numab = "select idAbonne from abonne where nomabonne ='" & cbx_abonne.Text & "'"
    Merci de votre aide

  2. #2
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    Dans l'idéal, il faudrait que le type de ta variable soit du meme type que "idAbonne", et donc apparemment un Integer. Et tu utiliseras la fonction ExecuteScalar(). Le probleme c'est que si tu ne trouve pas l'enregistrement dans la table, il va te retourner un DBNull et non un Integer.
    Donc un variable de type Object est necessaire pour prendre en compte tous les cas possibles.
    Apres à toi de vérifier que la valeur dedans est bien ce que tu veux, et tu la stocke dans une variable integer si tu veux

  3. #3
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Bonjour,

    Pour faire simple, ta requête est une chaine de caractère, alors ta variable doit être String, enfin, pour c'est ce que j'utilise et ca fonctionne sans problème.

  4. #4
    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 : 42
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par ptitepo Voir le message
    Bjr a tous, je cherche a mettre le resultat d'une requete sql dans un variable. Je ne sais pas quel type mettre a ma variable.
    Je recupere le nom de l'abonne dans un combobox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numab = "select idAbonne from abonne where nomabonne ='" & cbx_abonne.Text & "'"
    Merci de votre aide
    Attention, quand tu fais ça, numab ne contient pas le résultat de la requête, mais simplement le texte de la requête... il faut ensuite exécuter cette requête pour récupérer le résultat.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut
    Oui je sais bien que ca ne contient pas le resultat de ma requete mais la requete en elle même, je ne sais pas comment faire pour mettre uniquement ce resultat dans la requete. J'ai essayé de trouvé comment fonction la fonction ExecuteScalar(), mais sans succés

  6. #6
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Passe le résultat de ton combobox comme paramètre à la requête.

    Donc,

    Tu va déclarer ta variable qui va contenir le résultat de requête comme suit :

    Puis,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    numab = "select idAbonne from abonne where nomabonne=@NumAb"
    Dim cmdSelectAbonnes As New SqlCommand(numab, cnx)
    cmdSelectAbonnes.Parameters.Add("@NumAb", SqlDbType.Int).Value = cbx_abonne.SelectedValue 'au lieu de .Text
    .....

    Ca devra marcher normalement.

  7. #7
    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 : 42
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    je pense qu'une petite lecture de ce tutoriel te ferait le plus grand bien

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut
    le type SqlCommand n'est pas défini :S

  9. #9
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Type "SqlCommand" non définit est dù au fait que tu n'a pas importé les nom d'espaces nécéssaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    Abrakadabra, d'un coup de bagette magique, ton erreur disparaitra!!!

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut
    Bé oui j'avais bien mis les bon imports, c'est quoi cnx?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmdSelectAbonnes As New SqlCommand(numab, cnx)

  11. #11
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    C'est ta connexion ==> cnx.
    Je préfère l'appeler cnx au lieu de conn comme pleins de développeurs, car je ne la trouve pas vraiment conne..
    (ici cnx est prédéfinis auparavant dans module global)

    Bon courrage

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut
    Une valeur de type 'System.Data.OleDb.OleDbConnection' ne peut pas être convertie en 'System.Data.SqlClient.SqlConnection'.
    Oui j'avais bien compri connexion mais ca me mets ca comme erreur.
    J'ai deux connexions et pour les deux ca me met ca

  13. #13
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Tu utilise une base de donnée Acces , c'est normal d'avoir cette erreur. Faut plutot utiliser Oledbcommand et pas SqlCommand.
    Quand tu pose une question, merci de préciser en vitesse, ta version de VB, ta base de données.... et bien d'autres choses pourront être utiles et facilitant le traitement de ton cas.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut
    Oups :S
    Du cou tout le reste ne fonctionne pas ca ve dire.

    'Public Function Add(parameterName As String, value As Object) As System.Data.OleDb.OleDbParameter' est obsolète*: 'Add(String parameterName, Object value) has been deprecated. Use AddWithValue(String parameterName, Object value). http://go.microsoft.com/fwlink/?linkid=14202'

  15. #15
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Tu peux nous montrer le code et bien structurer ta principale question, parceque là je commence à perdre le nord avec la paire d'erreurs que tu poste.
    Repose ta question, et dis où tu veux arriver , puis tes empêchements.
    Comme ca on peut t'aider mieux.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut
    cbx_abonne est une zone de liste ou apparisse les nom de abonnée. Je veux récuperé le numero de l'abonné selectionné, pour l'inseré dans ma table preter.
    Abonne (idabonne, nomabonne, villeabonne)
    preter(idabonne, iddvd, datepret)
    dvd(iddvd, titredvd, dureedvd)

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Dim maconnexion As New OleDb.OleDbConnection("provider=Microsoft.jet.OLEDB.4.0;Data source =..\basedonneeDVD.mdb;persist security info=false")
    Dim maCommand As New OleDb.OleDbCommand()
    Dim chainesql As String
    Dim monDA As New OleDb.OleDbDataAdapter()
    Dim numab As String
     
        Private Sub dvd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Try
                maconnexion.Open()
                chaineSql = "SELECT * FROM DVD, Preter, Abonne WHERE DVD.idDVD=Preter.idDVD And Preter.idAbonne=Abonne.idAbonne"
                maCommand.CommandText = chaineSql
                maCommand.Connection = maconnexion
                monDA.SelectCommand = maCommand
     
                monDA.Fill(datasetpret, "Liste des prets")
                maDT = datasetpret.Tables("Liste des prets")
                cbx_abonne.DataSource = maDT
                cbx_abonne.DisplayMember = "nomAbonne"
                cbx_titre.DataSource = maDT
                cbx_titre.DisplayMember = "titreDVD"
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            maconnexion.Close()    
    End Sub
     
     
        Private Sub btn_valider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_valider.Click
            If action = 1 Then
    Try
     
                    OleDbConnectiondvd.Open()
                    numab = "select idAbonne from abonne where nomabonne=@NumAb"
                    Dim cmdSelectAbonnes As New OleDbCommand(numab, maconnexion)
                    cmdSelectAbonnes.Parameters.Add("@NumAb", SqlDbType.Int).Value = cbx_genre.SelectedValue            
     
                    chaineSql = "insert into Preter (idAbonne, idDVD, datepret)values ('" & numab & "','" & cbx_titre.Text & "','" & cbx_date.Text & "')"
                    commandinsert.CommandText = chaineSql
                    commandinsert.Connection = OleDbConnectionpret
                    commandinsert.ExecuteNonQuery()
                    MsgBox("Pret enregistré")
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
                OleDbConnectionpret.Close()
            End If
        End Sub

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/04/2014, 16h37
  2. Réponses: 15
    Dernier message: 11/04/2014, 10h09
  3. Réponses: 4
    Dernier message: 05/07/2006, 11h12
  4. Réponses: 7
    Dernier message: 02/05/2006, 16h28
  5. [Mail] Mettre un include dans une variable
    Par Death83 dans le forum Langage
    Réponses: 16
    Dernier message: 04/03/2006, 20h01

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