1

その日の褒め言葉。以前に受け取ったフィードバックに基づいて、

MSAccessでチケット販売データベースを作成した後。単一のフォームを使用して、特定の月の特定のチケットの価格を照会し、テキストフィールドまたはラベルのフォームに価格を表示したいと思います。

以下はサンプルテーブルと使用されたクエリです

CompanyTable

CompID    CompName
   A        Ann
   B        Bahn
   C        Can
   KK       Seven
   -        --

チケットテーブル

 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]));
  • MS Accessでは、クエリの実行時にパラメータを入力するためのミニボックスがポップアップ表示されます。単一のフォームを使用して[DATE01]と[TCODE01]のパラメーターを入力するにはどうすればよいですか。およびテキストフィールドに同じ形式で表示される価格(詳細な計算用)。

たとえば、「月」フィールドは[DATE01]パラメータへの入力に等しい'チケットコード'は[TCODE01]パラメータへの入力に等しいテキストフィールドはクエリ結果の出力に等しい(チケット価格)

  • 可能であれば、この形式のMM/YYYYでは月と年のみを使用したいと思います。日は必要ありません。どうすればMSAccessでそれを達成できますか?

ご不明な点がございましたら、お気軽にお問い合わせくださいますようお願い申し上げます。

4

3 に答える 3

1

[Forms]![NameOfTheForm]![NameOfTheField] のような式を使用して、フォーム フィールドの値を参照できます。

于 2012-06-25T21:17:28.657 に答える
0

最大300種類のチケットを入力

Accessing data from a ticket database, based on months in MS Access を参照して、コメントへの回答)

デカルト積を使用して、多くのレコードを作成できます。クエリで 2 つのテーブルを選択して結合しない場合、結果はデカルト積になります。つまり、一方のテーブルのすべてのレコードが他方のテーブルのすべてのレコードと結合されます。

という名前の新しいテーブルを追加しましょうMonthTable

MonthNr    MonthName
    1      January
    2      February
    3      March
  ...      ...

12 レコードを含むこのテーブルを 4 レコードを含むテーブルと組み合わせると、TicketTable48 レコードを含む結果が得られます。

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 レコードすべてを物理的に作成するのではなく、デカルト積から動的に取得することを検討してください。

今、すべてのピースをまとめさせてください。

于 2012-06-28T14:50:47.477 に答える
0

Access FormsRecordSourceでは、 をテーブルだけでなくクエリにも設定できます。これは、ストアド クエリまたは SQL ステートメントの名前のいずれかです。これにより、このクエリを介してコントロールを別のテーブルにバインドできます。

メイン フォーム以外のテーブルにバインドされているサブフォームをメイン フォームに配置することもできます。

等号で始まる式に をTextBox設定することにより、式の結果を a に表示することもできます。ControlSource

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

TextBox の Format を設定するMM\/yyyyか、 format 関数を使用することができます

s = Format$(Now, "MM\/yyyy")
于 2012-06-25T21:22:51.680 に答える