2017-05-03 15 views
0

Microsoft Accessで、レポートデータというデータテーブルに格納されている識別番号、場所、メモなどのデータをユーザーに提供するレポートを作成しました。レポートを開くときにクリックすると、2000ページ以上の1ページのレポートがすべてロードされます(1 IDENT NO)。ただし、IDENT NOを入力してロード/表示することでユーザーが選択する1つのレポートのみが必要です。Microsoft Access VBA:レポートをフィルタリングするボタン

以下のコードを使用してボタンを作成しました。このボタンをクリックするとユーザーが入力したIDENT NOでレポートをフィルタリングします(ユーザーがボタンをクリックすると、IDENT NO、そのIDENT NOに関連付けられた単一のレポートを開くだけです)。しかし、そうすると、1ページのレポートしかロードされませんが、他のデータフィールドは一杯になりません。コードをしばらく再生していますが、問題が以下のコードに基づいているのか、別の問題が原因であるかを把握しているようです。

識別番号は、ダッシュを付けた番号の形式をとり、次のような形式です。1940-1または1940-2または2910-1は、すべて識別番号の例です。

Private Sub Command33_Click() 

Dim id As String 
    id = InputBox("Enter the identification number:", "Report Filter") 

'if a value was entered, open and filter report 
If Len(Trim(id)) > 0 Then 
    DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] like " & id, acWindowNormal 
End If 


End Sub 

答えて

0

あなたのID「数字」はテキスト値です。 IDフィールドはテキストタイプです。テキストフィールドのフィルタパラメータには、アポストロフィデリミタが必要です。 *ワイルドカードなしでLIKE演算子を使用すると、=記号を使用するだけで何も実行されません。

DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] = '" & id & "'", acWindowNormal

私はアポストロフィなしでテストを行いました。私は2つのポップアップ入力プロンプトを得ず、アポストロフィはInputBoxだけがポップアップしたものです。しかし、どちらの場合も、レポートは引き続きフィルタリングされ、データとともに開きました。だからあなたの問題で何か他のことが起こっているかもしれません。 dbの直接のレビューが必要になる場合があります。提供したい場合は、Box.comなどのファイル共有サイトにアップロードしてファイルへのリンクを投稿することができます。

入力ボックスの入力を検証するのは難しいです。エントリが有効でない場合でもレポートは実行され、ユーザーの不満を引き起こします。ユーザーがIDを選択するためのフォームでコンボボックスを使用する方が良いでしょう。

名前に空白や句読点/特殊文字(アンダースコアのみの例外)はありません。

+0

上記を修正して、ユーザーが入力したもので始まるレポートを開くことは可能ですか?たとえば、IDENT NOの1940-1,1940-2,1940-3のレポートがあり、ユーザーが1940だけを入力ボックスに入力した場合、それらのレポートは3つすべて表示されます。 – Xcelrate

+0

'' [IDENT NO] LIKE '"&id&" *' "' - コンボボックスは私の推奨する方法です。入力をリストされた値に制限しないように設定するだけです。しかし、リストはまだ有効な完全なID番号のためのユーザーを導くために存在するでしょう。 – June7

+0

私はあなたが何を得ているかを見ます。コンボボックスの選択を開くためにボタンをクリックするようなコード行でInputBoxを置き換えることができるコンボボックス関数はありますか?また、これが当てはまる場合、コードの残りの部分は追加の変更が必要ですか? – Xcelrate

0

IdentNoのように見えますが、テキストフィールドです。一重引用符でスコープする必要があります。したがって:

If Len(Trim(id)) > 0 Then 
    DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] like '" & id & "'", acWindowNormal 
End If 

テキストではない場合(つまり、IntまたはDouble)、それはあなたの方法と同じです。一重引用符は必要ありません。

関連する問題