2016-08-29 2 views
1

私はこの問題を解決しました。MSアクセス、VBAでのクエリの書き込み、テキストボックスに結果を表示

このクエリをAccess VBAに書きたいと思います。このクエリを実行すると、私のフォームのテキストフィールドに結果が表示されます。 私のフォームに私は "結果"名前のテキストボックスを持っています だから私は "結果"名前です私のテキストボックスに表示するこのクエリを実行するが、私はVBAでこれを記述したい。どうやってするか?

SELECT ORDINACIJA.Exam, Count(*) AS total 
FROM ORDINACIJA 
WHERE ORDINACIJA.Exam='EHO ABDOMENA' AND ORDINACIJA.month='JANUARY' 
GROUP BY ORDINACIJA.Exam; 
+2

、することはできません(通常は1つの値しか保持しない)テキストフィールドに、出力(一般的に2次元のテーブルまたはレコードセット)を単に「印刷」するだけです。 グリッドビュー、リストボックス、または分割フォームのいずれかを使用して、データシートビューとユーザーフォームを表示することができます –

+0

しかし、テキストフィールドにはただ1つの値が必要です。それは私のクエリから合計行になります。たとえば、合計行は530です。そのフィールドでは書き込み530が呼び出されます。これは単なる統計値なので、データベースに書き込む必要はありません。それは可能ですか? – user3788491

+0

ドメイン集約関数、特にDCountとDlookUpをチェックアウトします。テキストボックスコントロールソースをドメイン集約関数に設定できます。 – Fionnuala

答えて

2

これにはSQLは必要ありません。

Dim lngCount As Long 

lngCount = DCount("Exam", _ 
        "ORDINACIJA", _ 
        "ORDINACIJA.Exam='EHO ABDOMENA' AND ORDINACIJA.month='JANUARY'") 

Result.Text = lngCount 


しかし、よりよい解決策は、以下のテキストボックスの「コントロールソース」プロパティを設定することです:

=DCount("Exam", "ORDINACIJA", "ORDINACIJA.Exam='EHO ABDOMENA' AND ORDINACIJA.month='JANUARY'") 

そのように、テキストボックスの値VBAでは、あなたはDCount機能を使用することができます値を更新する必要があるたびに(テーブルのデータが変更された場合など)だけVBAで次のコマンドを実行し、さらにフォームを開くときに正しいこと、およびます:

Result.Requery 
+0

MJH、これはどこに書きますか?私はこのコードをVBAで書くのですか?テキストフィールドにはどのようなコードを書くのですか?ありがとうございました – user3788491

+0

私は明確にするために私の答えを更新しました。 – MJH

+0

大変ありがとうございます – user3788491

0

あなたは、文字列変数に、彼のクエリを割り当て、その後、そのように、クエリを実行するためにCurrentDB.OpenRecordsetを使用することができます:VBAでSQLクエリを書いて実行すると合理的にシンプルですが

sub DoMyQuery() 
dim S as String 
dim R as recordset 
    S = "SELECT ORDINACIJA.Exam, Count(*) AS total "& _ 
     "FROM ORDINACIJA "& _ 
     "WHERE ORDINACIJA.Exam='EHO ABDOMENA' AND ORDINACIJA.month='JANUARY' "& _ 
     "GROUP BY ORDINACIJA.Exam;" 
    Set R = CurrentDB.OpenRecordset(S) 
    ' do what ever needs to be done with data returned here 
    R.close 
end Sub 
+0

ありがとうございます。 OKこのコードはVBAで書く必要があります。しかし、テキストボックスにはどのようなコードを書くのですか? – user3788491

関連する問題