線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1169
推到 Plurk!
推到 Facebook!

Oracle資料庫查詢語法

尚未結案
north
一般會員


發表:10
回覆:17
積分:5
註冊:2004-08-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-23 21:19:40 IP:211.78.xxx.xxx 未訂閱
請問當我查詢時,例如輸入一個字,Oracle會比較所有欄位,將所有類似的值顯示在DBGrid上面 語法:select * from 資料表 where 〈〉like '高'; 〈〉:不輸入查詢欄位,將所有有'高'這一個字的資料顯示出來 就是像網頁查詢時,輸入要查詢的字串,就會將有這個字串的網頁都顯示出來 請問在上面要何寫呢?? 謝謝
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-24 13:17:40 IP:210.65.xxx.xxx 未訂閱
Hi north,    
procedure TForm1.Button1Click(Sender: TObject);
Var
  I : Integer;
  FieldValid : Boolean;
  St : String;
begin
  FieldValid := False;
  FOR I := 0 to Query1.FieldCount - 1 do
    begin
      If UpperCase(Edit1.Text) = UpperCase(Query1.Fields.Fields[i].FieldName) then
        FieldValid := True;
      if Query1.Fields.Fields[i].ClassNameIs('TStringField') then
        begin
          If St = '' then
            St := Query1.Fields.Fields[i].FieldName
          else
            St := ST   ' || '   Query1.Fields.Fields[i].FieldName;
        end;
    end;
  IF FieldValid THEN
    St := ' where '   Edit1.Text   ' like '   QuotedStr('%'   Edit2.Text  '%')
  else
    St := ' where '   ST   ' like '   QuotedStr('%'   Edit2.Text  '%');
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from hr_emp_base'   St);
  Query1.Open;
end;
1.僅針對文字行欄位進行檢查 2.Edit1 --> 查詢欄位名稱 3.Edit2 --> 搜尋文字內容 4.紅色字體部分為 Table 名稱,欄位先定義於 Query1 內 5.若資料量大,建議不要這樣作,會很慢 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
north
一般會員


發表:10
回覆:17
積分:5
註冊:2004-08-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-24 20:59:21 IP:211.78.xxx.xxx 未訂閱
Fishman大大你好: 關於你的程式我有寄個問題想請教一下,
procedure TFSearch.SpeedButton1Click(Sender: TObject);
Var
  I : Integer;
  FieldValid : Boolean;
  St : String;
begin
FieldValid := False;
    FOR I := 0 to ADOQuery1.FieldCount - 1 do
    begin
      If UpperCase(Edit1.Text) = UpperCase(ADOQuery1.Fields.Fields[i].FieldName) then
        FieldValid := True;
     if ADOQuery1.Fields.Fields[i].ClassNameIs('cards') then
        begin
          If St = '' then
            St := ADOQuery1.Fields.Fields[i].FieldName
          else
            St := ST   ' || '   ADOQuery1.Fields.Fields[i].FieldName;
     end;
    end;
  IF FieldValid THEN
  [red]  St := ' where '   Edit1.Text   ' like '   QuotedStr('%'   Edit2.Text  '%')
  else  
    St := ' where '   ST   ' like '   QuotedStr('%'   Edit1.Text  '%');
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select * from Cards '   St);
  inputbox('','',ADOQuery1.SQL.Text);
  ADOQuery1.Open;
end;
1.這個FieldValid := False; 我不清楚是要作何用途說 2.if Query1.Fields.Fields[i].ClassNameIs('TStringField') then 這行我不清楚要做什麼用說,我把這行刪除後,才查詢的出來說 3.還有我目前只用一個Edit1.Text,所以我刪除了一些 4.紅色是我所刪除的區塊 拍謝拍謝,刪掉一些說 謝謝唷
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-29 13:26:29 IP:210.65.xxx.xxx 未訂閱
Hi north,    1.因我先前測試使用 edit1.text 為搜尋欄位,edit2.text 為搜尋條件, FieldValid 是用來判定所輸入值是否合法(是否含於該 table 內),    2.if Query1.Fields.Fields[i].ClassNameIs('TStringField') then 用來判定該欄位是否為字串型態,若是,才加入判斷條件內 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
north
一般會員


發表:10
回覆:17
積分:5
註冊:2004-08-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-29 20:36:15 IP:211.78.xxx.xxx 未訂閱
引言: Hi north, 1.因我先前測試使用 edit1.text 為搜尋欄位,edit2.text 為搜尋條件, FieldValid 是用來判定所輸入值是否合法(是否含於該 table 內), 2.if Query1.Fields.Fields[i].ClassNameIs('TStringField') then 用來判定該欄位是否為字串型態,若是,才加入判斷條件內 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- < face="Verdana, Arial, Helvetica"> Fishman大大你好: 我這個問題已經解決了 謝謝唷 感謝感謝^^
系統時間:2024-09-17 10:34:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!