0

このコードのどの部分が間違って書かれているのかわかりません。

私のクエリ文字列では、sFrom と sTo の値の間の範囲のレコードを収集しようとしています。基本的に、データベースから収集したすべての管理番号のうち、ユーザーが開始範囲 (sFrom) と終了範囲 (sTo) に入力したものだけが表示されるようにしたいと考えています。

sQuery = "SELECT " & sFields & " FROM " & sTable &
         " Where store_id Like 'XXX'" & sFilter &
         " Where control_no > sFrom and < sTo " &
           order by " & sOrderBy
4

4 に答える 4

1
  1. では、 'と次の文字列のLike 'XXX'" & sFilter間にスペースはありません。X
  2. 行継続文字はまったくありません。
  3. Where句が2つあります。
  4. sFromおよびsToはリテラル文字列です。あなたはおそらくそれらを変数として使うつもりでした。
  5. control_noとの比較はありませんsTo
  6. sFilterと周囲のSQLの間にステートメントはありません。
  7. の前に二重引用符はありませんorder by
  8. スタイルの選択と同様に、SQLキーワードの大文字と小文字の区別に一貫性がありません。

今、それをすべてまとめます:

sQuery = "SELECT " & sFields & " FROM " & sTable & _
         " WHERE store_id LIKE 'XXX'" & _
         " AND " & sFilter & _
         " AND control_no > " & sFrom & _
         " AND control_no < " & sTo & _
         " ORDER BY " & sOrderBy 
于 2012-05-15T08:50:59.790 に答える
1

これをデバッグする最善の方法は、結果の SQL ステートメントが何であるかを確認し、そこから作業することです。

あなたのものは現在、次のように評価されます

SELECT field, field2 FROM table Where store_id Like 'XXX'FilterString Where control_no > sFrom and < sTo order by field1
  1. 複数の WHERE 句を使用することはできません。
  2. あなたのsFilter包含は非常に間違っていると思いますが、正確な値が何であるかによって異なります.
  3. sFromsTo評価されずにリテラルとして含まれます(tcarvinの回答を参照)
  4. 句の各部分はWHERE完全で完全である必要があります。チェックするフィールドを省略することはできません ( Darrel の回答を参照してください) 。
于 2012-05-15T08:51:43.407 に答える
1

< の前に control_no をドロップすることはできません

sQuery = "SELECT " & sFields & " FROM " & sTable & " Where store_id Like 'XXX'" & sFilter & " Where control_no > sFrom and control_no < sTo " & order by " & sOrderBy
于 2012-05-14T20:19:37.227 に答える