[英]MS Access: Using Single form to enter query parameters in MS access
恭維的一天。 根據先前收到的反饋,
在MS Access中創建票務銷售數據庫之后。 我想使用一個表格來查詢特定月份的特定機票價格,並將價格顯示在文本字段或標簽中。
以下是示例表和使用的查詢
公司表
CompID CompName
A Ann
B Bahn
C Can
KK Seven
- --
票務表
TicketCode TicketDes
10 Two people
11 Monthly
12 Weekend
14 Daily
票價表
ID TicketCode Price ValidFrom
1 10 $35.50 8/1/2010
2 10 $38.50 8/1/2011
3 11 $20.50 8/1/2010
4 11 $25.00 11/1/2011
5 12 $50.50 12/1/2010
6 12 $60.50 1/1/2011
7 14 $15.50 2/1/2010
8 14 $19.00 3/1/2011
9 10 $40.50 4/1/2012
使用過的查詢:
SELECT TicketPriceTable.Price
FROM TicketPriceTable
WHERE (((TicketPriceTable.ValidFrom)=[DATE01]) AND ((TicketPriceTable.TicketCode)=[TCODE01]));
例如,“月”字段等於對[DATE01]參數的輸入“機票代碼”等於對[TCODE01]參數的輸入文本字段等於查詢結果的輸出(門票價格)
如有任何疑問,請不要猶豫,非常感謝您的時間和期待的反饋。
您可以使用以下表達式來引用表單字段中的值:[Forms]![NameOfTheForm]![NameOfTheField]
在Access Forms中,您可以將RecordSource
設置為查詢,而不僅僅是一個表。 這可以是存儲查詢的名稱,也可以是SQL語句。 這使您可以通過此查詢將控件綁定到不同的表。
您還可以將子窗體放置在主窗體上,該子窗體綁定到除主窗體以外的其他表。
您還可以通過以等號開頭將ControlSource
設置為表達式來在TextBox
顯示表達式的結果
=DLookUp("Price", "TicketPriceTable", "TicketCode=" & Me!cboTicketCode.Value)
您可以將文本框的格式設置為MM\\/yyyy
或使用格式功能
s = Format$(Now, "MM\/yyyy")
對您的評論的答復,該評論涉及基於MS Access中的月份從票證數據庫訪問數據 )
您可以使用笛卡爾積來創建大量記錄。 如果在查詢中選擇兩個表但不將它們聯接,則結果是笛卡爾乘積,這意味着一個表中的每個記錄都與另一個表中的每個記錄合並。
我們添加一個名為MonthTable
的新表
MonthNr MonthName
1 January
2 February
3 March
... ...
現在,如果將包含12條記錄的表與包含4條記錄的TicketTable
組合在一起,將得到包含48條記錄的結果
SELECT M.MonthNr, M.MonthName, T.TicketCode, T.TicketDes
FROM MonthTable M, TicketTable T
ORDER BY M.MonthNr, T.TicketCode
你得到這樣的東西
MonthNr MonthName TicketCode TicketDes
1 January 10 Two people
1 January 11 Monthly
1 January 12 Weekend
1 January 14 Daily
2 February 10 Two people
2 February 11 Monthly
2 February 12 Weekend
2 February 14 Daily
3 March 10 Two people
3 March 11 Monthly
3 March 12 Weekend
3 March 14 Daily
... ... ... ...
您還可以獲取像這樣的機票類型實際有效的價格
SELECT TicketCode, Price, ActualPeriod AS ValidFrom
FROM (SELECT TicketCode, MAX(ValidFrom) AS ActualPeriod
FROM TicketPriceTable
WHERE ValidFrom <= Date
GROUP BY TicketCode) X
INNER JOIN TicketPriceTable T
ON X.TicketCode = T.TicketCode AND X.ActualPeriod=T.ValidFrom
如果您輸入了將來的價格,則WHERE ValidFrom <= Date
。
在這里,子查詢選擇實際有效期,即ValidFrom
適用於每個TicketCode
。 如果您發現子選擇有些混亂,則還可以將它們存儲為Access中的查詢或MySQL中的視圖,並基於它們進行后續查詢。 這樣的好處是您可以在查詢設計器中創建它們。
考慮不要物理地創建所有300條記錄,而只是從笛卡爾乘積中動態獲取它們。
我讓你現在把所有的東西放在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.