2

機能性

ユーザーがtextboxAにテキストを入力します。データベースレコードで、ユーザーの入力に対応する名と名前を検索します。

問題:

私が得ている結果は、「名」フィールドのみを検索しており、名フィールドと姓フィールドの両方を検索していないようです。

例:

* 「マイク」を検索すると次のようになります。 *

マイク・スミス

マイク・ジョーンズ

「ジョーンズ」の検索:

マイクジョーンズは返されません

コード:

Protected Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click

    If txtSearch.Text = "" Then

    Else

        Dim ConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("oakfratintdbConnectionString").ConnectionString
        Dim Conn As New SqlConnection(ConnString)
        Dim searchCMD As New SqlCommand("SELECT [FirstName], [LastName], [MidInitName], [NameSuffix], [NamePrefix], [DOB], [DOD], [BurialDate], [GeoDirection], [Space], [Lot], [Row], [IntermentSpec], [AddtlInfo] FROM [OFCInterments] WHERE ([FirstName] LIKE @FirstName)", Conn)
        Dim searchDT As DataTable = GetData(searchCMD)
        GridView1.DataSource = searchDT
        GridView1.DataBind()
    End If

End Sub

コードの説明:

txtSearchはユーザーの検索入力です

4

2 に答える 2

3

変化する

SELECT [FirstName], [LastName], [MidInitName], [NameSuffix], [NamePrefix], [DOB], 
[DOD], [BurialDate], [GeoDirection], [Space], [Lot], [Row], [IntermentSpec], 
[AddtlInfo] FROM [OFCInterments] WHERE ([FirstName] LIKE @FirstName)

SELECT [FirstName], [LastName], [MidInitName], [NameSuffix], [NamePrefix], [DOB], 
[DOD], [BurialDate], [GeoDirection], [Space], [Lot], [Row], [IntermentSpec], 
[AddtlInfo] FROM [OFCInterments] WHERE ([FirstName] LIKE @FirstName or 
LastName like @LastName)
于 2012-11-14T04:42:58.787 に答える
1

以下は、名のみ、姓のみ、またはその両方で柔軟に検索できるように WHERE 句を調整した SQL クエリです。

SELECT [FirstName], [LastName], [MidInitName], [NameSuffix], [NamePrefix], [DOB], [DOD], [BurialDate], [GeoDirection], [Space], [Lot], [Row], [IntermentSpec], [AddtlInfo] FROM [OFCInterments] WHERE
    (@FirstName IS NULL OR [FirstName] LIKE @FirstName)
    AND (@LastName IS NULL OR [LastName] LIKE @LastName)

このクエリでは、ユーザーが FirstName: "Mike" および LastName: "Jones" を検索した場合、検索結果には "Mike Jones" のみが含まれ、"Mike Smith"、"Mike Jones"、および「ポール・ジョーンズ」。

このアプローチを使用する場合、ユーザーが条件の値を指定しなかった場合に、パラメーターに空の文字列を入力しないようにする必要があることに注意してください。または、null に加えて、クエリ内の空の文字列を確認することもできます。

于 2012-11-14T05:46:08.277 に答える