台灣最大程式設計社群網站
線上人數
1139
 
會員總數:242929
討論主題:187836
歡迎您免費加入會員
討論區列表 >> ASP.NET >> VB任意篩選多條件
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VB任意篩選多條件
價值 : 80 QP  點閱數:157 回應數:6

樓主

賴彥璋
門外漢
0 2
68 1
發送站內信

各位大大好,我是廢物菜鳥大學生,因專題的關係需與企業合作,在這邊遇到了一些問題,想與各位大大請教一番

首先我們需要由這四個條件中篩選出girdview的資料

而其中各條件則能自由搭配EX:廠商編號+起始結束日期or 只有報價單編號 or 只有起始結束日期 ....等等的搭配方法。
小弟我首先嘗試廠商編號+起始結束日期,在主頁面的SqlDataSource的SelectCommand增加了where條件

([Date] >= @actionDate) And ([Date] <= @endDate) And ( [Vendor_ID]LIKE '%' + @Vendor_ID +'%')

很幸運的能夠篩選出符合條件的資料,但問題出在若今天少了廠商編號即無法篩選出符合起始結束日期的資料,因此試想是否在後面改成
([Vendor_ID]LIKE '%' + @Vendor_ID +'%') Or ([Vendor_ID] @Vendor_ID IS NULL) 類似的東西即可。
但仍然無法篩選出應有的資料,而是什麼都不顯示。

在這邊碰到了問題,決定至程式碼將篩選條件寫入,很幸運的能夠符合任意篩選條件,但唯一不符廠商要求的部分是將資料篩選並顯示在gridview後,無法利用內建排序紐針對篩選後的資料作排序,僅僅只能將所有的資料顯示出來並且排序。

在這邊要問各位前輩兩個問題
我在主頁面針對資料庫做篩選的指令,是哪個地方出了錯應該修正,還是在主頁面的部份是無法篩選空值的呢?

再來,假若上述問題無法修正,我若針對程式碼的部分再寫個排序的方法,是否會更有效率呢?

麻煩各位大大的解救

搜尋相關Tags的文章: [ asp.net ] , [ vb ] , [ 排序 ] , [ 篩選 ] ,
本篇文章發表於2018-07-18 11:41
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

賴彥璋
檢舉此回應
剛剛猜測程式排序會跳回所有資料排序的可能性是
程式碼僅對gridview做顯示,而按下內建排序後則是針對資料庫做篩選
僅僅只是猜測,附上程式碼
本篇文章回覆於2018-07-18 11:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

龍貓王
檢舉此回應
我查詢是都會直接組sql 撈datatable 給gridview 重新databound
本篇文章回覆於2018-07-18 15:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
這個用組字串的查詢比較簡單
例如
dim sql as string="select * from table where 1=1"
if me.textbox1.text<>""
sql +=" and 訂單編號='"+me.textbox.text+"'"
end if
...........
但這會有sql injection 問題 先把問題解決後 在解決這個吧
本篇文章回覆於2018-07-18 18:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
在正式回答您問題之前,先說個嚴肅的問題
SqlInjection

對企業來說,寫出有bug的程式不可怕,但寫出有『安全漏洞』的系統就可怕非常

建議您查一下LIKE SqlParameter怎麼寫
https://stackoverflow.com/questions/251276/howto-parameters-and-like-statement-sql

^_^
本篇文章回覆於2018-07-18 18:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
承#4
不好意思
我看錯了,
樓主有用SqlParameter
樓主請忽略 #4

再次抱歉∼
^.^a

本篇文章回覆於2018-07-31 16:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
小喵的做法,會透過ObjectDataSource搭配App_Code裡面類別的Function
您的條件有四個欄位,就傳4個參數

1.加入->新項目->類別,名稱為OrderDao
2.在OrderDao中,新增一個Function名稱為GetOrderData


3.在aspx頁面透過GridView,ObjectDataSource來設計畫面,大概如下:

其中,ObjectDataSource中,設定他個四個參數,來自四個控制項

4.最後,查詢按鈕按下
其實只是讓gridView重新綁定資料即可


大致如上,提供參考
^_^
本篇文章回覆於2018-07-31 17:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.