SQL查詢編程之多欄位篇

來源:互聯網
上載者:User
今天PB考完試了,說真的學過VB再學PB真的沒什麼意思,真搞不懂學校為什麼要開這門課。
可能就是別人說的用PB的DataWindow作資料庫開發比較快,我沒感覺,只對DataWindow作為註冊商標有較深印象。
還好在今天考試時學到一點東西,應該適用於所有SQL編程,算是另類的技巧吧,隨便記上一筆。
在考試之前我還不知道setsqlselect(sqlstr)中的sqlstr中如何放置sql語句中的變數。
考試題目是兩個ddlb控制項(下拉式清單方塊ddlb_1,ddlb_2)和一個sle控制項(單行輸入框sle_1)中任選輸入(可以不選,選一個輸入,兩個,或三個都輸入)來查詢。
我一看到這種查詢就開始後悔,昨天為什麼沒有把setsqlselect搞清楚,只能硬著頭皮用帶參數的datawindow來實現這個功能。
一開始沒什麼思路,只是實現一個查詢,話說"人不會倒黴一輩子",記得我昨天還被桔梗塞住牙縫難受了半天,今天運氣來了,突然想到sql中like的"偉大"功能(現在只能說它偉大了,幫了我大忙),它可以實現參數的無效傳遞,可能無效傳遞說的不太恰當,反正就是這樣的功能:
選了ddlb_1其他不做操作,則把其他兩個參數變為'%'傳給datawindow的形參,用like查詢的話相當於只從資料庫中檢索了ddlb_1的資料
PB中向dw傳參的代碼為:
string str1,str2,str3
str1=ddlb_1.text
str2=ddlb_2.text
str3=sle_1.text
if str1="" then str1="%"
if str2="" then str2="%"
if str3="" then str3="%"
dw_1.retrieve(str1,str2,str3)

當然有做無用功,也是沒辦法中的辦法了,誰叫我那個時候不知道setsqlselect怎麼用,但考試要求都能實現了,應該過關了。
今天,考完試回來發現CSDN有人回答了我提出的關於setsqlselect(sqlstr)的問題,原來sqlstr中含變數的sql語句要這麼寫:
sqlstr="select * from user where name='"+ls_str+"'"
=後面的變數ls_str放置是我提的問題。

現在想想會用setsqlselect了,感覺SQL語句中還是應該使用like比較簡單,不然還要判斷哪個為空白,挺麻煩的(8種組合呢),還是用like:
string str1,str2,str3
str1=ddlb_1.text
str2=ddlb_2.text
str3=sle_1.text
if str1="" then str1="%"
if str2="" then str2="%"
if str3="" then str3="%"
sqlstr="select * from table1 where id1 like '"+str1+"' and id2 like '"+"str2"+"' and id3 like '"+"str3"+"'"
dw_1.setsqlselect(sqlstr)
dw_1.retrieve()//現在不用傳參了

最終的解決方案,多欄位查詢:在SQL語句中使用like。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.