0

1つは受信日、もう1つは終了日です。フォームへの日付のユーザー入力に基づいて、レコードの数を引き出す必要があります。このクエリがありますが、データ型エラー 13 が発生する理由がわかりません。

Dim LTotal As Integer
LTotal = "SELECT Count(*) AS TotalCount FROM tblMatchBook " & _
         "WHERE ((tblMatchBook.DateFinished >= [Forms]![frmRptDates]![txtSDate]) AND ([tblMatchBook].[DateReceived] <= [Forms]![frmRptDates]![txtEDate]))"
MsgBox (LTotal)

このクエリはクエリ ウィンドウで機能しますが、フォームでは実行できません。

PARAMETERS [Start Date] DateTime, [End Date] DateTime;
SELECT Count(*) AS CompletedSurvey
FROM tblMatchBook
WHERE (((tblMatchBook.DateFinished)>=[Start Date]) And (((tblMatchBook.DateReceived))<=[End Date]));

どんな助けにも感謝します。

ありがとう。ニタ

4

1 に答える 1

0

LTotal整数として宣言し、文字列で初期化しているため、タイプ 13 エラーが発生しています。

問題を解決するには、何をしているのかを理解する必要があります。データベース エンジンに対してクエリを実行して結果を取得し、返された結果セットを読み取る必要があります。

文字列自体には一連の文字が含まれているだけで、何もしません。

目的を達成するための最も簡単な方法は、内部DCount() 関数を使用することです。

Dim LTotal as Integer

LTotal = Dcount("*", "tblMatchBook", "(DateFinished >= [Forms]![frmRptDates]![txtSDate]) AND ([DateReceived] <= [Forms]![frmRptDates]![txtEDate])")

MsgBox LTotal

これを使用するのに実際には VBA は必要ありません。以下をフォームのテキスト ボックスに貼り付けるだけで、ユーザーがフォームまたはフォームをControlSource変更するたびにレコード数が自動的に取得されます(また、ユーザーがこれらのコントロールからフォーカスを移動するため、Access はそれらがあったことを取得できます)。かわった)。txtSDatetxtEDate

=Dcount("*", "tblMatchBook", "(DateFinished >= [Forms]![frmRptDates]![txtSDate]) AND ([DateReceived] <= [Forms]![frmRptDates]![txtEDate])")

あなたが望むものを達成するための多くの方法があります。これはおそらく最も単純ですDCount()が、あまり効率的でも柔軟でもありません。Access を使い始める場合は、最初は簡単なものに固執し、Access の残りの機能が提供する機能を使い果たしたときに VBA に移行することをお勧めします。制限を認識しています。

于 2013-08-12T06:14:20.997 に答える