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

Select 欄名(變數)的方式

尚未結案
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-16 13:44:24 IP:61.218.xxx.xxx 未訂閱
D6+MS_SQL2000    請問各位大大 我有兩個Table(STR_Table1,AA_Table2) STR_Table1 是有關資料庫欄位結構 欄1 欄2 欄3 AA 01  A01 AA 02  A02 AA 03  A03 AA 04  A04  . . . AA 30 A30 BB .. . 第一次查詢  結果:A12,A13 select 欄3 from STR_Table1 where 欄1='AA' AND 欄2 IN ('12','13')    第二次查詢  結果:A14,A15 select 欄3 from STR_Table1 where 欄1='AA' AND 欄2 IN ('14','15')    第一次從Table1查詢中得知要使用COL3之資料列 A12,A13 第一次從Table1查詢中得知要使用COL3之資料列 A14,A15 AA_Table2 共有30個欄位 固定要使用欄位外加A02,A03 從資料庫中得知使用Table2 第一次  需用A01,A02,A03,A12(變數1),A13(變數2) 第一次  需用A01,A02,A03,A14(變數1),A15(變數2)    Str :='Select A01,A02,A03,(變數1),(變數2) from AA'; Qry.sql text := str; . . 請問變數1 & 2 要如何寫 拜託各位大大 謝謝
------
doll_candy
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-16 14:22:59 IP:63.84.xxx.xxx 未訂閱
您好﹗    不知道是否將您的要求理解錯了﹐請問有無試過子查詢﹕ Str :='Select A01,A02,A03,(select 欄3 from STR_Table1 where 欄1=:Text1 AND 欄2 IN (:Text2,:Text3)),(select 欄3 from STR_Table1 where 欄1=:Text1 AND 欄2 IN (Text4,Text5)) from AA'; Qry.sql.text := str; Qty.Parameters.ParamByName('Text1').Value := Edit1.Text; Qty.Parameters.ParamByName('Text2').Value := Edit2.Text; Qty.Parameters.ParamByName('Text3').Value := Edit3.Text; Qty.Parameters.ParamByName('Text4').Value := Edit4.Text; Qty.Parameters.ParamByName('Text5').Value := Edit5.Text; //此處的Qty假設為ADOQuery元件﹐若使用Query元件﹐請使用如下語法﹕ //Qty.ParamByName('Text1').AsString := Edit1.Text; 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/16 14:32:33
------
忻晟
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-16 21:46:27 IP:61.223.xxx.xxx 未訂閱
ps:圖中eMC006為變數答案要為下方的MC006,但欄名求出後會變成COLUMN6,而不是我所要的MC006,所以我想要的是變數給予的參數,而非Sql自己給予的 COLUMN6 加上畫面及之前的說明,不知我這樣還會有不清楚的地方. 小妹拜託了
------
doll_candy
wuabc
初階會員


發表:6
回覆:60
積分:33
註冊:2002-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-16 22:47:24 IP:203.204.xxx.xxx 未訂閱
既然已知MD_MD004,MD_MD005那麼直接以字串相加不就得了    StrAQLStr := 'Select MC0001,MC002,MC003,MC004,MC005,' MD_MD004 ',' MD_MD005 ' FROM AA';
 
再不然,Format也是不錯的選擇    StrAQLStr := format('Select MC0001,MC002,MC003,MC004,MC005,%s,%s FROM AA',[MD_MD004,MD_MD005]); 
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-17 00:28:04 IP:218.15.xxx.xxx 未訂閱
doll_candy您好: 不知你是不是想要得到栏3N组数据: A0,A1,A2,A13,A14 A0,A1,A2,A15,A16 …… 可以用下面方法实现: strAQLstr:='Select 栏3 from AA where (栏3 < A3) or (栏3=:eMC006) or (栏3=:eMC0007)'; 發表人 - deity 於 2003/09/17 00:37:57
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-17 10:14:19 IP:63.84.xxx.xxx 未訂閱
引言: ps:圖中eMC006為變數答案要為下方的MC006,但欄名求出後會變成COLUMN6,而不是我所要的MC006,所以我想要的是變數給予的參數,而非Sql自己給予的 COLUMN6 加上畫面及之前的說明,不知我這樣還會有不清楚的地方. 小妹拜託了 >< face="Verdana, Arial, Helvetica"> 您好﹗ 小弟覺得您上面的語法似乎有些問題﹒ MD_MD004 MD_MD005是什么內容﹖欄3的第一筆資料變數和第二筆資料變數所對應的資料表是哪個﹖ 請再清楚敘述一下好嗎﹖ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-19 17:14:04 IP:61.218.xxx.xxx 未訂閱
(圖一)所得為錯誤_
引言: 既然已知MD_MD004,MD_MD005那麼直接以字串相加不就得了 StrAQLStr := 'Select MC0001,MC002,MC003,MC004,MC005,'+MD_MD004+','+MD_MD005+' FROM AA'; 再不然,Format也是不錯的選擇 StrAQLStr := format('Select MC0001,MC002,MC003,MC004,MC005,%s,%s FROM AA',[MD_MD004,MD_MD005]);
(圖二)為我所要的答案 首先: 我在基本資料裡有個資料內呢 (圖三) 例如:所以第一次我得到所需資料為第四筆ROWRECORD為(圖三)的 資料內容: B,組立,2,MC006,MC009,MC010 MD_MD003 := '2' MD_MD004 := 'MC006' MD_MD005 := 'MC009' MD_MD006 := 'MC010' PS:MC006,MC009,MC010 是以欄位代號存入的 條件是MD003 2, 變數欄位是MD004 MC006,MD005 MC009,MD006 MC010 ------------------ 於TABLE AA SELECT MC0001,MC002,MC003,MC004,MC005,MD_MD004,MD_MD005,MD_MD006 FROM AA WHERE MD003='''+MD_MD003+'''; 所得解為如圖四之: 圖四 從圖四得到答案 MC002 MC006 MC009 MC010 2 01 01 01 即為我所要的答案 PS:程式如初次畫面 PS:,MD_MD004,MD_MD005,MD_MD006 此部份應該如何作業才能是FieldName 小妹拜託各位 謝謝
------
doll_candy
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-19 18:47:30 IP:63.84.xxx.xxx 未訂閱
您好﹒    雖然感覺您為了貼上那一篇'圖文并茂'的文章一定做得很辛苦吧﹐但是﹒﹒﹒怎么會覺得越看越暈了﹒ 以下是您上貼的第一篇文章﹐有幾個地方不太明白(紅筆處)﹐請再說明一下﹕ <>< face="Verdana, Arial, Helvetica">引言: D6 MS_SQL2000 請問各位大大 我有兩個Table(STR_Table1,AA_Table2) STR_Table1 是有關資料庫欄位結構 欄1 欄2 欄3 AA 01 A01 AA 02 A02 AA 03 A03 AA 04 A04 . . . AA 30 A30 BB .. . 第一次查詢 結果:A12,A13 select 欄3 from STR_Table1 where 欄1='AA' AND 欄2 IN ('12','13') 第二次查詢 結果:A14,A15 select 欄3 from STR_Table1 where 欄1='AA' AND 欄2 IN ('14','15') 第一次從Table1查詢中得知要使用COL3(這里是指Table1的欄位3嗎)之資料列 A12,A13 第次從Table1查詢中得知要使用COL3(這里也是指Table1的欄位3嗎)之資料列 A14,A15 AA_Table2 共有30個欄位 固定要使用欄位外加A02,A03(這一句看不懂﹐固定使用什么欄位﹐外加A02, A03是從來自哪個資料表) 從資料庫中得知使用Table2 第一次 需用A01,A02,A03,A12(變數1),A13(變數2) 第次 需用A01,A02,A03,A14(變數1),A15(變數2) Str :='Select A01,A02,A03,(變數1),(變數2) from AA'; Qry.sql text := str; . . 請問變數1 & 2 要如何寫 拜託各位大大 謝謝 >< face="Verdana, Arial, Helvetica"> ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-20 01:00:35 IP:61.223.xxx.xxx 未訂閱
第一次從Table1查詢中得知要使用COL3(這里是指Table1的欄位3嗎)之資料列 A12,A13 >>>此col3,即為變數FieldName次從Table1查詢中得知要使用COL3(這里也是指Table1的欄位3嗎)之資料列 A14,A15 >>>Yes AA_Table2 共有30個欄位 固定要使用欄位外加A02,A03(這一句看不懂﹐固定使用什么欄位﹐外加A02, A03是從來自哪個資料表) >>>應改為A02即足夠,也就是條件MD_003 WHERE MD003='''+MD_MD003+''' 從頭序說起: 有兩個基本資料TABLE 1.為基本資料之MD_TABLE(MD006,MD007,MD008這後3欄之資料都是MC_TABLE之欄位From MC006 to MC012任一欄名)_代表每個產品的MAX MID MIN,這是由User輸入基本資料的產品畫面 輸入資料庫如左圖 以MD003為條件可對應到MC_Table之MC002之資料值 2.為基本資料之對照欄位MC_TABLE(MC006 到 MC012 代各代表MD_Table某產品max,mid,min之值) 小妹拜託了
------
doll_candy
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-20 12:07:39 IP:61.221.xxx.xxx 未訂閱
doll_candy 小娃 你好: 我分成2個部分說明 1.第一次搜尋出來的結果,已經可以完成 並放在Qry1 Qry1放的全都是,[欄位名稱] 2.用Qry2要搜尋最後的結果,所以用 Str := ''Select '; Qry1.first; while not Qry1.Eof do begin Str:=Str Qry1.FieldByName('[欄位名稱]').AsString ','; Qry1.Next; end; Str:=Str ',A01,A02,A03 from AA';//固定欄位 如此Qry1的值FieldByName('[欄位名稱]').AsString就是你所謂的變數 回答若不滿意請洽 消基會 電話 0800123123
------
======================
昏睡~
不昏睡~
不由昏睡~
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-09-20 18:12:54 IP:63.84.xxx.xxx 未訂閱
引言: D6 MS_SQL2000 請問各位大大 我有兩個Table(STR_Table1,AA_Table2) STR_Table1 是有關資料庫欄位結構 欄1 欄2 欄3 AA 01 A01 AA 02 A02 AA 03 A03 AA 04 A04 . . . AA 30 A30 BB .. . 第一次查詢 結果:A12,A13 select 欄3 from STR_Table1 where 欄1='AA' AND 欄2 IN ('12','13') 第二次查詢 結果:A14,A15 select 欄3 from STR_Table1 where 欄1='AA' AND 欄2 IN ('14','15') 第一次從Table1查詢中得知要使用COL3之資料列 A12,A13 第一次從Table1查詢中得知要使用COL3之資料列 A14,A15 AA_Table2 共有30個欄位 固定要使用欄位外加A02,A03 從資料庫中得知使用Table2 第一次 需用A01,A02,A03,A12(變數1),A13(變數2) 第一次 需用A01,A02,A03,A14(變數1),A15(變數2) Str :='Select A01,A02,A03,(變數1),(變數2) from AA'; Qry.sql text := str; . . 請問變數1 & 2 要如何寫 拜託各位大大 謝謝 >< face="Verdana, Arial, Helvetica"> 您好﹗ 反复揣摩您需要做到的目的﹒ 您提問中的<>變數>和<>變數>是否為需要使用者給予資料條件<>(欄>后在 class="code">Var Form1 : TForm1; MyRemark1, MyRemark2 : String; implementation //先在程式中宣告兩個字串變數; begin QryAQL1.Close; QryAQL1.SQL.Clear; QryAQL1.SQL.Add('Select 欄3 From STR_Table1 Where '); QryAQL1.SQL.Add('欄1=:Str1 and 欄2=:Col1'); QryAQL1.ParamByName('Str1').AsString := Edit1.Text; QryAQL1.ParamByName('Col1').AsString := Edit2.Text; QryAQL1.Open; MyRemark1 := QryAQL1.FieldByName('欄3').AsString; //使用一個Query﹐先把第一個需要用到的欄位內容查出來; //將查詢結果記錄在MyRemark1字串變數中; //Edit1.Text就可以比如為您先前提到的'AA'; //Edit2.Text就可以比如為您先前提到的'12'; QryAQL2.Close; QryAQL2.SQL.Clear; QryAQL2.SQL.Add('Select 欄3 From STR_Table1 Where '); QryAQL2.SQL.Add('欄1=:Str1 and 欄2=:Col1'); QryAQL2.ParamByName('Str1').AsString := Edit1.Text; QryAQL2.ParamByName('Col1').AsString := Edit3.Text; QryAQL2.Open; MyRemark2 := QryAQL2.FieldByName('欄3').AsString; //再使用一個Query﹐把第二個需要用到的欄位內容查出來; //將查詢結果記錄在MyRemark2字串變數中; //Edit1.Text就可以比如為您先前提到的'AA'; //Edit3.Text就可以比如為您先前提到的'13'; QryAQL3.Close; QryAQL3.SQL.Clear; QryAQL3.SQL.Add('Select A01, A02, A03, ''' MyRemark1 ''', '); QryAQL3.SQL.Add('''' MyRemark2 ''' From AA_Table2'); QryAQL3.Open; end; //再利用一個Query完成您需要的工作﹐在其中套入MyRemark1和MyRemark2的值做為欄為名稱; 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-09-25 10:23:48 IP:61.218.xxx.xxx 未訂閱
引言: QryAQL3.Close; QryAQL3.SQL.Clear; QryAQL3.SQL.Add('Select A01, A02, A03, '''+MyRemark1+''', '); QryAQL3.SQL.Add(''''+MyRemark2+''' From AA_Table2'); QryAQL3.Open; end; //再利用一個Query完成您需要的工作﹐在其中套入MyRemark1MyRemark2的值做為欄為名稱;[/code] 參考看看﹗
結果,依舊如此圖樣 所以我也不知如何是好 唉&&&
------
doll_candy
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-09-25 10:41:55 IP:63.84.xxx.xxx 未訂閱
您好﹗    此處的欄位值似乎沒有以MyRemark1和MyRemark2變數值來代入﹐而是系統自行配給的名字﹐再改為如下試看看﹕    QryAQL3.Close; QryAQL3.SQL.Clear; QryAQL3.SQL.Add('Select A01, A02, A03, '''+MyRemark1+''' ''' MyRemark ''', '); QryAQL3.SQL.Add('''' MyRemark2 ''' ''' MyRemark2 ''' From AA_Table2'); QryAQL3.Open; end; 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-09-25 11:02:38 IP:61.220.xxx.xxx 未訂閱
你用的方法有錯喔 要取的欄位名稱是不可以用PARAMBYNAME(XXX').ASSTRING的方式 你只能直接用變數代進去 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/09/25 11:24:25
------
天行健
君子當自強不息~~@.@
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-09-25 11:46:55 IP:61.220.xxx.xxx 未訂閱
引言: ps:圖中eMC006為變數答案要為下方的MC006,但欄名求出後會變成COLUMN6,而不是我所要的MC006,所以我想要的是變數給予的參數,而非Sql自己給予的 COLUMN6 加上畫面及之前的說明,不知我這樣還會有不清楚的地方. 小妹拜託了 >< face="Verdana, Arial, Helvetica"> 舉個例子 : 當你取得值後 MD_MD004 := 'MC006'; MD_MD005 := 'MC009'; MD_MD006 := 'MC010'; 再用變數直接加入SQL字串內即可 如 :
  StrAQLStr := ' SELECT  MC001,MC002,MC003,MC004,MC005,'+MD_MD004+','+MD_MD005+' FROM AA'
  QRYAQL.CLOSE;
  QRYAQL.SQL.CLEAR;
  QRYAQL.SQL.TEXT := StrAQLStr ;
  QRYAQL.OPEN;
PS:照此SQL字串模式寫,,注意標點符號及空格等相關位置 試試看 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
系統時間:2024-07-07 11:41:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!