0
TRANSFORM IIF(IsNull(First(wrhCode)),'' ,First(wrhCode) & ', '  ) AS FirstOfwrhCode 
   SELECT whiitemID AS ItemID, 
          whiItemName AS Name, 
          Sum(Qty) AS Quantity
     FROM (SELECT wrhID,  
                  wrhCode, 
                  whiitemID,
                  whiItemName,
                  Sum(whiQty) AS QTY 
            FROM tblWarehouseItem AS WI 
                 INNER JOIN tblWarehouse AS W ON WI.whiwrhID = W.wrhID
           WHERE whiActive = True                           
             AND whiwrhID IN (Forms.frmStockControl.Form.txtwrhIDs) 
        GROUP BY wrhID, wrhCode, whiItemName, whiitemID)  AS [%$##@_Alias]
 GROUP BY whiitemID, whiItemName
    PIVOT 'wrhID' & wrhID;

I have this query to my form but it does not work: But if i edit :

 AND whiwrhID IN (Forms.frmStockControl.Form.txtwrhIDs)

to:

 AND whiwrhID IN (26,27,29)

Is working any ideas how to fix the error

emilios
  • 375
  • 1
  • 9
  • 20

3 Answers3

1

You can't.

    whiwrhID IN (26,27,29)

must be hard coded in SQL.

Your only option is to adjust the SQL before calling the query.

Gustav
  • 53,498
  • 7
  • 29
  • 55
1

Why not use VBA to build a dynamic query?

You can initiate a sub MakeAQuery through an event or macro to modify your IN statement to whatever you need:

Sub MakeAQuery()
    Dim db As DAO.Database
    Dim strSQL As String
    Dim strElements As String

    Set db = CurrentDb()

'Your current SQL with a parameter in the IN clause
    strSQL = "TRANSFORM IIF(IsNull(First(wrhCode)),'' ,First(wrhCode) & ', '  ) _
    AS FirstOfwrhCode _
    SELECT whiitemID AS ItemID, _
      whiItemName AS Name, _
      Sum(Qty) AS Quantity _
    FROM (SELECT wrhID, _
              wrhCode, _
              whiitemID, _
              whiItemName, _
              Sum(whiQty) AS QTY _
        FROM tblWarehouseItem AS WI _
             INNER JOIN tblWarehouse AS W ON WI.whiwrhID = W.wrhID _
       WHERE whiActive = True _                  
         AND whiwrhID In ({0})_
       GROUP BY wrhID, wrhCode, whiItemName, whiitemID) _ 
    AS [%$##@_Alias]
    GROUP BY whiitemID, whiItemName
    PIVOT 'wrhID' & wrhID;"

    ' Retrieve your IDs for the IN clause
    strElements = Forms.frmStockControl.Form.txtwrhIDs

    ' Assign SQL to query
    db.QueryDefs!YourQuery.SQL = Replace(strSQL, "{0}", strElements)

End Sub

To assign this VBA sub to a button or other control on your form...

  1. Go to to Layout View for your form.
  2. Clicking on a control, go to the Event tab on the Property Sheet.
  3. Hit the ... button beside the On Click property. (You could do this for any event property; OnClick works when you click on the control.)
  4. Choose Code Builder and Ok.
  5. Put Call MakeTheQuery in the sub that it builds for you.
Community
  • 1
  • 1
ZX9
  • 898
  • 2
  • 16
  • 34
-1

Try this instead:

Forms.frmStockControl.Form.txtwrhIDs.Text
Ziem
  • 6,579
  • 8
  • 53
  • 86
Karlta05
  • 165
  • 10