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

10 réponses

1 2
Avatar
Med Bouchenafa
Utilise management studio pour te connecter a ton SQL Server CE
Ouvre l'analyseur de requetes et copie dans code et execute le a partir de la
Il est fort possible que SQL Server CE utuilise une syntaxe particuliere
pour le SUM

--
Bien cordialement
Med Bouchenafa


"Stéphane" a écrit :

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





Avatar
Bonjour Med,

Tout d'abord, merci pour ton aide.

Par contre, j'ai 1 soucis : je n'arrive pas à faire connecter quoi que ce
soit MS SQL Server 2005 Management Studio Express.

Je n'utilise peut être pas la bonne version de Management Studio, mais je
n'ai pas trouvé pour 2008 ?

As-tu des infos de ce côté là ?

Merci d'avance,
Stéphane


"Med Bouchenafa" a écrit dans le message de news:

Utilise management studio pour te connecter a ton SQL Server CE
Ouvre l'analyseur de requetes et copie dans code et execute le a partir de
la
Il est fort possible que SQL Server CE utuilise une syntaxe particuliere
pour le SUM

--
Bien cordialement
Med Bouchenafa


"Stéphane" a écrit :

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







Avatar
Med Bouchenafa
Je ne sais pas si le Management Studio Express se connecte a SQL Server CE
Tu peux toujours downlaoder une version d'evaluation de SQL Server et
installer que les outils clients. Tu recuperes alors une version complete de
Management Studio
--
Bien cordialement
Med Bouchenafa


"Stéphane" a écrit :

Bonjour Med,

Tout d'abord, merci pour ton aide.

Par contre, j'ai 1 soucis : je n'arrive pas à faire connecter quoi que ce
soit MS SQL Server 2005 Management Studio Express.

Je n'utilise peut être pas la bonne version de Management Studio, mais je
n'ai pas trouvé pour 2008 ?

As-tu des infos de ce côté là ?

Merci d'avance,
Stéphane


"Med Bouchenafa" a écrit dans le message de news:

> Utilise management studio pour te connecter a ton SQL Server CE
> Ouvre l'analyseur de requetes et copie dans code et execute le a partir de
> la
> Il est fort possible que SQL Server CE utuilise une syntaxe particuliere
> pour le SUM
>
> --
> Bien cordialement
> Med Bouchenafa
>
>
> "Stéphane" a écrit :
>
>> 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
>>
>>
>>





Avatar
Fred
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

Avatar
Apparemment non, ca n'a pas l'air compatible.
Une version d'évaluation ne me convient pas car le produit ne serait très
certainement pas acheté au final, donc impossible à exploiter.

Merci encore pour ton aide Med,
Stéphane.

"Med Bouchenafa" a écrit dans le message de news:

Je ne sais pas si le Management Studio Express se connecte a SQL Server CE
Tu peux toujours downlaoder une version d'evaluation de SQL Server et
installer que les outils clients. Tu recuperes alors une version complete
de
Management Studio
--
Bien cordialement
Med Bouchenafa


"Stéphane" a écrit :

Bonjour Med,

Tout d'abord, merci pour ton aide.

Par contre, j'ai 1 soucis : je n'arrive pas à faire connecter quoi que ce
soit MS SQL Server 2005 Management Studio Express.

Je n'utilise peut être pas la bonne version de Management Studio, mais je
n'ai pas trouvé pour 2008 ?

As-tu des infos de ce côté là ?

Merci d'avance,
Stéphane


"Med Bouchenafa" a écrit dans le message de
news:

> Utilise management studio pour te connecter a ton SQL Server CE
> Ouvre l'analyseur de requetes et copie dans code et execute le a partir
> de
> la
> Il est fort possible que SQL Server CE utuilise une syntaxe
> particuliere
> pour le SUM
>
> --
> Bien cordialement
> Med Bouchenafa
>
>
> "Stéphane" a écrit :
>
>> 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
>>
>>
>>







Avatar
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



Avatar
Fred
in news:, Stéphane wrote :

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)



Tu accèdes aux colonnes par leur noms ? Il me semblait qu'il fallait un
index (quitte à passer par GetOrdinal). Mais cela fait longtemps que
j'ai utilisé le SqlCeDatareader.
Je n'ai pas de réponse directe à ton problème. J'aliase toujours mes
colonnes pour que leur nom soit unique.

SELECT A.NumeroAuto AS NumeroAutoDeA,
etc ...


--
Fred

Avatar
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







Avatar
Re,

Oui, je préfère mettre le nom que l'index (sdr.item accepte 2 surcharges
(integer et string)).
L'alias, oui, ca j'avais complètement oublié d'y penser !
Et cette solution me convient parfaitement.

Merci encore
Stéphane


"Fred" a écrit dans le message de news:

in news:, Stéphane wrote :

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)



Tu accèdes aux colonnes par leur noms ? Il me semblait qu'il fallait un
index (quitte à passer par GetOrdinal). Mais cela fait longtemps que j'ai
utilisé le SqlCeDatareader.
Je n'ai pas de réponse directe à ton problème. J'aliase toujours mes
colonnes pour que leur nom soit unique.

SELECT A.NumeroAuto AS NumeroAutoDeA,
etc ...


--
Fred



Avatar
Fred BROUARD
Dands ce cas il faut acheter une licence développeur qui coute dans les
70 $ !

A +

Stéphane a écrit :
Apparemment non, ca n'a pas l'air compatible.
Une version d'évaluation ne me convient pas car le produit ne serait très
certainement pas acheté au final, donc impossible à exploiter.

Merci encore pour ton aide Med,
Stéphane.

"Med Bouchenafa" a écrit dans le message de news:

Je ne sais pas si le Management Studio Express se connecte a SQL Server CE
Tu peux toujours downlaoder une version d'evaluation de SQL Server et
installer que les outils clients. Tu recuperes alors une version complete
de
Management Studio
--
Bien cordialement
Med Bouchenafa


"Stéphane" a écrit :

Bonjour Med,

Tout d'abord, merci pour ton aide.

Par contre, j'ai 1 soucis : je n'arrive pas à faire connecter quoi que ce
soit MS SQL Server 2005 Management Studio Express.

Je n'utilise peut être pas la bonne version de Management Studio, mais je
n'ai pas trouvé pour 2008 ?

As-tu des infos de ce côté là ?

Merci d'avance,
Stéphane


"Med Bouchenafa" a écrit dans le message de
news:

Utilise management studio pour te connecter a ton SQL Server CE
Ouvre l'analyseur de requetes et copie dans code et execute le a partir
de
la
Il est fort possible que SQL Server CE utuilise une syntaxe
particuliere
pour le SUM

--
Bien cordialement
Med Bouchenafa


"Stéphane" a écrit :

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



















--
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