2015-01-07 73 views
2

這裏是適用於未綁定列表框的行來源上Form_Current我VB的SQL語句:訪問SELECT語句和硬編碼值

SelectionSQL = "SELECT tbl_Patches_Cisco_SAs_Applicability.PatchID, tbl_Patches_Cisco_SAs_Applicability.OS 
     FROM tbl_Patches_Cisco_SAs_Applicability 
     WHERE (((tbl_Patches_Cisco_SAs_Applicability.PatchID)=[Forms]![Patch_Management_Cisco_Stage2]![Publication_ID]));" 

它的偉大工程,唯一的問題是我想要的行源以包括「NA」的硬編碼值,而不必創建關聯的記錄。這是可能的和如何?即以某種方式將NA添加到行源?

+0

是的,我不能只是增加一個「NA」記錄查詢的表...因爲該表中的每條記錄都需要非常謹慎地創建......代表了一系列符合條件的網絡資產,因此NA記錄會很糟糕。簡單地說,問題是「我可以以某種方式在行源或SQL語句中包含硬編碼值」。我正在考慮SelectionSQL&「NA」,或者可能以某種方式將此sql語句分配給記錄集,然後將NA添加到記錄集,並以某種方式將其分配給行源。讓我知道。謝謝。 – gunslingor

回答

2

您可以使用UNION查詢,該查詢將製作值的單行添加到您現在擁有的值。

SELECT a.PatchID, a.OS 
FROM tbl_Patches_Cisco_SAs_Applicability AS a 
WHERE a.PatchID=[Forms]![Patch_Management_Cisco_Stage2]![Publication_ID] 
UNION ALL 
SELECT 0 AS PatchID, 'NA' AS OS 
FROM Dual; 

可以是隻返回一個行中的任何表或查詢。我使用自定義表用於此目的:CreateDualTable()

+0

我實際上給了錯誤的查詢,但我得到了要點。我創建了一個名爲「NA」的新表,並且僅爲其分配了一個名爲「NA」的字段,只有一個值爲「NA」。這裏是語句:Me.OSs_On_Network.RowSource =「SELECT DISTINCT CYBER_ASSETS.OS,CYBER_ASSETS.CPCA_or_equal FROM CYBER_ASSETS WHERE(CYBER_ASSETS.CPCA_or_equal ='YES')UNION ALL SELECT 0 AS PatchID,'NA'AS OS FROM na;」這幾乎可以工作,但它將「0」添加到列表而不是NA。有任何想法嗎? – gunslingor

+0

啊!我猜你想在* OS *列中使用「NA」。由於我猜錯了,交換這兩列的值:'SELECT'NA'PatchID,0 AS OS' – HansUp

+0

這似乎是一個竅門,這個設置讓我知道如果你認爲它會導致任何問題......說明字段名稱而不是0:Me.OSs_On_Network.RowSource =「SELECT DISTINCT CYBER_ASSETS.OS,CYBER_ASSETS.CPCA_or_equal FROM CYBER_ASSETS WHERE(CYBER_ASSETS.CPCA_or_equal ='YES')UNION ALL SELECT NA AS PatchID,'NA'AS OS FROM na; 「 – gunslingor

0

一種可能是使用一個UNION查詢:

SelectionSQL = "SELECT tbl_Patches_Cisco_SAs_Applicability.PatchID, 
    tbl_Patches_Cisco_SAs_Applicability.OS FROM tbl_Patches_Cisco_SAs_Applicability WHERE 
    (((tbl_Patches_Cisco_SAs_Applicability.PatchID)=[Forms]![Patch_Management_Cisco_Stage2]![Publication_ID])) 
    UNION SELECT TOP 1 0, 'NA' FROM tbl_Patches_Cisco_SAs_Applicability"