VB.NET Recherche instruction indiquant que la requête ne retourne rien
jjg65
Messages postés28Date d'inscriptionmercredi 23 mars 2011StatutMembreDernière intervention16 août 2011
-
30 déc. 2010 à 16:22
jjg65
Messages postés28Date d'inscriptionmercredi 23 mars 2011StatutMembreDernière intervention16 août 2011
-
1 janv. 2011 à 03:04
Bonjour,
Me voici confronté a un épineux problème.
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 ce qui est fort dommageable puisque dans certain cas de figure dans mes reqûetes il n'y a rien a retourner.
En vb 6 il y avait l'instruction qui remplissait très bien cette fonction:
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 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()
A voir également:
VB.NET Recherche instruction indiquant que la requête ne retourne rien
jjg65
Messages postés28Date d'inscriptionmercredi 23 mars 2011StatutMembreDernière intervention16 août 2011 1 janv. 2011 à 03:04
Merci pour les 2 réponses. Après avoir bien galéré pendant 2 jours j'ai trouvé la solution à travers le code ci dessous et l'instruction suivante --> ((IsDBNull(SQLResult)) :
Dim SQLResult As Object
Dim connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= C:\Users\jean-jacques\Desktop\EI\Delegue.mdb;"
Dim dbConnection As OleDb.OleDbConnection = New OleDb.OleDbConnection(connStr)
Dim SQL As New OleDb.OleDbCommand
dbConnection.Open()
SQL.Connection = dbConnection
SQL.CommandText = _
"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 ""Pas Joué"");"
SQLResult = SQL.ExecuteScalar
If (IsDBNull(SQLResult)) Then
calcul_min_recherche_rencontre_a_encoder_playoff()
Else
variable_valeur_minimum = SQLResult
MsgBox((variable_valeur_minimum))
End If