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

請問ADODataset的Locate功能能帶多個參數嗎?

尚未結案
tony83ok
一般會員


發表:4
回覆:5
積分:1
註冊:2004-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-03 14:17:44 IP:61.154.xxx.xxx 未訂閱
我做一個人事管理系統想要用locate定位紀錄,有兩個任選的定位條件,一個是姓名,另一個是部門,可是locate方法如何同時帶2个不同字段的參數嗎?或者如何用sql的語句達到定位功能?謝謝!
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-03 14:34:38 IP:61.222.xxx.xxx 未訂閱
if ADOQuery1.Locate('姓名;部門',VarArrayOf([姓名變數,部門變數]),[]) then begin end;
tony83ok
一般會員


發表:4
回覆:5
積分:1
註冊:2004-08-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-04 00:11:40 IP:61.154.xxx.xxx 未訂閱
謝謝您!可是我要做到的效果是2个查詢條件滿足任意一種就可以查詢了(or),或者同時滿足兩个條件(and)。您的方法做出來的好像必須同時滿足兩個條件,而不是or的效果,請問還有別的方法嗎?
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-04 08:49:46 IP:202.62.xxx.xxx 未訂閱
您好﹗    使用SQL語法會得到較好的效率﹒
例﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * From 資料表 Where ');
  ADOQuery1.SQL.Add(姓名=''姓名值'' or 部門=''部門值'');
  ADOQuery1.Open;
  if Not ADOQuery1.Empty then
    ShowMessage('找到相關資料')
  else
    ShowMessage('找不到相關資料');
end;
========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-04 08:56:05 IP:218.170.xxx.xxx 未訂閱
locate主要用在定位某一筆特定的記錄 如果你要用兩個條件來組合 除了下sql取回外 也可以在已開啟的記錄中使用filter來搭配組合條件 ex: State = 'CA' or State = 'MA'
tony83ok
一般會員


發表:4
回覆:5
積分:1
註冊:2004-08-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-04 10:48:59 IP:61.154.xxx.xxx 未訂閱
謝謝個位!我這個form主要是以維護員工資料爲主,查找是一項輔助功能。裏面有一個datasource指向adodadaset產生的一個select * from XX的數據集,並且有一個grid也指向它以顯示紀錄,如果我爲了查找紀錄再多加一個adoquery的話,那用戶每次使用查找功能之後數據集已變成特定的紀錄而不是該表的所有記錄,如果用戶查找完還想繼續瀏覽所有記錄,那豈不是還要再多個button用來顯示所有記錄?使用fliter也是如此,必須得加個button用來取消過濾。簡而言之,我想要達到的目的是A or B兩個條件的“定位”功能,而不用再多加个button,能實現嗎?
peterpcc
一般會員


發表:6
回覆:37
積分:13
註冊:2004-09-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-04 11:48:17 IP:221.239.xxx.xxx 未訂閱
->如果用戶查找完還想繼續瀏覽所有記錄 這還是需要一個動作去執行的. 如果想查完B後就是A的話,可以換個方式,用個查詢元件開窗來找B資料. A的GRID資料還是不會改變的.
peterpcc
一般會員


發表:6
回覆:37
積分:13
註冊:2004-09-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-04 11:49:51 IP:221.239.xxx.xxx 未訂閱
->如果用戶查找完還想繼續瀏覽所有記錄 這還是需要一個動作去執行的. 如果想查完B後就是A的話,可以換個方式,用個查詢元件開窗來找B資料. A的GRID資料還是不會改變的. 或是另設一個adodadaset(B),將datasource先轉到B查詢. 再按個鍵datasource轉回A去.
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-04 13:10:48 IP:218.170.xxx.xxx 未訂閱
我在這一篇 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=60615 有寫個小範例 也許可以給你一點不一樣的思考
tony83ok
一般會員


發表:4
回覆:5
積分:1
註冊:2004-08-09

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-12-04 14:59:23 IP:220.162.xxx.xxx 未訂閱
還是很感謝各位,可是我只是初學者而已還不太明白,我把圖貼出來給各位看看.順便問一個問題DBLookupComboBox如何讓它初始載入時是空白的沒有item?要下拉才能看到item,因爲查詢部門條件是可選的非必須的。我自己做老是一載入就顯示出人事部了。
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-12-04 15:18:06 IP:218.170.xxx.xxx 未訂閱
如果要單做查詢條件 那麼dblookupcombobox並不需要設定datasource以及datafield 因為一設定就等於自身就是一個資料欄位的顯示元件 你可以將datasource與datafield保持空白 然後根據使用者操作選擇後讀取 dblookupcombobox的 DBLookupComboBox1.ListSource.Dataset.FieldByName(DBLookupComboBox1.ListField).AsString 來得知使用者選了什麼...
tony83ok
一般會員


發表:4
回覆:5
積分:1
註冊:2004-08-09

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-12-05 13:45:00 IP:220.162.xxx.xxx 未訂閱
謝謝,問題已解決.
系統時間:2024-07-01 19:00:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!