簡體   English   中英

MS Access:使用單一表單在MS Access中輸入查詢參數

[英]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]));
  • 在MS Access中,運行查詢時會彈出一個迷你框以輸入參數。 如何使用單個表格輸入[DATE01]和[TCODE01]的參數。 價格以相同的形式顯示在文本字段中(以供進一步計算)。

例如,“月”字段等於對[DATE01]參數的輸入“機票代碼”等於對[TCODE01]參數的輸入文本字段等於查詢結果的輸出(門票價格)

  • 如果可能的話,我只想使用MM / YYYY格式的Month和Year。日期不是必須的。 如何在MS Access中實現它?

如有任何疑問,請不要猶豫,非常感謝您的時間和期待的反饋。

您可以使用以下表達式來引用表單字段中的值:[Forms]![NameOfTheForm]![NameOfTheField]

在Access Forms中,您可以將RecordSource設置為查詢,而不僅僅是一個表。 這可以是存儲查詢的名稱,也可以是SQL語句。 這使您可以通過此查詢將控件綁定到不同的表。

您還可以將子窗體放置在主窗體上,該子窗體綁定到除主窗體以外的其他表。

您還可以通過以等號開頭將ControlSource設置為表達式來在TextBox顯示表達式的結果

=DLookUp("Price", "TicketPriceTable", "TicketCode=" & Me!cboTicketCode.Value)

您可以將文本框的格式設置為MM\\/yyyy或使用格式功能

s = Format$(Now, "MM\/yyyy")

輸入多達300種不同類型的門票

對您的評論的答復,該評論涉及基於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.

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