全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1633
推到 Plurk!
推到 Facebook!

問一個變量如何在SQL中加入

答題得分者是:P.D.
diashad
一般會員


發表:20
回覆:10
積分:6
註冊:2006-08-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-21 16:06:24 IP:202.173.xxx.xxx 訂閱
例如:
VAR
BU:STRING:
BEGIN
WITH ADOQUERY1 DO
BEGIN
CLOSE;
SQL.CLEAR;
SQL.ADD('SELECT * FROM TABLE 1 WHERE 1=1 AND BU=''' BU ''' AND 2=2');
END;
END;

就是上面哪BU變量如何加放呢??

------
x
編輯記錄
dllee 重新編輯於 2007-04-21 19:00:50, 註解 修改文章分類由 無 -> 問題, 提問時, 請記得選擇 [問題] 分類, 才能把分數給辛苦答題的會員, 謝謝您的配合‧‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-21 18:21:05 IP:211.22.xxx.xxx 未訂閱
你的SQL語法不是已經完成了嗎?
下列的BU變數值來源可以是從程式中得到的值,或者是從Edit中得到資料等等。。。
===================引 用 diashad 文 章===================
例如:
var
BU:STRING:
BEGIN
WITH ADOQUERY1 DO
BEGIN
CLOSE;
SQL.CLEAR;
SQL.ADD('SELECT * FROM TABLE 1 WHERE 1=1 AND BU=''' BU ''' AND 2=2');
SQL.OPEN; //還要這行來得到資料集,之後才能用 ADOQUERY1.FIELDBYNAME('你的資料欄').AsString等來得到資料
END;
END;

就是上面哪BU變量如何加放呢??

diashad
一般會員


發表:20
回覆:10
積分:6
註冊:2006-08-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-21 22:15:51 IP:202.173.xxx.xxx 訂閱
大概你理解錯了,我是說紅字哪部份該如何寫,哪樣寫是錯的,我意思是,sql.text中加入變量如何加
------
x
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-22 02:24:29 IP:59.114.xxx.xxx 訂閱
您可能要提供錯誤訊息…這樣才有辦法幫您解決問題…
在小弟看來,紅色的部份應該是沒有問題的啊…

===================引 用 diashad 文 章===================
大概你理解錯了,我是說紅字哪部份該如何寫,哪樣寫是錯的,我意思是,sql.text中加入變量如何加
------
~小弟淺見,參考看看~
編輯記錄
channel 重新編輯於 2007-04-22 02:25:40, 註解 無‧
system72
中階會員


發表:15
回覆:114
積分:55
註冊:2005-08-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-22 10:53:14 IP:219.80.xxx.xxx 訂閱
<textarea class="delphi" rows="10" cols="60" name="code">VAR BU:STRING; BEGIN BU:=Edit1.Text; // 就如 Stallion說的, 比方,從form 的edit1 輸入. WITH ADOQUERY1 DO BEGIN CLOSE; SQL.CLEAR; SQL.ADD('SELECT * FROM table_a a WHERE (a.Column1=1) and (BU=''' BU ''') AND (a.Column2=2)'); SQL.ExecSQL; END; END; </textarea>

===================引 用 diashad 文 章===================
例如:
VAR?
BU:STRING:
BEGIN
? WITH ADOQUERY1 DO
? BEGIN
???? CLOSE;
???? SQL.CLEAR;
??? SQL.ADD('SELECT * FROM TABLE 1 WHERE 1=1 AND BU=''' BU ''' AND 2=2');
? END;
END;

就是上面哪BU變量如何加放呢??

編輯記錄
system72 重新編輯於 2007-04-22 11:01:30, 註解 無‧
system72 重新編輯於 2007-04-22 11:03:36, 註解 改了好幾次,有段時間沒碰SQL了 ,有點生疏了 :P‧
system72 重新編輯於 2007-04-22 11:04:19, 註解 無‧
hzfycdc
一般會員


發表:0
回覆:1
積分:0
註冊:2007-04-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-22 17:24:03 IP:125.118.xxx.xxx 訂閱
1、SQL.ADD(Format('SELECT * FROM table_a a WHERE (a.Column1=1) and (%S=''%S'') AND (a.Column2=2)',[var1,var2]));

2、SQL.ADD('SELECT * FROM table_a a WHERE (a.Column1=1) and (:BU=:BU1) AND (a.Column2=2)');
Parameters.findparam('bu').value"=var1;
Parameters.findparam('bu1').value"=var2;


再加OPen 不要使用 execsql
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-04-24 02:39:43 IP:61.67.xxx.xxx 未訂閱
不知道有沒有誤會你的意思, 我舉兩個常用的方法
1.如果要直接加入, 建議使用 " 這個符號來做字串的含括 "字串"
SQL.ADD('SELECT * FROM TABLE 1 WHERE 1=1 AND BU=' " ' BU ' " ' AND 2=2');
但是因為 'SELECT 前面已有 ' 符號, 如果 BU=' 再出現 ', 會被認為字串結尾, 所以遇到這種情況, 我都會這樣寫
SQL.ADD('SELECT * FROM TABLE 1 WHERE 1=1 AND BU=' ' " ' BU ' " ' ' AND 2=2');
' " ', 這裡面沒有空白, 我是為了可以看的比較清楚, 所以加了空白
或者下列做法亦可
SQL.ADD('SELECT * FROM TABLE 1 WHERE 1=1 AND BU=' ' ' ' BU ' ' ' AND 2=2');
' ' ' ', 四個 ' 就等於 ' " '
2.使用一個變數 :IBU 取代(建議使用本法會比較結構化)
SQL.ADD('SELECT * FROM TABLE 1 WHERE 1=1 AND BU= :IBU AND 2=2');
SQL.ParamByName('IBU').Value:= xxxxx // 再用此段將要代入的值放進去
SQL.Open;



===================引 用 diashad 文 章===================
??? SQL.ADD('SELECT * FROM TABLE 1 WHERE 1=1 AND BU=''' BU ''' AND 2=2');

就是上面哪BU變量如何加放呢??

編輯記錄
P.D. 重新編輯於 2007-04-24 02:51:03, 註解 無‧
系統時間:2024-05-17 1:39:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!