2016-03-21 10 views
1

範囲を入力し、その範囲内のすべての計測器をサブフォームに表示するようにユーザーに求めています。VBA ACCESS文字列と整数の比較

問題:上限と下限はテキストフィールドです(範囲の一部は整数で表現できないため)。スクリーンショットに見られるように、比較はフィールドの最初の文字のみを比較します。サブフォームで3 - 5: 6から4 それは私がVBAはそれが言われているが、どのように私は達成できるかやっている知っている代わりに、36

の5と3を比較

ユーザーの入力を私は欲しいのですか?ここで

enter image description here

サブフォームをrequeringための私のコードです:私はそれらのケースのために成功してい

Dim Up As Integer 
    Dim Low As Integer 

     If Me.Text_L = "" Or IsNull(Me.Text_L) Or Me.Text_U = "" Or IsNull(Me.Text_U) Then 
      MsgBox ("Please choose a valid range!") 
     Else 
      Up = Me.Text_U 
      Low = Me.Text_L 

      SQL = SQL_Origin & " WHERE [qry_View_Search].[Upper_Range] <= '" & Up & "' " _ 
      & "AND [qry_View_Search].[Lower_Range] >= '" & Low & "';" 


      subform_View_Search.Form.RecordSource = SQL 
      subform_View_Search.Form.Requery 
     End If 
+0

あなたはそれらを文字列として比較していますが、あなたは[upper range] <= "&cint(up)&" AND [qry_view_search]と言う必要があると思います。 –

+1

'Upper'と' Lower'フィールドを浮動小数点データ型(SingleやDoubleなど)では、テキストの代わりに10進値を格納できます。次に、テキストではなく実際の数値との数値比較を行うことができます。 – HansUp

+0

@ Nathan_Savそれは私に同じ結果を与える:( –

答えて

0

だけでヴァルを使用:

Value: Val([FieldName]) 

か:

Value: Val(Nz([FieldName])) 
2

なので、私が行ったことは、すべての数値結果を得るために、 IIf(IsNumeric([Upper]), Val([Upper]), Null) のクエリで新しい列になりました。

は次にVBAで、私は

SQL = SQL_Origin & " WHERE [qry_View_Search].[Upper] <= cint(Forms![frm_View_Search]![Text_U]) " _ 
            & "AND [qry_View_Search].[Lower] >= cint(Forms![frm_View_Search]![Text_L]);" 

おかげで以下のようにサブフォームを照会再@HansUp!