簡體   English   中英

基於SQL服務器臨時表設置Access表單記錄源

[英]Set Access form record source based on SQL Server temporary table

我將 MS Access 與 SQL Server 2019 一起使用。該應用程序可以處理交付 - 這意味着我掃描帶有序列號的條形碼,這些條形碼被保存到 SQL 服務器臨時表中。 在該過程完成並驗證后,臨時表中的數據將被移動到“真實”表中,並且臨時表被處理掉。

像這樣的東西:

pub_Conn.Execute "INSERT INTO #TempUnits " & _
                        "(ProductID, PurchaseOrderDetailID, DeliveryDetailID, SerialNumber, Config, SupWarrantyEnds) " & _
                            "VALUES (" & pub_rsDelivery("ProductID") & ", " & _
                                    pub_rsDelivery("PurchaseOrderDetailID") & ", " & _
                                    pub_rsDelivery("DeliveryDetailID") & ", " & _
                                    "'" & strSerialNumber & "', " & _
                                    strConfig & ", " & _
                                    "'" & Format(DateAdd("m", pub_rsDelivery("Warranty"), pub_rsDelivery("DateShipped")), "yyyy-mm-dd") & "')"

這是轉移到我的生產表:

    pub_Conn.BeginTrans
    
    pub_Conn.Execute "INSERT INTO tbl1Units (ProductID, PurchaseOrderDetailID, DeliveryDetailID, SerialNumber, Config, SupWarrantyEnds) " & _
                        "SELECT ProductID, PurchaseOrderDetailID, DeliveryDetailID, SerialNumber, Config, SupWarrantyEnds FROM #TempUnits"
                        
    pub_Conn.Execute "SELECT DeliveryDetailID, COUNT(*) AS QtyDelivered INTO #TempUnitsQty FROM #TempUnits GROUP BY DeliveryDetailID"
    pub_Conn.Execute "INSERT INTO #TempUnitsQty (DeliveryDetailID, QtyDelivered) " & _
                        "SELECT DeliveryDetailID, Quantity FROM #TempProducts"
    
    pub_Conn.Execute "UPDATE tbl1DeliveryDetails " & _
                        "SET ActualQuantity = T.QtyDelivered " & _
                        "FROM #TempUnitsQty T JOIN tbl1DeliveryDetails D ON T.DeliveryDetailID = D.DeliveryDetailID"

    pub_Conn.Execute "DROP TABLE IF EXISTS #TempProducts"
    pub_Conn.Execute "DROP TABLE IF EXISTS #TempUnitsQty"
    pub_Conn.Execute "DROP TABLE IF EXISTS #TempUnits"
    
    pub_Conn.Execute "UPDATE tbl1Deliveries SET DateReceived = GETDATE() WHERE DeliveryID = " & Forms!frmDeliveryDetails!DeliveryID
    
    pub_Conn.CommitTrans
    MsgBox "Dodávka byla v pořádku přijata.", vbInformation + vbOKOnly, "Úspěch"

效果很好,但我希望能夠看到掃描的進度,例如:

產品 A(已掃描 0/5 件商品)

當我使用本地 Access 表和幾個查詢時,這沒有問題,但我想知道是否以及如何從 SQL 服務器臨時表中提供表單記錄源。 就像是:

Me.RecordSource = pub_Conn.Execute "SELECT * FROM #TempUnits"

(語法錯誤,但只是為了澄清我在尋找什么)

我自己已經弄清楚了。 我在 Access 中創建了一個直通查詢:

SELECT A.ID, D.ProductName, C.PurchaseOrderCode, A.SerialNumber
FROM ##TempUnits A 
JOIN tbl1PurchaseOrderDetails B ON A.PurchaseOrderDetailID = B.PurchaseOrderDetailID
JOIN tbl1PurchaseOrders C ON B.PurchaseOrderID = C.PurchaseOrderID
JOIN tbl1Products D ON B.ProductID = D.ProductID
ORDER BY A.ID DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM