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

Locate 怎樣可以search lookup field呢?

缺席
chkkevin
一般會員


發表:34
回覆:64
積分:19
註冊:2007-05-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-02-16 19:26:45 IP:218.254.xxx.xxx 訂閱
小弟寫了一個簡單找尋的method:~
它可以找到在Tquery中本身有的Tfield,但怎樣可以找尋以lookupfield所ADD的new field呢?
因為,當尋找以lookupfield為找尋的對象會有error~

請問C兄們有沒有解決之法呢?

procedure TsetAuthority.go_locate;
var loca_str:string;
begin
loca_str:=sel_cond1.disTofieName(CB_locate.Text,act_q1);
//disTofieName是轉變displaylabel為fieldname,基本上跟找尋無關。
act_q1.Locate(loca_str,Ed_locate.Text,[loPartialKey]);
end;
------
獨學無友則孤陋寡聞,相識滿天下能知天下事
小弟是來自香港的~~多多指教
編輯記錄
chkkevin 重新編輯於 2008-02-16 19:29:38, 註解 無‧
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-02-16 23:26:30 IP:122.127.xxx.xxx 訂閱
不算看得懂你的問題
如果真的new lookupfield不能locate的話
改用master / detail 方式,然後locate detaIl 就會找到master了。
------
努力會更接近成功
chkkevin
一般會員


發表:34
回覆:64
積分:19
註冊:2007-05-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-02-18 10:15:17 IP:218.254.xxx.xxx 訂閱
其實,可不可把lookupfield做尋找的對像呢?

如果用master / detail 方式,好像都是有個問題,因為小弟是想把master / detail 都是
的field放在同一個TDBGrid中,再把TDBGrid的caption放在一個combobox中,再利用
.disTofieName(CB_locate.Text,act_q1)
//CB_locate就是那個combobox
轉這個caption做回field name,再以這個field name做尋找的目標,就算是用上master / detail
到了最終都是要在Tquery中ADD master 的field,問題又再次去到,不能locate”lookupfield”了。

如何是好呢。。。。?



===================引 用 pceyes 文 章===================
不算看得懂你的問題
如果真的new lookupfield不能locate的話
改用master / detail 方式,然後locate detaIl 就會找到master了。
------
獨學無友則孤陋寡聞,相識滿天下能知天下事
小弟是來自香港的~~多多指教
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-02-18 14:28:00 IP:122.127.xxx.xxx 訂閱
還是看不算得懂你的問題
如果真的new lookupfield不能locate的話
改用master / detail 方式,
先locate master後 再用Locate找Detail就可以找到你要的資料了。

另外不要再管DbGrid了,這些都是屬於DataSet的事,和顯示元件(DBGRID..)並無關係。
------
努力會更接近成功
chkkevin
一般會員


發表:34
回覆:64
積分:19
註冊:2007-05-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-02-19 01:12:30 IP:218.254.xxx.xxx 訂閱
不好意思,小弟說明得不太清楚~
本來是無關,但
那就非用lookupfield不可了。其實,小弟有一個方法是把兩個table join在一起,
像這樣

SELECT u.Staff_id,s.F_name,s.L_name,u.Mod_registry,u.Mod_inpatient
,u.Mod_energency,u.Mod_outpatient,u.Mod_admin,u.Mod_dispensary,u.mod_Operation
FROM staff s,userau u
where s.Staff_id=u.staff_id
having
u.Mod_registry='false'
and u.Mod_inpatient='false'
and u.Mod_energency='false'
and u.Mod_outpatient='false'
and u.Mod_admin='false'
and u.Mod_dispensary='false'
and u.mod_Operation='false'
order by u.staff_id

而不用table join的SQL是這樣,但就要用lookupfield,把 staff 的field出現在同一個DBGRID上。
select
*
from
userAU
where
Mod_registry=’false'
or Mod_inpatient=’false'
or Mod_energency='’false'
or Mod_outpatient=’false'
or Mod_admin=’false'
or Mod_dispensary='false'
or mod_Operation=’false'
order by
staff_id
不過在Tquery的fieldname中u.Staff_id卻是變成Staff_id,這會是另一個問題,因為小弟
是需要u.Staff_id這個做fieldname而不是Staff_id,但不關LOCATE的事,而是用在其他方面,先不要理這個。
所以先想試試看有沒有法子可以把lookupfield 做locate~
===================引 用 pceyes 文 章===================
還是看不算得懂你的問題
如果真的new lookupfield不能locate的話
改用master / detail 方式,
先locate master後 再用Locate找Detail就可以找到你要的資料了。

另外不要再管DbGrid了,這些都是屬於DataSet的事,和顯示元件(DBGRID..)並無關係。
------
獨學無友則孤陋寡聞,相識滿天下能知天下事
小弟是來自香港的~~多多指教
chkkevin
一般會員


發表:34
回覆:64
積分:19
註冊:2007-05-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-02-19 02:23:41 IP:218.254.xxx.xxx 訂閱
順帶一問,有沒有可能把fieldname:staff轉成u.staff 呢?
------
獨學無友則孤陋寡聞,相識滿天下能知天下事
小弟是來自香港的~~多多指教
chkkevin
一般會員


發表:34
回覆:64
積分:19
註冊:2007-05-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-02-19 19:42:57 IP:218.254.xxx.xxx 訂閱
看似只有Join Table這個方法可以令兩個Table顯示在一個又可以locate,但是又來
另一個問題,join 了兩個table不能夠將RequestLive:=TRUE,因為想用DBGrid update,
小弟用的是BDE。。。點算好呀?。。。
------
獨學無友則孤陋寡聞,相識滿天下能知天下事
小弟是來自香港的~~多多指教
編輯記錄
chkkevin 重新編輯於 2008-02-19 19:56:45, 註解 無‧
chkkevin
一般會員


發表:34
回覆:64
積分:19
註冊:2007-05-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-02-21 16:08:56 IP:218.254.xxx.xxx 訂閱
已經知道發生了什麼事了~
定要用TupdateSQL
http://www.cyut.edu.tw/~rcchen/courses/delphi/html/topic/topic10/topic10.html

在此又要多謝先進的資料~

一個問題之后,又另一個問題,TupdateSQL真正的實作是如何做的呢?
有沒有經驗分享?
------
獨學無友則孤陋寡聞,相識滿天下能知天下事
小弟是來自香港的~~多多指教
chkkevin
一般會員


發表:34
回覆:64
積分:19
註冊:2007-05-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-02-21 16:49:36 IP:218.254.xxx.xxx 訂閱
自己摸下、索下,終於知道TupdateSQL是怎樣用了,TupdateSQL真是方便到不得了。

如果是初用TupdateSQL的朋友,可以試試留意當中key Field ,update Field,它是會
根据你選擇(變藍色)的Field來自動產生sql statement的
------
獨學無友則孤陋寡聞,相識滿天下能知天下事
小弟是來自香港的~~多多指教
BIG-ROM
初階會員


發表:94
回覆:91
積分:37
註冊:2005-04-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-02-22 20:03:43 IP:61.145.xxx.xxx 未訂閱
var
CZTJ : String;

begin
Edit1.Text;

ADOQuery1.SQL.Text :='Select * From TABEL1';
ADOQuery1.Open;
if ADOQuery1.Locate('name',CZTJ ,[loCaseInsensitive]) then
begin
ShowMessage('已经有相同的联系人存在!!');
CLOSE;
END
ELSE
begin
...


===================引 用 chkkevin 文 章===================
小弟寫了一個簡單找尋的method:~
它可以找到在Tquery中本身有的Tfield,但怎樣可以找尋以lookupfield所ADD的new field呢?
因為,當尋找以lookupfield為找尋的對象會有error~

請問C兄們有沒有解決之法呢?

procedure TsetAuthority.go_locate;
var loca_str:string;
begin
loca_str:=sel_cond1.disTofieName(CB_locate.Text,act_q1);
//disTofieName是轉變displaylabel為fieldname,基本上跟找尋無關。
act_q1.Locate(loca_str,Ed_locate.Text,[loPartialKey]);
end;
系統時間:2024-04-20 15:51:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!