在MS Access中创建故障单销售数据库之后。我想使用单个表单查询特定月份的特定票证的价格,并将价格显示在表单中的文本字段或标签中。
以下是示例表和使用过的查询
CompanyTable
CompID CompName
A Ann
B Bahn
C Can
KK Seven
- --
TicketTable
TicketCode TicketDes
10 Two people
11 Monthly
12 Weekend
14 Daily
TicketPriceTable
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]));
例如'Month'字段等于输入[DATE01]参数 'Ticket Code'等于[TCODE01]参数的输入 Textfield等于查询结果的输出(票价)
如有任何疑问,请不要犹豫 非常感谢您的时间和预期的反馈。
答案 0 :(得分:1)
您可以使用以下表达式来引用表单字段中的值:[Forms]![NameOfTheForm]![NameOfTheField]
答案 1 :(得分:0)
在Access窗体中,您可以将RecordSource
设置为查询,而不仅仅是表格。这可以是存储查询的名称,也可以是SQL语句。这允许您通过此查询将控件绑定到不同的表。
您还可以在主窗体上放置与主窗体之外的其他表绑定的子窗体。
您还可以通过以等号开头将TextBox
设置为表达式,在ControlSource
中显示表达式的结果
=DLookUp("Price", "TicketPriceTable", "TicketCode=" & Me!cboTicketCode.Value)
您可以将TextBox的格式设置为MM\/yyyy
或使用格式函数
s = Format$(Now, "MM\/yyyy")
答案 2 :(得分:0)
回答您关于Accessing data from a ticket database, based on months in 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
的{{1}}。如果您发现子选择有点令人困惑,您还可以将它们存储为Access中的查询或MySQL中的视图,并基于它们进行后续查询。这样做的好处是您可以在查询设计器中创建它们。
考虑不要在物理上创建所有300条记录,而只是从笛卡尔积中动态创建它们。
我让你现在把所有的部分放在一起。