2010-01-15 3 views
0

J'ai beaucoup de commandes en tblOrders et quelques livraisons en tblDeliveries.fonction Access Nz() ne fonctionne pas dans la requête

SELECT tblOrders.SkuBestelId, Sum(tblDeliveries.delivered) AS TotalDelivered 
FROM tblOrders 
INNER JOIN tblDeliveries ON tblOrders.SkuBestelId = tblDeliveries.SkuBestelId 
GROUP BY tblOrders .SkuBestelId; 

Bien sûr, cela me donne beaucoup de champs "TotalDelivered" avec des valeurs NULL. Depuis L'accès renvoie une valeur NULL si j'utilise ceux en tout genre de somme, je dois obtenir un zéro. Je pensais que pour créer un champ comme celui-ci:

GrandTotal: Nz([TotalDelivered], 0)

mais il ne fonctionne pas: erreur de syntaxe incorrecte.

J'ai aussi essayé de mettre la fonction Sum() directement dans la fonction Nz(), mais qui ne le faisais pas, non plus.

Répondre

4

Tout d'abord, si vous deviez utiliser la requête comme indiqué ci-dessus, ce ne serait pas de retour des valeurs nulles, comme vous utilisez un INNER JOIN, à moins que le champ livré réel contient des valeurs nulles.

Alors, permet de dire que vous vouliez dire d'utiliser LEFT JOIN vous pouvez essayer

SELECT tblOrders.SkuBestelId, Sum(NZ([delivered],0)) AS TotalDelivered 
FROM tblOrders LEFT JOIN 
tblDeliveries ON tblOrders.SkuBestelId = tblDeliveries.SkuBestelId 
GROUP BY tblOrders.SkuBestelId; 
+0

Ofcourse! Mettez le Nz() dans le Sum() et non le Sum() dans le Nz(). Il était en effet censé être un LEFT JOIN. Désolé. – skerit