我知道我可以用多值欄位來做這件事,但這會導致其他問題。
我有一個帶有組合框的主分頁表格,用于對各種不同的組合進行排序。例如,我有一個cbo_Customers,cbo_CustomerLocations,等等。(見底部的VBA代碼)
同一個CustomerLocation可以有不同的Customers。因此,有可能有2個不同的Customers,它們有相同的CustomerLocation。
在我的主分割表單中,我有一個名為cbo_CustomerLocations的組合框,它從tbl_CustomerLocations中查找值。
tbl_CustomerLocations包括4個欄位。CustomerLocationID, LocationCompanyName, LocationCompanyPlace, CustomerID (它被鏈接到tbl_Customers)
我有1個位置被命名。TESTLOCATION,
我有2個客戶被命名為: CUSTOMER_1和CUSTOMER_2
我試圖避免多值欄位,因此
在tbl_CustomerLocations中,值為TESTLOCATION的記錄在這個表中出現了兩次,因為欄位CustomerID被鏈接到CUSTOMER_1,而另一個記錄被鏈接到CUSTOMER_2
現在在我的主表單的組合框cbo_CustomerLocations中,這個TESTLOCATION也顯示了兩次(2個不同的CustomerLocationID)
我希望這個組合框能夠GROUP BY CustomerLocationName。而且,如果我選擇這個(分組的)TESTLOCATION"TESTLOCATION"的記錄。(TESTLOCATION有不同的ID)
這是我的SQL,其中TESTLOCATION被顯示兩次:
SELECT tbl_CustomerLocations.CustomerLocationID。
tbl_CustomerLocations.LocationCompanyName,
tbl_CustomerLocations.LocationCompanyPlace
FROM tbl_CustomerLocations
ORDER BY tbl_CustomerLocations.LocationCompanyName;
我試了一下:
SELECT Count(tbl_CustomerLocations.CustomerLocationID) as
CountOfCustomerLocationID, tbl_CustomerLocations.LocationCompanyName
FROM tbl_CustomerLocations
GROUP BY tbl_CustomerLocations.LocationCompanyName;
這確實在組合框中結合了TESTLOCATION,但我的記錄并沒有顯示在我的分割表格中
我還嘗試了這個,在Stack Overflow上發現的:
SELECT * FROM tbl_CustomerLocations e1, tbl_CustomerLocations e2
WHERE e1.LocationCompanyName = e2.LocationCompanyName
and e1.CustomerLocationID != e2.CustomerLocationID。
這也是一個死結。
在我的主分割表單中,在我更新combobox cbo_CustomerLocations之后,以下VBA代碼被呼叫:
Private Sub cbo_CustomerLocations_AfterUpdate()
Call SearchCriteria
End Sub
Function SearchCriteria()
Dim Customer, CustomerLocationas String
Dim task, strCriteria As String
If IsNull(Me.Cbo_Customers) Then
客戶="[CustomerID] like '*'"。
Else
Customer = "[CustomerID] = " & Me.Cbo_Customers
End If
If IsNull(Me.cbo_CustomerLocations) Then
CustomerLocation = "[CustomerLocationID] like '*'"/span>.
Else
CustomerLocation = " [CustomerLocationID] = " & cbo_CustomerLocations
End If
strCriteria = Customer & "And" & CustomerLocation
task = "Select * from qry_Administration where (" & strCriteria & ") "
Me.Form.RecordSource = task
Me.Form.Requery
所以基本上我想在cbo_CustomerLocations中選擇(分組的)TESTLOCATION。然后函式SearchCriteria被呼叫,我的表單顯示所有找到TESTLOCATION字串的記錄。 TESTLOCATION有不同的ID。
我想我還必須以某種方式編輯這些行?
我想我還必須以某種方式編輯這些行?
strCriteria = Customer & "And" & CustomerLocation
task = "Select * from qry_Administration where (" & strCriteria & ") "
因為strCriteria給這個分組欄位帶來了問題?
我知道這是一個很大的資訊,但我盡可能的清楚。
uj5u.com熱心網友回復:
如果我的理解正確的話,你希望主表單中的cbo_CustomerLocations組合框包含一個不同的客戶位置串列。在選擇一個值時,您希望子表單被過濾,以便只顯示所選地點的客戶,是嗎?以下是我的建議:
組合框
組合框:tbl_CustomerLocations包含這樣的資料:
| CustomerLocationID | LocationCompanyName | LocationCompanyPlaceCustomerID |
|---|---|---|
| 1 | 公司A |
你希望組合框包含這個串列:
| LocationCompanyPlace | |
|---|---|
| 英格蘭 | 荷蘭 |
| 荷蘭 | 西班牙 |
| 西班牙 |
為了實作這一點,你的組合框的資料源應該如下:
SELECT LocationCompanyPlace
FROM tbl_CustomerLocations
GROUP BY LocationCompanyPlace
OR
SELECT DISTINCT LocationCompanyPlace
FROM tbl_CustomerLocations
GROUP BY LocationCompanyPlace
(上述兩個查詢應該回傳相同的結果。
現在,你需要更新你的 VBA 代碼。
子 cbo_CustomerLocations_AfterUpdate(): (不需要改動)
Private Sub cbo_CustomerLocations_AfterUpdate()
Call SearchCriteria
End Sub
函式SearchCriteria():
FunctionSearchCriteria()
Dim Customer, CustomerLocation asString
Dim task, strCriteria As String
Dim recordSourceAs string
If IsNull(Me.Cbo_Customers) = False Then '如果一個客戶被選中,按選中的客戶過濾。
recordSource = "SELECT * FROM qry_Administration WHERE [CustomerID] = " & Me.Cbo_Customers
Else '如果沒有選擇客戶,則檢查是否選擇CustomerLocation。
If IsNull(me. cbo_CustomerLocations) = False Then '如果客戶位置被選中,則通過選定的客戶位置過濾。
'如果qry_Administration中存在CustomerLocationPlace欄位,請使用這一行。
recordSource = "SELECT * FROM qry_Administration WHERE [CustomerLocationPlace]='" & Me.Cbo_CustomerLocations & " ' "
'如果customerLocationPlace欄位在qry_Administration中不存在,則使用下面的recordSource。
'這一行將qry_Administration連接到tbl_CustomerLocations表,以便你可以對CustomerLocationPlace欄位進行過濾。
'通過使用 "SELECT a.*",只回傳qry_Administration的記錄。
'recordSource = "SELECT a.* FROM qry_Administration a INNER JOIN dbo.tbl_CustomerLocations l ON a.CustomerID = l.CustomerID WHERE l.CustomerLocationPlace='" & Me.Cbo_CustomerLocations & " '"
Else '如果既沒有選擇客戶也沒有選擇客戶地點,則回傳qry_Administration中的所有記錄。
recordSource = "SELECT * FROM qry_Administration"
End If
End If
Me.Form.RecordSource = recordSource
Me.Form.Requery
End Function[/span
我已經包含了注釋來解釋上面的代碼,但請注意,你可能需要調整嵌套if陳述句中If部分的代碼。如果CustomerLocationPlace欄位存在于qry_Administration中,那么您可以按原樣使用該代碼。然而,如果CustomerLocationPlace欄位不存在于qry_Administration中,那么你應該注釋掉第12行(recordSource = "SELECT * FROM qry_Administration WHERE [CustomerLocationPlace]='" & Me. Cbo_CustomerLocations & "'")& 取消注釋第17行('recordSource = "SELECT a.* FROM qry_Administration a INNER JOIN dbo.tbl_CustomerLocations l ON a.CustomerID = l.CustomerID WHERE l.CustomerLocationPlace='" & Me.Cbo_CustomerLocations & " ' ")。
我相信這個解決方案應該可以解決你的問題。如果你有任何問題或擔憂,請告訴我。
uj5u.com熱心網友回復:
在對你的解決方案進行了一些編輯后,我成功地使其運作起來。
帶有分組的combobox的解決方案可以作業。你關于CustomerLocationPlace是查詢的一部分的說法也是正確的。我沒有使用CustomerLocationPlace欄位,而是使用CustomerLocationName欄位。我還不得不添加了以下一行:
CustomerLocationPlace = " [LocationCompanyPlace] = '" & Me. cbo_CustomerLocations.Column(1) & "' "。
我剝離了我的VBA,所以對你們來說更容易。我的腳本比我之前發布的要復雜一點。我確實使用了你的解決方案,但我保留了我的VBA腳本,就像我之前的一樣。為了說明問題,這里是我的完整的VBA腳本,其中包含了David Buck的解決方案:
FunctionSearchCriteria()
Dim Customer, CustomerLocation, CustomerLocationPlace, Protocol, SampleProvider, BRL, ProjectLeader, LabNumber, ExecutionDate, Classification, SampleProvider2, Material As String
Dim Extern, Intern As String
Dim strText, strSearch As String
Dim task, strCriteria As String
Me.FilterOn = True.
If IsNull(Me.txt_Search) Or Me. txt_Search = "" Then。
strText = "[DataID] like '*'"。
Else
strSearch = Me.txt_Search.Value
strText = "(LabNumberPrimary like ""*" & strSearch & "*")" & "or" & _
"(LabNumber_2_MH like ""*" & strSearch & "*")" & "或者" & _
"(LabNumber_3_ASB like ""*" & strSearch & "*")" & "或者" & _
"(LabNumber_4_CT like ""*" & strSearch & "*")" & "或者" & _
"(LabNumber_5_LA like ""*" & strSearch & "*")" & "或者" & _
"(LabNumber_6_CBR like ""*" & strSearch & "*")" & "或者" & _
"(HerkeuringNumber like ""*" & strSearch & "*")" & "或者" & _
"(Protocol like ""*" & strSearch & "*")" & "或者" & _
"(BRL like ""*" & strSearch & "*")" & "or" & _
"(PrincipalCompanyName like ""*" & strSearch & "*")" & "或者" & _
"(ProjectLeaderName like ""*" & strSearch & "*")" & "或者" & _
"(Material like ""*" & strSearch & "*")" & "或者" & _
"(Classification like ""*" & strSearch & "*")" & "或者" & _
"(PrincipalContactName like ""*" & strSearch & "*")" & "或者" & _
"(LocationContactName like ""*" & strSearch & "*")" & "或者" & _
"(SampleProviderName like ""*" & strSearch & "*")" & "或者" & _
"(QuotationNumber like ""*" & strSearch & "*")" & "或者" & _
"(LocationCompanyName like ""*" & strSearch & "*")"
End If
如果 Me.chk_Ex = True Then
Extern = "[AuditExID] = 2"
Else
Extern = "[AuditExID] like '*'"
End If
如果 Me.chk_In = True Then
Intern = "[AuditInID] = 2"/span>
Else
Intern = "[AuditInID] like '*'"
End If
If IsNull(Me.cbo_CustomerLocations) Then
CustomerLocation = "[CustomerLocationID] like '*'"/span>.
Else
CustomerLocation = "[LocationCompanyName] = '" & Me.cbo_CustomerLocations.Column(0) & " ' "
CustomerLocationPlace = "[LocationCompanyPlace] = '" & Me.cbo_CustomerLocations.Column(1) & " ' "
End If
If IsNull(Me.Cbo_Customers) Then
客戶="[CustomerID] like '*'"。
Else
Customer = "[CustomerID] = " & Me.Cbo_Customers
End If
If IsNull(Me.cbo_Protocol) Or Me。 cbo_Protocol = "" Then.
Protocol = "[ProtocolID] like '*'"
ElseIf Me.cbo_Protocol = 5 Then
Protocol = "[ProtocolID] in (" & TempVars! tempProtocol & ")"
Else
Protocol = "([ProtocolID] = " & Me.cbo_Protocol & ") "
End If
If IsNull(Me.cbo_Classification) Or Me。 cbo_Classification = "" Then。
Classification = "[ ClassificationID] like '*'"
ElseIf Me.cbo_Classification = 5 Then
Classification = "[ClassificationID] in (" & TempVars! tempClassification & ")"
Else
Classification = "([ClassificationID] = " & Me.cbo_Classification & ") "
End If
If IsNull(Me.cbo_SampleProviders) Or Me. cbo_SampleProviders = "" Then。
SampleProvider = "[SampleProviderPrimaryID] like '*'"
ElseIf Me.cbo_SampleProviders = 6 Then
SampleProvider = "[SampleProviderPrimaryID] in (" & TempVars! tempSampleProviders & ")"
Else
SampleProvider = "([SampleProviderPrimaryID] = " & Me.cbo_SampleProviders & ") "/span>
End If
If IsNull(Me.cbo_SampleProviders2) Then
SampleProvider2 = "[SampleProviderSecondaryID] like '*'"/span>.
Else
SampleProvider2 = " [SampleProviderSecondaryID] = " & Me.cbo_SampleProviders2
End If
If IsNull(Me.cbo_BRL) Or Me。 cbo_BRL = "" Then。
BRL = "[BRLID] like '*'"
ElseIf Me.cbo_BRL = 5 Then
BRL = "[BRLID] in (" & TempVars! tempBRL & ")"
Else
BRL = "([BRLID] = " & Me.cbo_BRL & ") "
End If
If IsNull(Me.cbo_ProjectLeaders) Then
ProjectLeader = "[ProjectLeaderID] like '*'"/span>.
Else
ProjectLeader = "[ProjectLeaderID] = " & Me.cbo_ProjectLeaders
End If
If IsNull(Me.txt_ExecutionDateTo) Then
ExecutionDate = "[ExecutionDate] like '*'"。
Else
If IsNull(Me.txt_ExecutionDateFrom) Then
ExecutionDate = "[ExecutionDate] like '" & Me.txt_ExecutionDateTo & " ' "
Else。
ExecutionDate = "([ExecutionDate] >= #" & Format(Me. txt_ExecutionDateFrom, "mm/dd/yyyy") & "# And [ExecutionDate] <= #"/span> & Format(Me. txt_ExecutionDateTo, "mm/dd/yyyy") & "#)"。
End If
End If
If IsNull(Me.cbo_Material) Or Me。 cbo_Material = "" Then。
Material = "[MaterialID] like '*'"
ElseIf Me.cbo_Material = 6 Then
Material = "[MaterialID] in (" & TempVars! tempMaterial & ")"
Else
Material = "([MaterialID] = " & Me.cbo_Material & ") "
End If
strCriteria = Customer & "And" & CustomerLocation & "And" & CustomerLocationPlace & "And" & Protocol &。"And" & SampleProvider & "And" & BRL & "And" & ProjectLeader & "And" _
& ExecutionDate & "And"/span> & Extern & "And"/span> & Intern & "And"/span> & Classification & "And"/span> _
& SampleProvider2 & "And"/span> & Material & "And"/span> & strText
task = "Select * from qry_Administration where (" & strCriteria & ") order by ExecutionDate DESC"
Debug.Print (task)
Me.Form.RecordSource = task
Me.Form.Requery = task
End Function[/span
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/314196.html
標籤:
上一篇:MicrosoftAccess試圖在宏中找到表作為欄位
- 標籤雲
-
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)
- 熱門瀏覽
-
-
【從零開始擼一個App】Dagger2
Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......
uj5u.com 2020-09-10 06:57:59 more -
Flutter Weekly Issue 66
新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......
uj5u.com 2020-09-10 06:58:52 more -
Proguard 常用規則
介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。
uj5u.com 2020-09-10 06:59:00 more
...... -
Android 開發技術周報 Issue#292
新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......
uj5u.com 2020-09-10 07:00:37 more -
AutoFitTextureView Error inflating class
報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......
uj5u.com 2020-09-10 07:00:41 more -
根據Uri,Cursor沒有獲取到對應的屬性
Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......
uj5u.com 2020-09-10 07:00:44 more -
Android連載29-持久化技術
一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......
uj5u.com 2020-09-10 07:00:47 more -
Android Camera2Video整合到自己專案里
背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......
uj5u.com 2020-09-10 07:00:50 more -
Android 開發技術周報 Issue#293
新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......
uj5u.com 2020-09-10 07:01:38 more -
海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟
掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......
uj5u.com 2020-09-10 07:01:43 more
-
- 最新发布
-
-
【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息
一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......
uj5u.com 2023-04-20 08:40:11 more -
【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息
一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......
uj5u.com 2023-04-20 08:39:13 more -
iOS從UI記憶體地址到讀取成員變數(oc/swift)
開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......
uj5u.com 2023-04-19 09:16:23 more -
FIDE重磅更新!性能飛躍!體驗有禮!
FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......
uj5u.com 2023-04-19 09:16:15 more -
游戲內嵌社區服務開放,助力開發者提升玩家互動與留存
華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......
uj5u.com 2023-04-19 09:15:46 more -
iOS從UI記憶體地址到讀取成員變數(oc/swift)
開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......
uj5u.com 2023-04-19 09:14:53 more -
FIDE重磅更新!性能飛躍!體驗有禮!
FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......
uj5u.com 2023-04-19 09:14:08 more -
游戲內嵌社區服務開放,助力開發者提升玩家互動與留存
華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......
uj5u.com 2023-04-19 09:08:34 more
- 友情鏈接
