2017-01-18 11 views
0

私のフォームの1つに以下のVBコード設定があります。ユーザーがCN番号で検索できるテキストボックスをセットアップしましたが、問題が発生しています。ユーザーがテキストボックスに何も入力せずに検索をクリックすると、CN#(私が望むもの)を入力するよう求められます。ユーザーがCN#を入力した場合、私のクエリは、その詳細(どのようなものか)を持つCN#を見つけます。私の問題は、ユーザーが間違ったCN#を入力した場合でも、クエリはポップアップしますが、クエリテーブルは空です。私は何が入力できるかを制限する検証フィールドをセットアップしようとしています。あるいは、入力したCN#が間違っていることをユーザーに知らせることができます。VB-MS Access Validation for textbox

Private Sub cmdSearch_Click() 
    If Nz(txtCN, "") <> "" Then 
     DoCmd.OpenQuery "querySearchCN_CE", acViewNormal, acReadOnly 
     'DoCmd.OpenQuery "query_CO_CE", acViewNormal, acReadOnly 
     'DoCmd.OpenQuery "querySearchCN_2010_2015_CE", acViewNormal, acReadOnly 
     'DoCmd.OpenQuery "querySearchCN_2016_CE", acViewNormal, acReadOnly 
    Else 
     'If Nz(txtReportDate, "") = "" Then 
     MsgBox "NOTICE! Please enter a CN #" 
     Exit Sub 
    End If 
End Sub 
+1

これはVB.NETコードではありません。 'DoCmd'はありません。あなたはおそらく 'access-vba'タグ – Plutonix

+0

@Plutonixを修正したいと思います、ありがとうございます! – KKP

+1

テキストボックスの代わりにComboBoxを使用することを検討する必要があります。それをビルドして、有効なCN#を含むテーブルから値を取得します。 ComboBoxプロパティで、[Limit To List]をYesに設定します。 – tlemaster

答えて

0

コードを処理する前に、入力テキストをテストするためにDCOUNT関数を追加できます。カウントが0を返した場合、入力された基準を満たすレコードがないとみなすことができます。

Private Sub cmdSearch_Click() 
    If Nz(txtCN, "") <> "" Then 

     If DCount("fldField", "tblTable", "fldField = " & txtCN) > 0 Then 
      DoCmd.OpenQuery "querySearchCN_CE", acViewNormal, acReadOnly 
      'DoCmd.OpenQuery "query_CO_CE", acViewNormal, acReadOnly 
      'DoCmd.OpenQuery "querySearchCN_2010_2015_CE", acViewNormal, acReadOnly 
      'DoCmd.OpenQuery "querySearchCN_2016_CE", acViewNormal, acReadOnly 
     Else 
      MsgBox "You have entered an invalid CN #" 
     End If 
    Else 
     'If Nz(txtReportDate, "") = "" Then 
     MsgBox "NOTICE! Please enter a CN #" 
     Exit Sub 
    End If 
End Sub 
関連する問題