Results 1 to 4 of 4
  1. #1
    Louis is offline Novice
    Windows 10 Access 2016
    Join Date
    Aug 2023
    Posts
    4

    All products not showing on Transactions for a particular date when there are no orders for it

    I have a transactions table which captures data of all stock ins, sales and stock on hand at a particular time. However when I generate the reports on a data by date basis, only the products that have been stocked in or sold on that day show. Other products do not show. I have tried using outer joins but it still don't work. I need help, please. Thank you.

  2. #2
    CJ_London is offline VIP
    Windows 10 Access 2010 32bit
    Join Date
    Mar 2015
    Posts
    11,430
    it will need an outer join but with no detail on your tables, relationships, the sql you have tried or an explanation of what 'does not work' means really don't see how we can help. Provide all 4 of the above then I'm sure we can point you in the right direction

  3. #3
    Join Date
    Apr 2017
    Posts
    1,679
    Let's assume, you have tables:
    tblArticles: ArticleID, ArticleName, ...;
    tblTransactions: TransactionID, TransactionType, TransactionDirection, TransactionDate, ArticleID, TransactionQty, ... (where TransactionType is smallint with values presenting e.g. purchases coming in, sending articles into production, getting articles from production, sending sold articles out, etc., and TransactionDirection is a smallint value either 1 when article is added to stock, or -1 whe article is removed from stock).

    The query for your report may be (on fly) something like:
    Code:
    SELECT  bal.ArticleID. bal.ArticleName, InOut.StartDate, bal.BalanceDate AS EndDate, InOut.StockIn, InOut.StockOut, bal.ArticleBalance AS EndBalance
    FROM
    (SELECT art.ArticleID, art.ArticleName, [BalanceDate] As BalanceDate, SUM(tran1.TransactionDirection*tran1.TransactionQty) As ArticleBalance 
    FROM tblArticles art LEFT JOIN tblTransactions tran1 ON tran1.ArticleID = art.ArticleID 
    WHERE tran1.TransactionDate < [BalanceDate] GROUP BY art.ArticleID, art.ArticleName) As bal LEFT JOIN
    (SELECT  tran2.ArtID, [PeriodStartDate] AS StartDate, SUM(Iif(tran2.TransactionDirection = 1, 1,0)*tran2.ArticleQty AS StockIn, SUM(Iif(tran2.TransactionDirection = -1, 1,0)*tran2.ArticleQty AS StockOut)
    FROM tblTransactions tran2 WHERE tran2.TransactionDate > [PeriodStartDate] AND tran2.TraansactionDate < [BalanceDate] GROUP BY tran2.ArticleID) As InOut ON InOut.ArticleID = bal.ArticleID

  4. #4
    Louis is offline Novice
    Windows 10 Access 2016
    Join Date
    Aug 2023
    Posts
    4

    All products Now Showing On Daily Transactions Report

    Thanks ArvilLaanemets. This worked. Gracias.

    Quote Originally Posted by ArviLaanemets View Post
    Let's assume, you have tables:
    tblArticles: ArticleID, ArticleName, ...;
    tblTransactions: TransactionID, TransactionType, TransactionDirection, TransactionDate, ArticleID, TransactionQty, ... (where TransactionType is smallint with values presenting e.g. purchases coming in, sending articles into production, getting articles from production, sending sold articles out, etc., and TransactionDirection is a smallint value either 1 when article is added to stock, or -1 whe article is removed from stock).

    The query for your report may be (on fly) something like:
    Code:
    SELECT  bal.ArticleID. bal.ArticleName, InOut.StartDate, bal.BalanceDate AS EndDate, InOut.StockIn, InOut.StockOut, bal.ArticleBalance AS EndBalance
    FROM
    (SELECT art.ArticleID, art.ArticleName, [BalanceDate] As BalanceDate, SUM(tran1.TransactionDirection*tran1.TransactionQty) As ArticleBalance 
    FROM tblArticles art LEFT JOIN tblTransactions tran1 ON tran1.ArticleID = art.ArticleID 
    WHERE tran1.TransactionDate < [BalanceDate] GROUP BY art.ArticleID, art.ArticleName) As bal LEFT JOIN
    (SELECT  tran2.ArtID, [PeriodStartDate] AS StartDate, SUM(Iif(tran2.TransactionDirection = 1, 1,0)*tran2.ArticleQty AS StockIn, SUM(Iif(tran2.TransactionDirection = -1, 1,0)*tran2.ArticleQty AS StockOut)
    FROM tblTransactions tran2 WHERE tran2.TransactionDate > [PeriodStartDate] AND tran2.TraansactionDate < [BalanceDate] GROUP BY tran2.ArticleID) As InOut ON InOut.ArticleID = bal.ArticleID

Please reply to this thread with any new information or opinions.

Similar Threads

  1. Orders table with many kinds of Products.
    By MatthewGrace in forum Access
    Replies: 6
    Last Post: 06-27-2017, 07:15 PM
  2. problem with an orders send to products
    By Mehvan in forum Access
    Replies: 2
    Last Post: 01-12-2017, 09:24 AM
  3. Replies: 2
    Last Post: 11-01-2016, 09:04 AM
  4. Replies: 5
    Last Post: 07-10-2014, 09:37 AM
  5. Orders & Products
    By mastromb in forum Database Design
    Replies: 4
    Last Post: 01-22-2010, 07:59 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums