Поиск по нескольким параметрам в одном окне поиска

#asp.net #vb.net

#asp.net #vb.net

Вопрос:

Итак, у меня есть сетевой «сайт» asp, который функционирует как устройство ввода данных. Я добавил к нему окно поиска, чтобы людям было проще находить конкретные результаты для добавления данных. Мой вопрос в том, что в настоящее время у меня есть вопрос, поэтому люди ищут по номеру, и он возвращает соответствующие строки данных. Я просто хотел знать, можно ли сохранить поиск по номерам, но также сделать так, чтобы люди могли выполнять поиск по кодам классов в том же окне поиска, не создавая другого.

Как я уже упоминал, у меня есть рабочая версия, которая делает то, что я хочу, и я доволен этим по большей части. Просто просматриваю варианты.

  Private Sub SearchVen()
       Dim Constr As String = ConfigurationManager.ConnectionStrings("PurchaseOrderConnectionString").ConnectionString
       Using Con As New SqlConnection(Constr)
           Using cmd As New SqlCommand
               Dim searchword As String = "SELECT PurchaseOrder.PoId, PurchaseOrder.Vendor_Name, PurchaseOrder.POAmount,PurchaseOrder.DateFrom, PurchaseOrder.DateTo, PurchaseOrder.Balance, PurchaseOrder.CodeId, PurchaseOrder.PoNumber, BPNumber, ClassCode.CodeId AS Expr1, ClassCode.CodeDefinition, PurchaseOrder.Notes FROM PurchaseOrder INNER JOIN ClassCode ON PurchaseOrder.CodeId = ClassCode.CodeId"
               If Not String.IsNullOrEmpty(TextBox11.Text.Trim()) Then
                   searchword  = " Where PurchaseOrder.PONumber Like @POnumber   '%'"
                   cmd.Parameters.AddWithValue("PONumber", TextBox11.Text.Trim())
               End If
               cmd.CommandText = searchword
               cmd.Connection = Connection
               Using sda As New SqlDataAdapter(cmd)
                   Dim dt As New DataTable()
                   sda.Fill(dt)
                   GridView1.DataSourceID = ""
                   GridView1.DataSource = dt
                   GridView1.DataBind()
               End Using
           End Using
       End Using
   End Sub
  

Правка1:

                 Dim searchword As String = "SELECT PurchaseOrder.PoId, PurchaseOrder.Vendor_Name, PurchaseOrder.POAmount,PurchaseOrder.DateFrom, PurchaseOrder.DateTo, PurchaseOrder.Balance, PurchaseOrder.CodeId, PurchaseOrder.PoNumber, BPNumber, ClassCode.CodeId AS Expr1, ClassCode.CodeDefinition, PurchaseOrder.Notes FROM PurchaseOrder INNER JOIN ClassCode ON PurchaseOrder.CodeId = ClassCode.CodeId"
                If Not String.IsNullOrEmpty(TextBox11.Text.Trim()) Then
                    searchword  = " Where PurchaseOrder.PONumber Like @POnumber   '%'" Or "ClassCode.CodeDefinition like @CodeDefinition   '%'"
                    cmd.Parameters.AddWithValue("PONumber", TextBox11.Text.Trim())
                    cmd.Parameters.AddWithValue("CodeDefinition", TextBox11.Text.Trim())
                End If
  

Попытался ввести это и получить сообщение об ошибке ввода строки в неправильном формате.

Комментарии:

1. Конечно, это так. Вы просто помещаете OR оператор в свое WHERE предложение. Это просто базовая логика. Если бы у вас был список имен, и я дал вам букву, не могли бы вы выполнить поиск имен, в которых эта буква была в имени или фамилии? Конечно, вы могли бы. Любой мог. Вы спрашиваете, как это сделать.

2. (1) AddWithValue не является хорошим выбором, как объяснено, можем ли мы уже прекратить использовать AddWithValue() ? (2) Имя параметра — «@PONumber», то есть с начальным «@». (3) Это может работать лучше, если вы добавите «%» к значению параметра, а не внутри запроса.