2012-05-14 65 views
0

我找不出這段代碼的哪部分寫錯了。在VB6和SQL查詢字符串語法錯誤

在我的查詢字符串中,我試圖收集sFrom和sTo值之間的一系列記錄。基本上,我想要使得從我的數據庫收集的所有控制號碼中,唯一顯示的號碼將是用戶爲起始範圍(sFrom)和結束範圍(sTo)輸入的值。

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

鮑比表!!!! –

+1

當你有這樣的問題,只寫'Debug.print sQuery',然後複製拷貝到SQL Server(其他RDBMS可用)以及執行查詢 - 應該告訴你在哪裏(第一)問題是 –

回答

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's answer
  4. WHERE子句的每個部分需要是全面和完整的。不能省略現場檢查(見Darrel's answer
1

不能前<

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

我不很明白嗎? – Garrettchap1

2

降control_no此:

" Where control_no > sFrom and < sTo "

也許應該是這樣的:

" Where control_no >= " & sFrom & " and control_no <= " & sTo

(假設當然是sFrom和STO填充來自用戶的數字輸入的字符串變量)

+0

嗯,還通過「&sOrderBy'缺少你行繼續符和'按訂單「&sOrderBy'應該是'」命令 – tcarvin

1
  1. Like 'XXX'" & sFilter,必須和下一個串X之間沒有空間「。
  2. 根本沒有連續字符。
  3. 你有兩個Where子句。
  4. sFromsTo是文字字符串。您可能打算將它們用作變量。
  5. 您沒有比較control_nosTo
  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