Précédent   Forum des professionnels en informatique > Dotnet > Langages > VB.NET
VB.NET Forum d'entraide sur la programmation Visual Basic .NET. Avant de poster -> FAQ VB.NET, Articles VB.NET, Sources VB.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 22h04   #1
Membre actif
 
Homme
Étudiant
Inscription : février 2011
Messages : 238
Détails du profil
Informations personnelles :
Sexe : Homme

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

Informations forums :
Inscription : février 2011
Messages : 238
Points : 167
Points : 167
Par défaut Condition si & requete sql

Bonjour,
J'ai pas trouvé une solution pour la condition if . Je veux si la requête ne retourne pas une ligne je fais le traitement 1 si elle retourne je fais le traitement 2.
Mais mon problème que si je test la requete dans SQL SERVER j'ai la valeur de retour "NULL" si pas de ligne si non j'ai bien sur une valeur.
merci de m 'aider pour trouver la bonne condition (if).La condition de mon code si dessous ne marche pas.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Dim dst As New DataSet
            Dim adpt As New SqlDataAdapter("SELECT COUNT(DISTINCT[FNDOC])  FROM [Base-Ets-Mtiri].[dbo].[ENTETEFACTURE] where FDATOP>='" & i1 & "' and FDATOP<='" & i2 & "'", connexion.con)
            adpt.Fill(dst, "table")
 
 If (dst.Tables("table").Rows(0).Item(0) = "NULL") Then
 
                traitement1
            Else
 
                traitement2
 
            End If
oami89 est déconnecté   Envoyer un message privé Réponse avec citation 12
Vieux 07/02/2012, 23h21   #2
Membre régulier
 
Homme Nico
Inscription : mai 2010
Messages : 99
Détails du profil
Informations personnelles :
Nom : Homme Nico
Localisation : France

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : mai 2010
Messages : 99
Points : 86
Points : 86
bonsoir,

il semblerait que ta requete renvoie un scalaire, pas une table, aussi, ca n'a pas vraiment de sens de chercher à savoir si elle renvoie des lignes puisqu'elle renvera toujours une et une seule ligne avec une et une seule colonne dont la valeur sera un entier >=0, il faut plutot tester la valeur du scalaire.

oriente toi vers ExecuteScalaire plutot que vers un SqlDataAdapter, tu n'auras pas besoin de tables pour lire le résultat.

sache aussi que la requete SQL elle même peut inclure des conditions IF/ELSE/SELECT...

zebrette
zebrette est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 08/02/2012, 00h07   #3
Membre actif
 
Homme
Étudiant
Inscription : février 2011
Messages : 238
Détails du profil
Informations personnelles :
Sexe : Homme

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

Informations forums :
Inscription : février 2011
Messages : 238
Points : 167
Points : 167
Citation:
Envoyé par zebrette Voir le message
bonsoir,

il semblerait que ta requete renvoie un scalaire, pas une table, aussi, ca n'a pas vraiment de sens de chercher à savoir si elle renvoie des lignes puisqu'elle renvera toujours une et une seule ligne avec une et une seule colonne dont la valeur sera un entier >=0, il faut plutot tester la valeur du scalaire.

oriente toi vers ExecuteScalaire plutot que vers un SqlDataAdapter, tu n'auras pas besoin de tables pour lire le résultat.

sache aussi que la requete SQL elle même peut inclure des conditions IF/ELSE/SELECT...

zebrette
Merci mais comment je fais la condition de verification s il y a un valeur de retour?
oami89 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/02/2012, 08h42   #4
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 370
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 370
Points : 9 781
Points : 9 781
Citation:
Envoyé par oami89 Voir le message
Merci mais comment je fais la condition de verification s il y a un valeur de retour?
Il n'y a aucune vérification à faire ici puisque il s'agit d'une fonction d'agrégat (count) qui retourne toujours une valeur.

Donc :
- ça n'a pas de sens d'utiliser un DataAdapter dans ce contexte.
- utiliser un objet SqlCommand, exécuter la requête avec la méthode ExecuteScalar et caster le retour de la méthode (qui est de type object)vers un entier.
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/02/2012, 10h54   #5
Membre régulier
 
Homme Nico
Inscription : mai 2010
Messages : 99
Détails du profil
Informations personnelles :
Nom : Homme Nico
Localisation : France

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : mai 2010
Messages : 99
Points : 86
Points : 86
Essaie ca:

Code :
1
2
3
4
5
6
7
8
9
10
 
Dim oCmd As SqlCommand = New SqlCommand(TaRequete, Taconnection)
Taconnection.Open()
Dim CompteResultats as integer = oCmd.ExecuteScalar
Taconnection.Close()
if CompteResultats = 0 then
        'traitement1
else
        'traitement2
End if
zebrette est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h54.


 
 
 
 
Partenaires

Hébergement Web