none
probleme avec des requetes select RRS feed

  • Question

  • Bonjour,

    Alors voici mon probleme je cherche a afficher le resultat d'une requete qui uilise la valeur d'une requete utiliser juste avans. La premiere requete se passe parfaitement bien elle retourne se qu'il faux mais la seconde alors que depuis le debug je vois qu'elle a bien pris la valeur de la premiere, elle ne me donne pas de resultat. J'ai essayé la requete que je récupere dans le debug dans le volet SQL et elle fonctionne. 

    Voici mon code

     Dim MyConnexion As SqlConnection = New SqlConnection("Data Source=c16\sqlexpress;Initial Catalog=try;Integrated Security=true;user=1;password=R;MultipleActiveResultSets=True")
    Dim Mycommand As SqlCommand = MyConnexion.CreateCommand()
    Mycommand.CommandText = "SELECT ID_Demande from Suivi Where Etat_Demande='fait'"
    MyConnexion.Open()
            Dim myReader As SqlDataReader = Mycommand.ExecuteReader()
    Do While myReader.Read()
                Try
                    Dim MyConnexion As SqlConnection = New SqlConnection1("Data Source=c16\sqlexpress;Initial Catalog=try;Integrated Security=true;user=1;password=R;MultipleActiveResultSets=True")
                    Dim Valeur As Guid = myReader.GetGuid(0)             
                    Dim Mycommand1 As SqlCommand =  MyConnexion1.CreateCommand() 
                    Mycommand1.CommandText = "SELECT Nom_Demandeur from demandeur Where ID_Demande = '" + Valeur.ToString + "'"
                    MyConnexion1.Open()
                    Dim myReader1 As SqlDataReader = Mycommand1.ExecuteReader()
                    MsgBox(myReader1.GetString(0))
                    Dim val As String = myReader1.GetString(0)
                    ListBox1.Items.Add(val)
                Catch ex As Exception
                    MsgBox("erreur")
                End Try
            Loop
    Merci

        

    jeudi 23 mai 2013 08:35

Réponses

  • Ah ! Il manque le Read. Après exécution on est positionné "avant" les données et il est nécessaire de faire un Read pour se positionner sur la première ligne de données. Cela devrait résoudre le problème immédiat.

    A terme essayez de voir quand vous faites plusieurs requêtes si vouns ne pourriez pas atteindre le résultat avec une seule requête comme indiqué plus haut en vous familiarisant avec SQL...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 23 mai 2013 11:16
    Modérateur

Toutes les réponses

  • Bonjour,

    Merci de toujours décrire le comportement exact. Y a t'il une exception (si oui message et à quelle ligne) ? Eventuellement supprimer temporairement le try/catch qui n'apporte aucune info sur l'erreur...

    Selon ce que l'on veut faire, il peut être plus simple de faire une seule requête. Par exemple qq chose comme :

    SELECT ID_Demande,Nom_Demandeur FROM Suivi JOIN Demandeur ON Suivi.Id_Demande=Demandeur.Id_Demande WHERE Etat_Demande='fait'

    devrait retourner 2 colonnes avec l'id de la demande et le demandeur correspondant...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 23 mai 2013 09:31
    Modérateur
  • Merci de la réponse, en utilisant une seul requête cela fonctionne.

    Mais j'aurai voulu savoir pourquoi cela ne fonctionnais pas, il me donne comme erreur :" Tentative non valide de lecture lorsque aucune donnée n'est présente." au premier endroit ou j'essaye d'utiliser la valeur de la deuxieme requête.

     

    jeudi 23 mai 2013 09:59
  • Ouvrir deux connections imbriquées est une TRES mauvaise idée.

    Il est préférable dans votre cas de faire soit comme Patrice l'a indiqué, soit de stocker dans une liste de Guid vos Ids puis de faire une itération sur ces Ids


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    jeudi 23 mai 2013 10:04
  • Ah ! Il manque le Read. Après exécution on est positionné "avant" les données et il est nécessaire de faire un Read pour se positionner sur la première ligne de données. Cela devrait résoudre le problème immédiat.

    A terme essayez de voir quand vous faites plusieurs requêtes si vouns ne pourriez pas atteindre le résultat avec une seule requête comme indiqué plus haut en vous familiarisant avec SQL...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 23 mai 2013 11:16
    Modérateur
  • D'accord,

    Merci beaucoup.

    jeudi 23 mai 2013 11:53