Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SQL Server CE - Requête sélection avec somme

11 réponses
Avatar
Bonjour,

Pour éviter de taper la requête SQL directement dans le code VB .Net 2008
Express, j'ai créé 1 base de données Access avec les mêmes tables et champs.

Ensuite, j'ai créé la requête en mode QBE qui me l'a traduite en SQL (la
requête fonctionne sous Access).

J'ai donc tenté de recopier ce code SQL pour l'utiliser dans SQL Server CE.

Mais j'ai 1 exception levée avec apparemment Sum.

Merci d'avance pour votre aide.

Stéphane

PS :

Voici le message d'erreur exact :

L'exception System.Data.SqlServerCe.SqlCeException n'a pas été gérée
Message="La valeur d'argument spécifiée pour la fonction n'est pas valide.
[ Argument # = 1,Name of function(if known) = Sum ]"


Et voici la requête :

Dim req As String
Dim sdr As SqlCeDataReader
Dim sc As SqlCeCommand

req = "SELECT A.NuméroAuto AS Applications_NuméroAuto, A.Nom AS
Applications_Nom, A.Version, A.Clef, A.Vecteur, A.Commentaires AS
Applications_Commentaires, C.NuméroAuto AS Clients_NuméroAuto, C.Société,
C.Nom AS Clients_Nom, D.NuméroAuto AS Dossiers_NuméroAuto,
D.NuméroApplication, D.NuméroClient, D.CodeOffre, D.CodeCommande,
D.CodeFacture, D.CodeDossier, D.NombreLicences, D.Commentaires AS
Dossiers_Commentaires, Sum(L.LicenceActive) AS SommeDeLicenceActive"
req &= " FROM (Clients AS C INNER JOIN (Applications AS A INNER JOIN
Dossiers AS D ON A.NuméroAuto = D.NuméroApplication) ON C.NuméroAuto =
D.NuméroClient) LEFT JOIN Licences AS L ON D.NuméroAuto = L.NuméroDossier"
req &= " GROUP BY A.NuméroAuto, A.Nom, A.Version, A.Clef, A.Vecteur,
A.Commentaires, C.NuméroAuto, C.Société, C.Nom, D.NuméroAuto,
D.NuméroApplication, D.NuméroClient, D.CodeOffre, D.CodeCommande,
D.CodeFacture, D.CodeDossier, D.NombreLicences, D.Commentaires;"

sc = New SqlCeCommand(req, connection_bdd_appli)

sdr = sc.ExecuteReader

1 réponse

1 2
Avatar
Fred BROUARD
évitez absolument tout ce qui est nom ne respectant pas la norme SQL, à
savoir, accent, cédille, espace; etc. Cela ne peut vous apporter que des
ennuis !

La norme en la matière :
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie1#L1

A +

Stéphane a écrit :
Desfois, je suis bête...

Dans :
SELECT A.NuméroAuto AS Applications_NuméroAuto

Il y a :

Applications_NuméroAuto

Tout simplement !

@+
Stéphane


<Stéphane> a écrit dans le message de news:

Bonjour Fred,

En effet, c'est bien 1 bit, je pensais bêtement que ça retournait 0 ou 1.

Ta solution fonctionne parfaitement, merci beaucoup.

Par contre, j'ai 1 autre soucis, peut-être peux-tu m'aider ?

Quand un champs ne se trouve que dans 1 seule table (ex : Version)
sdr.item("Version") me retourne bien la bonne valeur
mais quand ce champs se trouve dans plusieurs tables (ex : NuméroAuto ou
Commentaires), je n'arrive pas à y accéder sans provoquer d'erreur
sdr.item("A.NuméroAuto")
sdr.item("Applications.NuméroAuto")
aucun des 2 ne fonctionnent, et lève 1 exception (la même que si je mets
sdr.item("UnChampsQuiNExistePas") )

J'avais déjà eu ce problème avec des champs contenant 1 espace, et comme
je n'avais pas trouvé la solution, je les avais tout simplement renommé en
supprimant tous les espaces (ce qui n'est pas la meilleure des solutions
pour résoudre 1 problème)

Merci d'avance,
Stéphane


"Fred" a écrit dans le message de news:
OMQAG%
in news:, Stéphane wrote :

Bonjour,


Bonjour,

Voici le message d'erreur exact :

L'exception System.Data.SqlServerCe.SqlCeException n'a pas été gérée
Message="La valeur d'argument spécifiée pour la fonction n'est pas
valide. [ Argument # = 1,Name of function(if known) = Sum ]"


Vu le nom de la colonne, on dirait qu'elle est de type bit ?
Essaie ceci
SUM(CASE WHEN L.LicenceActive = 1 THEN 1 ELSE 0 END)

--
Fred












--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
1 2