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 :

Compilateur arrête la compilation lorsque la requête sql ne retourne rien !


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Compilateur arrête la compilation lorsque la requête sql ne retourne rien !
    Bonjour,
    Me voici confronté a un épineux problème.
    Je travaille en VB.NET et j'effectue des requêtes sql dans une base de données Access.
    J'ai une requête qui fonctionne admirablement bien quand elle retourne quelque chose de concret. Par contre quand elle ne retourne rien j'ai un message d'erreur qui s'affiche lors de la compilation et qui arrête la compilation ce qui est fort dommageable puisque dans certain cas de figure dans mes reqûetes il n'y a rien a retourner. Merci d'avance.

    En vb 6 il y avait une instruction conditionnelle qui informait l'utilisateur que la requête ne retournait rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If rst.EOF = True Then 
    msgbox "pas de données" 
    else 
    While Not (rst.EOF) 
    .... 
    rst.MoveNext 
    Wend 
    end if
    En vb.net je n'ai pas trouvé d'instruction équivalente. J'ai essayé des choses avec BOF et EOF mais sans succès. Je recherche avant le Do While une instruction conditionnelle ou autre qui me permettrait de ne pas rentrer dans la boucle s'il n'y a rien à retourner.
    Quelqu'un aurait-il une idée ?

    Voici la requête :
    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
    'connexion à la base de données 
    Dim con As OleDb.OleDbConnection 
    con = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= C:\Users\jean-jacques\Desktop\EI\Delegue.mdb;") 
    Dim cmd As New OleDb.OleDbCommand( _ 
    "SELECT Min(FicRen_CompStadeComp.NumeroCompetitionStadeCompetition) AS var_min, Count([FicRen_CompStadeComp].[NumeroCompetitionStadeCompetition]) AS var_count " & _ 
    "FROM CompetitionsStadeCompetition INNER JOIN FicRen_CompStadeComp ON CompetitionsStadeCompetition.NumeroCompetition_StadeCompetition = FicRen_CompStadeComp.NumeroCompetitionStadeCompetition " & _ 
    "WHERE (CompetitionsStadeCompetition.Competition = ""Championnat"") AND (FicRen_CompStadeComp.Rencontre = ""Joué"");", con) 
    con.Open() 
    Dim dt As New DataTable 
    Dim rs As New DataSet 
    Dim data_reader As Data.IDataReader = cmd.ExecuteReader() 
    If ??? then 
    Do While data_reader.Read() 
    variable_valeur_minimum = data_reader.GetValue(0) 
    variable_valeur_count = data_reader.GetValue(1) 
    Loop 
    Else 
    msgbox "la requête ne retourne aucune donnée" 
    End if 
    con.Close()

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par jjg65 Voir le message
    Bonjour,
    Me voici confronté a un épineux problème.
    Je travaille en VB.NET et j'effectue des requêtes sql dans une base de données Access.
    J'ai une requête qui fonctionne admirablement bien quand elle retourne quelque chose de concret. Par contre quand elle ne retourne rien j'ai un message d'erreur qui s'affiche lors de la compilation et qui arrête la compilation ce qui est fort dommageable puisque dans certain cas de figure dans mes reqûetes il n'y a rien a retourner. Merci d'avance.

    En vb 6 il y avait une instruction conditionnelle qui informait l'utilisateur que la requête ne retournait rien :
    If rst.EOF = True Then
    msgbox "pas de données"
    else
    While Not (rst.EOF)
    ....
    rst.MoveNext
    Wend
    end if

    En vb.net je n'ai pas trouvé d'instruction équivalente. J'ai essayé des choses avec BOF et EOF mais sans succès. Je recherche avant le Do While une instruction conditionnelle ou autre qui me permettrait de ne pas rentrer dans la boucle s'il n'y a rien à retourner.
    Quelqu'un aurait-il une idée ?

    Voici la requête :
    'connexion à la base de données
    Dim con As OleDb.OleDbConnection
    con = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= C:\Users\jean-jacques\Desktop\EI\Delegue.mdb;")
    Dim cmd As New OleDb.OleDbCommand( _
    "SELECT Min(FicRen_CompStadeComp.NumeroCompetitionStadeCompetition) AS var_min, Count([FicRen_CompStadeComp].[NumeroCompetitionStadeCompetition]) AS var_count " & _
    "FROM CompetitionsStadeCompetition INNER JOIN FicRen_CompStadeComp ON CompetitionsStadeCompetition.NumeroCompetition_StadeCompetition = FicRen_CompStadeComp.NumeroCompetitionStadeCompetition " & _
    "WHERE (CompetitionsStadeCompetition.Competition = ""Championnat"") AND (FicRen_CompStadeComp.Rencontre = ""Joué"");", con)
    con.Open()
    Dim dt As New DataTable
    Dim rs As New DataSet
    Dim data_reader As Data.IDataReader = cmd.ExecuteReader()
    If ??? then
    Do While data_reader.Read()
    variable_valeur_minimum = data_reader.GetValue(0)
    variable_valeur_count = data_reader.GetValue(1)
    Loop
    Else
    msgbox "la requête ne retourne aucune donnée"
    End if

    con.Close()
    Arreter la compilation?
    Ca serait pas plutot arreter l'execution?

    Pour les ??? regarde http://msdn.microsoft.com/en-us/libr...r.hasrows.aspx

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    Citation Envoyé par jjg65 Voir le message
    En vb.net je n'ai pas trouvé d'instruction équivalente.

    tu n'as juste pas compris le fonctionnement du datareader ...

    reader.Read retourne false si aucune ligne n'a été trouvé ou si la dernière ligne a été dépassée, donc tu retires ton if et tu réfléchis comment traiter ca

    de plus une boucle qui remplie une variable ... la variable ne contiendra que la dernière valeur lue, donc il y a un problème de conception dans ton code

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut tester datareader
    bonjour ,
    pour le "if" du datareader voici le tuyau pique de msdn lib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
      Dim reader As SqlDataReader = command.ExecuteReader()
     
            If reader.HasRows Then
                Do While reader.Read()
                    Console.WriteLine(reader.GetInt32(0) _
                      & vbTab & reader.GetString(1))
                Loop
            Else
                Console.WriteLine("No rows found.")
            End If
     
            reader.Close()
    bon code....

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/04/2010, 16h00
  2. [AJAX] Requête ajax ne retourne rien
    Par daisy22 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/03/2009, 16h49
  3. Ma requête SQL me retourne un QVariant invalide
    Par Somato dans le forum Bases de données
    Réponses: 15
    Dernier message: 30/05/2008, 15h41
  4. [MySQL] Requête qui ne retourne rien
    Par baleiney dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/06/2006, 18h29

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