Hallo Ralf.
Das Problem deiner 1. Lösung ist, dass die leeren Felder nicht mit Nz funktionieren.
Die Abweichung dient dazu ein und den selben Artikel intern zu unterscheiden (0=beschädigt, 1=verfügbar, 2=gesperrt). Angenommen das System gibt Menge 2 bei 4711 als beschädigt aus, aber gezählt werden 5, dann gibt es hier eine Bestandsdifferenz.
zu 2:
Die 4 Abfragen (bzw. 2 pro Ausgabe) sollten ja mit nur einer erledigt werden können)
SELECT tbl_inventorystock.article, tbl_inventorystock.variance, tbl_inventorystock.code, tbl_inventorystock.inventory_stock AS [Stock(inventory)], NZ([system_stock],0) AS [Stock(system)], ([inventory_stock])-([system_stock]) AS Difference, tbl_inventorystock.date
FROM tbl_inventorystock LEFT JOIN tbl_systemstock ON (tbl_inventorystock.date = tbl_systemstock.date) AND (tbl_inventorystock.code = tbl_systemstock.code) AND (tbl_inventorystock.variance = tbl_systemstock.variance) AND (tbl_inventorystock.article = tbl_systemstock.article)
GROUP BY tbl_inventorystock.article, tbl_inventorystock.variance, tbl_inventorystock.code, tbl_inventorystock.inventory_stock, NZ([system_stock],0), ([inventory_stock])-([system_stock]), tbl_inventorystock.date
HAVING (((tbl_inventorystock.date)=[Auswahldatum]));
Feld "code" steht zum Beispiel für Standort. Das heißt, die Bestände sind einmal detailliert ausgegeben: Abw und Lager, und einmal als Summe (alle Läger+alle Abw)
SELECT qry_difference_by_detail.article, Sum(qry_difference_by_detail.[Stock(inventory)]) AS [SummevonStock(inventory)], Sum(qry_difference_by_detail.[Stock(system)]) AS [SummevonStock(system)], Sum(qry_difference_by_detail.Difference) AS SummevonDifference, qry_difference_by_detail.date
FROM qry_difference_by_detail
GROUP BY qry_difference_by_detail.article, qry_difference_by_detail.date;
zu3:
sollte mittllerweile etwas deutlicher (oder komplizierter) geworden sein ;o)
zu4:
Habe ich oben schon erwähnt.
Als Ergebnis soll die Abfrage mit leeren Feldern rechnen können (also leere Felder sollen den Inhalt "0" bekommen)
Und ich benötige die Differenz jedes Artikels (also alle in tbl_a geführten und alle in tbl_b geführten Artikel), denn es kann vorkommen, dass ich bei 20 geführten Artikel von 1-15 gezählt habe, und im System von 6-20 geführt werden. Daraus folgt eben eine Liste mit 20 Artikeln und deren Differenz. Aber geht doch nur, wenn alle Bestandsfelder gefüllt sind (integer und nicht NULL)
Mir raucht der Kopf.
Gruß
Andreas