0

のフィールドで使用可能なキーワードと一致しない、または含まれていないDescriptionフィールドのレコードのみを取得するクエリがあります。したがって、一致するものは GridView に表示されるべきではなく、一致しないものだけが表示されます。SQL クエリの結果を GridView に表示しようとしていますが、一致するものを取得していますが、これは私の要件ではありません。Table 1KeywordsTable 2

SQL Server で SQL Query を実行してみましたが、問題なく動作します。私の Web アプリでも問題なく動作しますが、LikeStatement の後にキーワードを明示的に指定した場合のみです。しかし、むしろ、すべてにまたがってほしいのKeywordsですTable2。これが私のコードです。

conn.Open()
For Each row As GridViewRow In Me.GridView1.Rows

    For i As Integer = 0 To GridView2.Rows.Count - 1
        Dim Records1 As String = GridView2.Rows(i).Cells(0).Text
        Dim cmd = New SqlCommand("Select DISTINCT Description From DB.dbo.Table1 " +
                                 "WHERE NOT EXISTS (Select * From [DB].dbo.Table2 WHERE " + 
                                 "Table1.Description LIKE '%' +TABLE2.Keywords + '%')", conn)

        DA.SelectCommand = cmd
        DA.Fill(dt)
        GridView3.DataSource = dt
        GridView3.DataBind()
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        DA.Dispose()
        dt.Clear()
        dt.Dispose()
    Next
Next

GridView1Table1 のデータを持っている ( The Description) GridView2Table2 のデータを持っている ( The Keywords) GridView3クエリの結果を持っている

ただし、前に述べたように、一致するものをまだ取得しています。クエリの形式に何か問題がありますか、何かが欠落しているか、間違った形式で書かれていますか? 提案や考えは本当にありがたいです。

4

2 に答える 2

1

そうではありません:

WHERE Table1.Description LIKE @Grid)"

cmd.Parameters.AddWithValue("@Grid", "%" + GridView2.Rows(i).Cells(0).Text.ToString() + "%")
于 2012-12-07T14:56:41.727 に答える
0

より良い解決策は、ストアドプロシージャ内からこれを実行し、@Gridパラメータを渡すことです。私見では

しかし、あなたの質問に具体的に答えるために、これはうまくいくはずです

For i As Integer = 0 To GridView2.Rows.Count - 1
    Dim Records1 As String = GridView2.Rows(i).Cells(0).Text
    Dim cmd = New SqlCommand("Select DISTINCT Description From DB.dbo.Table1 " +
                             "WHERE NOT EXISTS (Select * From [DB].dbo.Table2 WHERE " + 
                             "Table1.Description LIKE "
                             "'%" + GridView2.Rows(i).Cells(0).Text.ToString() + "%')", conn)
    DA.SelectCommand = cmd
    DA.Fill(dt)
    GridView3.DataSource = dt
    GridView3.DataBind()
    cmd.ExecuteNonQuery()
    cmd.Dispose()
    DA.Dispose()
    dt.Clear()
    dt.Dispose()
Next
于 2012-12-07T16:58:09.793 に答える