我有一個 Access UNION 查詢,它基于三個子查詢,每個子查詢都有一個包含長文本的備注欄位。
為了使三個子查詢正常作業(即顯示完整的備忘錄欄位文本),我已經使用了 Allen Brown ( http://allenbrowne.com/ser-63.html ) 推薦的解決方法(第一個)。但是,當我使用 UNION 時,這些似乎不起作用。文本再次被截斷為 255 個字符。
如何讓一個查詢顯示包含三個子查詢中所有記錄的全文?
這是我當前的查詢:
FROM _qry_publfinder_cb_other_advagreementno
UNION ALL
SELECT *
FROM _qry_publfinder_cb_other_advagreementyes
UNION ALL
SELECT *
FROM _qry_PublFinder_CB_Rec;```
uj5u.com熱心網友回復:
如果所有三個子查詢共有一個表包含您的備注欄位,請在完成聯合后嘗試將其鏈接,例如
SELECT UQ.FLD1, UQ.FLD2, UQ.FLD3, tbl_with_memos.memo_field
FROM
(SELECT FLD1, FLD2, FLD3
FROM _qry_publfinder_cb_other_advagreementno
UNION ALL
SELECT SELECT FLD1, FLD2, FLD3
FROM _qry_publfinder_cb_other_advagreementyes
UNION ALL
SELECT SELECT FLD1, FLD2, FLD3
FROM _qry_PublFinder_CB_Rec) AS UQ
INNER JOIN tbl_with_memos
ON UQ.FLD1 = tbl_with_memos.FLD1
uj5u.com熱心網友回復:
這似乎是一個記錄在案的“功能”:
https ://answers.microsoft.com/en-us/msoffice/forum/all/union-query-truncates-the-field-contents-of-memo/f81ee760-ec69- 4b5b-a709-6e533f8f66de
UNION 查詢洗掉所有重復記錄。由于備忘錄欄位可能包含數十億位元組,因此開發人員選擇通過將所有備忘錄截斷為 255 位元組來避免將 10 億位元組備忘錄欄位與另一個 10 億位元組備忘錄欄位進行比較這一可能非常耗時的任務。
如果您不需要對記錄進行重復資料洗掉 - 即如果您確信不同表中的記錄已經不同 - 只需使用
聯合所有
而不是查詢中的 UNION。它不會嘗試去重,也不會截斷,而且作為獎勵,查詢會運行得更快。
uj5u.com熱心網友回復:
我選擇為這種特殊情況創建一個解決方法。由于最終查詢在任何情況下都將由腳本呼叫,因此我創建了一個臨時表,將附加 3 個子查詢。這樣,備忘錄欄位不會被截斷。這肯定是第二好的解決方案,但它確實有效。
DoCmd.Hourglass True
CurrentDb.Execute "qry_del_temp_PublFinder_CB"
CurrentDb.Execute "qry_app_PublFinder_CB_1"
CurrentDb.Execute "qry_app_PublFinder_CB_2"
CurrentDb.Execute "qry_app_PublFinder_CB_3"
DoCmd.OpenQuery "qry_PublFinderUpload", acViewNormal
DoCmd.Hourglass False
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451420.html
