簡體   English   中英

MS Access SQL 直通查詢

[英]MS Access SQL Pass Through Query

我正在嘗試重建 MS Access(O365 版本)將查詢傳遞到 MS SQL 查詢(Server Management Studio 版本 15.0.18118.0),但我被困在一塊 MS Access SQL 上。 它位於“A.X_PAGER_CO_ID = P.ROW_ID(+)”下面的行。 我不確定 (+) 是什么或如何工作的。 當我為 MS SQL 服務器更新它時,當我取出它時,它給了我一個錯誤,因為 (+)。 我的數據集不同。 我確實需要在 MS SQL 服務器中返回與 MS Access 中的 (+) 相同的數據集

使用 (+) 我看到這個數據集(在 SQL 服務器中不起作用):

EMPLOYEEID|X_PAGER_CO_ID|ROW_ID   |PhoneNum
1-39T1L0  |1-3A3Z2E     |1-3A3Z2E |555-555-5555
1-39T1L0  |             |         |777-777-7777
1-39T1L0  |             |         |888-888-8888
1-39T1L0  |1-N0-3       |1-N0-3   |+AlphanumericPager 0000000000000 00000

使用 OUT (+) 我看到了這個數據集(在 SQL 服務器中工作):

EMPLOYEEID|X_PAGER_CO_ID|ROW_ID   |PhoneNum
1-39T1L0  |1-3A3Z2E     |1-3A3Z2E |555-555-5555
1-39T1L0  |1-N0-3       |1-N0-3   |+AlphanumericPager 0000000000000 00000
A.PER_ID As EmployeeID,
A.X_PAGER_CO_ID,
P.ROW_ID,

  A.ADDR As PhoneNumber,
  A.COMM_MEDIUM_CD As DeviceType,
  A.X_ACTIVE_FLG As ActiveFlag,
  P.NAME As PagerCompanyName,
  P.PAGE_PH_NUM As PagerCompanyModem,
  P.X_SUPPORT_PH_NUM As PagerCompanySupport,
  A.X_PIN As PIN
FROM 
  xTrack.S_PER_COMM_ADDR A,
  xTrack.S_PAGER_COMPANY P
WHERE
  A.X_PAGER_CO_ID = P.ROW_ID(+) and
  A.PER_ID IN (SELECT 
                         E.PAR_ROW_ID 
                       FROM
                         xTrack.S_EMP_PER E,
                         xTrack.S_CONTACT C,
                         xTrack.S_BU SB,
                         xTrack.S_POSTN SP
                      WHERE
                         E.PAR_ROW_ID = C.PAR_ROW_ID AND
                         SP.BU_ID = SB.ROW_ID AND
                         C.PR_HELD_POSTN_ID = SP.PAR_ROW_ID)

AND A.PER_ID = '1-39T1L0'

那個表達式 P.ROW(+) 不能在訪問中工作,也永遠不可能。 所以,我會 go 回到原來的查詢 - 這根本沒有意義。 我懷疑在原始 sql 中使用了某種用戶定義的 function (UDF())。 所以這實際上不是一個列名,而是某種 function。

您可以啟動訪問並嘗試使用 COLUMNNAME(+) 進行任何查詢,但它會失敗。 因此,您無法遷移在 Access 中不起作用的內容。 在弄清楚原始訪問 sql 是什么樣子之前,恐怕您在 SQL 服務器中重新創建相同查詢的嘗試也會失敗。

該表達式在 Access 中無效 SQL,因此問題在於原始 Access sql 的翻譯 - 它完全是錯誤的或不正確的。

這可能是列名,因此您將/應該使用:

P.[行(+)]

換句話說,對於帶有空格、有趣字符和保留字的列(如“日期”或“名稱”作為訪問中的列名)。 因此,此類保留字需要一組 [] 圍繞列名。 我會看一下表格設計 - 看看是否有一個這樣命名的列。

如果是,則在列名周圍嘗試 []。 如果列名不存在,那么 sql 根本無法在 Access 中工作。

暫無
暫無

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

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