增加查詢條件(SQL) |
答題得分者是:st33chen
|
snowisdark
一般會員 ![]() ![]() 發表:3 回覆:8 積分:2 註冊:2009-03-29 發送簡訊給我 |
操作環境:delphi 7 資料庫:paradox7
我有多個欄位 每個欄位對應一個combobox 查詢按鈕 on click 事件 query1.open; query1.sql.clear; query1.sql.add('select 欄位A,欄位B,欄位C from 資料表 where 欄位A="' combobox1.text "' and 欄位B="' combobox2.text "' and 欄位C="' combobox3.text "' group by 欄位A); query1.open; 我想要的是 if combobox1.text='不限' then ........就不加入這條查詢條件 即 query1.open; query1.sql.clear; query1.sql.add(select 欄位A,欄位B,欄位C from 資料表 where 欄位B='" combobox2.text "' and 欄位C="' combobox3.text "''); query1.open; combobox2 跟3 也是 請問該怎麼讓他隨著combobox的下拉選項 而改變搜尋條件呢?@@ 編輯記錄
snowisdark 重新編輯於 2009-04-20 16:28:19, 註解 無‧
snowisdark 重新編輯於 2009-04-20 16:28:51, 註解 無‧ snowisdark 重新編輯於 2009-04-20 16:32:18, 註解 無‧ |
老大仔
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
|
st33chen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
設一個字串變數 wstr wstr := ''; if combobox1.text<>'不限' then wstr := wstr ' and 欄位A="' combobox1.text "''; if combobox2.text<>'不限' then wstr := wstr ' and 欄位B="' combobox2.text "''; ... 然後 // 把 and 開頭的句子換成 where 開頭 才可以加到 select 子句後面. if wstr<>'' then wstr := stringreplace(wstr, ' and ', ' where ', []); // 只會換第一個 ... query1.sql.add('select 欄位A,欄位B,欄位C from 資料表' wstr ' group by 欄位A'); ... 參考一下
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-04-21 14:43:19, 註解 無‧
|
snowisdark
一般會員 ![]() ![]() 發表:3 回覆:8 積分:2 註冊:2009-03-29 發送簡訊給我 |
成功了!
非常感謝^^ 另外 wstr:=stringreplace(wstr, 'and' , ' where' , []) 這段看不懂@@ 大俠可否解說一下 ===================引 用 st33chen 文 章=================== 您好, 設一個字串變數 wstr wstr := ''; if combobox1.text<>'不限' then wstr := wstr ' and 欄位A="' combobox1.text "''; if combobox2.text<>'不限' then wstr := wstr ' and 欄位B="' combobox2.text "''; ... 然後 if wstr<>'' then wstr := stringreplace(wstr, ' and ', ' where ', []); // 只會換第一個 ... query1.sql.add('select 欄位A,欄位B,欄位C from 資料表' wstr ' group by 欄位A'); ... 參考一下 |
snowisdark
一般會員 ![]() ![]() 發表:3 回覆:8 積分:2 註冊:2009-03-29 發送簡訊給我 |
請問如何把下面這段 加進去
我怎麼加都顯示 錯誤 token:and var wstr:string: date1,date2:TDate; begin wstr := ''; if combobox1.text<>'不限' then wstr := wstr ' and 欄位A="' combobox1.text "''; if combobox2.text<>'不限' then wstr := wstr ' and 欄位B="' combobox2.text "''; if wstr<>'' then wstr := stringreplace(wstr, ' and ', ' where ', []); date1:=DateTimePicker1.Date ; date2:=DateTimePicker2.Date; with query1 do begin close; sql.Clear; sql.Add('SELECT * FROM 資料表); sql.Add(' wstr ' and (日期起>=:rq1)and (日期迄<=:rq2)'); end; Query1.Params [0].DataType :=ftdate; Query1.Params [0].Value :=date1; Query1.Params [1].DataType :=ftdate; Query1.Params [1].Value :=date2; Query1.Active :=true; ===================引 用 st33chen 文 章=================== 您好, 設一個字串變數 wstr wstr := ''; if combobox1.text<>'不限' then wstr := wstr ' and 欄位A="' combobox1.text "''; if combobox2.text<>'不限' then wstr := wstr ' and 欄位B="' combobox2.text "''; ... 然後 // 把 and 開頭的句子換成 where 開頭 才可以加到 select 子句後面. if wstr<>'' then wstr := stringreplace(wstr, ' and ', ' where ', []); // 只會換第一個 ... query1.sql.add('select 欄位A,欄位B,欄位C from 資料表' wstr ' group by 欄位A'); ... 參考一下 |
st33chen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
===================引 用 snowisdark 文 章=================== 請問如何把下面這段 加進去 -----> 請看這個顏色的部份 我怎麼加都顯示 錯誤 token:and -----> 是不是當 wstr 為 空字串時造成的 ? var wstr:string: date1,date2:TDate; begin wstr := ' where (日期起>=:rq1) and (日期迄<=:rq2)'; if combobox1.text<>'不限' then wstr := wstr ' and 欄位A="' combobox1.text "''; if combobox2.text<>'不限' then wstr := wstr ' and 欄位B="' combobox2.text "''; // if wstr<>'' then wstr := stringreplace(wstr, ' and ', ' where ', []); <--- 這樣改的話, 這句變成多餘的 date1:=DateTimePicker1.Date ; date2:=DateTimePicker2.Date; with query1 do begin close; sql.Clear; sql.Add('SELECT * FROM 資料表); // sql.Add(' wstr ' and (日期起>=:rq1)and (日期迄<=:rq2)'); <--- 調到前面去 sql.add(wstr); end; Query1.Params [0].DataType :=ftdate; Query1.Params [0].Value :=date1; Query1.Params [1].DataType :=ftdate; Query1.Params [1].Value :=date2; Query1.Active :=true;
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |