2016-05-08 2 views
1

checkListBoxで選択したオプションからSQLクエリを作成しようとしています。ユーザーは、チェックリストボックス内のデータを含むようにしたいすべてのモジュールを選択し、このデータを収集するためのクエリを作成します。また、クエリに含める評価値の範囲を入力します。私は非常にSQLを使用するので、私は最後のクエリから演算子が不足している理解するのが苦労している新しいです。VB.NET checklistboxオプションからSQLクエリを作成する際に問題が発生する

これは私が現時点で持っているものです。

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 
    Dim h As Integer 
    Dim queryString As String 
    Dim moduleArray(6) As String 
    Dim counter As Integer = 0 
    Dim provider As String 
    Dim database As String 
    Dim connString As String 
    Dim moduleLen As Integer = 0 
    Dim moduleString As String = "" 
    Dim sqlquery As New OleDb.OleDbCommand 

    provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
    Change the following to your access database location 
    database = "C:\Users\mello_000\OneDrive\Google Drive\Computing\Exampapergenerator\users.accdb" 
    connString = provider & database 
    Dim myConnection As OleDbConnection = New OleDbConnection(connString) 

    myConnection.Open() 
    sqlquery.Connection = myConnection 
    For h = 0 To h = 6 
     For Each item As String In Me.CheckedListBox1.CheckedItems 
      moduleArray(moduleLen) = item 
      If moduleArray(moduleLen) = "" Then 
      Else 
       moduleLen = moduleLen + 1 
      End If 
     Next 
    Next 

    For i = 0 To moduleLen 
     If i = 0 Then 
      moduleString = "'" & moduleArray(i) & "'" 
     ElseIf i > 0 Then 
      moduleString = moduleString & "'OR'" + "'" & moduleArray(i) & "'" 
     End If 
    Next 


    queryString = ("SELECT QText FROM Question WHERE QModule = '" & moduleString & "' AND QRating BETWEEN '" & TextBox1.Text() & "'AND'" & TextBox2.Text()) 
    sqlquery.CommandText = queryString 
    sqlquery.ExecuteNonQuery() 



End Sub 

Iが出力する取得していますしかし:"SELECT QText FROM Question WHERE QModule = ''C1''OR''C2'' AND QRating BETWEEN '1'AND'2" とエラー:

Syntax error (missing operator) in query expression 'QModule = ''C1''OR''C2'' AND QRating BETWEEN '1'AND'2'.

また、どのようになりますか返されたすべてのデータを、印刷可能な形式で番号付きリストに出力する最良の方法は?

答えて

2

For h = 0 To 6の代わりにFor h = 0 To h = 6をなぜ使用していますか?

"'OR'"の前後に一重引用符を使用する必要はありません。ちょうど" OR "を使用してください。

あなたのSQL構文が間違っています。このQModule = ''C1''OR''C2''は、QModule = 'C1' OR QModule = 'C2'またはより良い方法である必要があります。QModule IN ('C1','C2')

QRatingが数値であると仮定すると、一重引用符は必要ありません。このQRating BETWEEN '1'AND'2'QRating BETWEEN 1 AND 2.

である必要があります。また、データに引用符がある場合は、引用符を心配する必要もなくエスケープするようにSQLパラメータを使用する必要があります。

関連する問題