#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) Это может работать лучше, если вы добавите «%» к значению параметра, а не внутри запроса.