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

幽靈的 locate

答題得分者是:T.J.B
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-19 16:39:20 IP:211.74.xxx.xxx 未訂閱
我之前所寫的程式中,有用到locate來找資料是否重復     if DM_MT.Table_MT_dba.locate('dba_id',Edit_MT_DBAid.text,[])then  begin     showmessage('管理員代碼 '+Edit_MT_DBAid.text+' 重覆!!請重新輸入!');     edit_mt_dbaid.SetFocus;  end    但是今天又測試了一下,發現他並不會去執行這一行指令了 因為之前連線的主機當掉,我改連localhost的資料庫 突然就不行了, 請問,這和mysql的版本或是什麼有關係呢…
P.D.
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-19 16:58:35 IP:211.78.xxx.xxx 未訂閱
引言: 我之前所寫的程式中,有用到locate來找資料是否重復 if DM_MT.Table_MT_dba.locate('dba_id',Edit_MT_DBAid.text,[])then begin showmessage('管理員代碼 ' Edit_MT_DBAid.text ' 重覆!!請重新輸入!'); edit_mt_dbaid.SetFocus; end 但是今天又測試了一下,發現他並不會去執行這一行指令了 因為之前連線的主機當掉,我改連localhost的資料庫 突然就不行了, 請問,這和mysql的版本或是什麼有關係呢… < face="Verdana, Arial, Helvetica"> 我沒用過mysql, 但應該關係不大吧! 可能和你置放的事件位置有關係(因為你的訊息告訴我們是沒有去執行), 不知是否有錯誤發生呢?
T.J.B
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-19 16:59:17 IP:61.220.xxx.xxx 未訂閱
建議你用sql 不要用 locate的function 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-21 01:34:56 IP:211.74.xxx.xxx 未訂閱
引言: 建議你用sql 不要用 locate的function 天行健 君子當自強不息~~@.@
為什麼呢,之前都用的好好的, 一夕之間,我的新修改查裡,只要用到locate的, 都不能用了… 我現在已經在改成sql的語法了…(好多哦) 不過我還是想知道…為什麼… >
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-21 01:36:57 IP:211.74.xxx.xxx 未訂閱
我沒用過mysql, 但應該關係不大吧! 可能和你置放的事件位置有關係(因為你的訊息告訴我們是沒有去執行), 不知是否有錯誤發生呢?      [/quote]    就是沒有錯誤訊息,一切正常,只是修改功能不能修改,查詢是用locate查的也查不到資料了…>< 這才叫幽靈
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-21 10:58:41 IP:211.74.xxx.xxx 未訂閱
引言: [quote] 建議你用sql 不要用 locate的function 天行健 君子當自強不息~~@.@
我現在已經不用locate而改設一個query來存我每個用到的sql語法 但是…我現在又有問題了 我的dbgrid的游標要怎麼讓他移到我所找到的資料上呢… 因為之前用locate可以找到資料並移到該資料上, 現在不用locate,不曉得要怎麼讓游標移動了
T.J.B
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-22 15:32:11 IP:218.160.xxx.xxx 未訂閱
引言:
引言: [quote] 建議你用sql 不要用 locate的function 天行健 君子當自強不息~~@.@
我現在已經不用locate而改設一個query來存我每個用到的sql語法 但是…我現在又有問題了 我的dbgrid的游標要怎麼讓他移到我所找到的資料上呢… 因為之前用locate可以找到資料並移到該資料上, 現在不用locate,不曉得要怎麼讓游標移動了 < face="Verdana, Arial, Helvetica"> 基本上要讓游標指到該筆資料可以用locate啊 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-22 23:44:42 IP:211.74.xxx.xxx 未訂閱
[/quote]    基本上要讓游標指到該筆資料可以用locate啊    天行健 君子當自強不息~~@.@ [/quote]    嗯…可是我現在的locate不知出了什麼問題, 並不會去偵測到我所要查的值,所以他也沒辦法讓游標移到該筆資料上…>< 所以我想問有沒有除了locate以外的指令可以用的    我發現…我只要有locate那行的程式, 根本連執行都不會執行哦…< > 因為我後面少一個";",他也不會出現錯誤訊息來告訴我…< > h~~~e~~~~l~~~~p~~~/_\
T.J.B
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-23 09:32:28 IP:61.220.xxx.xxx 未訂閱
你可以把locate 前後的程式碼post上來看看 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-23 13:29:24 IP:211.74.xxx.xxx 未訂閱
引言: 你可以把locate 前後的程式碼post上來看看 天行健 君子當自強不息~~@.@
以下是我的程式碼… if (Edit_MT_dbaQuery.text='') then messagedlg('查詢值不可為空! ',mterror,[mbok],0) else with DM_MT do begin IF Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[]) THEN begin Close; showmessage('已查到管理者代碼為 ' edit_mt_dbaquery.Text ' 的記錄'); end else begin showmessage('查無此筆 ' Edit_MT_dbaQuery.text ' 管理員記錄'); Edit_MT_dbaQuery.SetFocus; end; bitbtn2Click(nil);//關閉form end; 就這樣…麻煩您幫我看一下囉…謝謝
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-23 14:05:49 IP:192.168.xxx.xxx 未訂閱
引言:
引言: 你可以把locate 前後的程式碼post上來看看 天行健 君子當自強不息~~@.@
以下是我的程式碼… if (Edit_MT_dbaQuery.text='') then messagedlg('查詢值不可為空! ',mterror,[mbok],0) else with DM_MT do begin IF Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[]) THEN begin Close; showmessage('已查到管理者代碼為 ' edit_mt_dbaquery.Text ' 的記錄'); end else begin showmessage('查無此筆 ' Edit_MT_dbaQuery.text ' 管理員記錄'); Edit_MT_dbaQuery.SetFocus; end; bitbtn2Click(nil);//關閉form end; 就這樣…麻煩您幫我看一下囉…謝謝
站長的經驗是Delphi的Locate指令, 有時會有查不到的情況發生, 而且也是像您一樣本來可以後來又不行, 所以, 建議最好不要用Locate的指令! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-12-23 14:21:48 IP:210.202.xxx.xxx 未訂閱
引言: 站長的經驗是Delphi的Locate指令, 有時會有查不到的情況發生, 而且也是像您一樣本來可以後來又不行, 所以, 建議最好不要用Locate的指令! ~~~Delphi K.Top討論區站長~~~
我贊成 站長的看法; 我試過同樣的程式在 InterBase 可以, 但 FireBird 就會發生 Locate 找不到資料的情形, 不然您改用其他版本看看, 也許不同 OS (Windows, Linux)也有影響. 不過最好還是用 query 查詢比較好 ...
------
將問題盡快結案也是一種禮貌!
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-12-23 14:39:25 IP:211.74.xxx.xxx 未訂閱
站長的經驗是Delphi的Locate指令, 有時會有查不到的情況發生, 而且也是像您一樣本來可以後來又不行, 所以, 建議最好不要用Locate的指令!    ~~~Delphi K.Top討論區站長~~~ [/quote] 謝謝… 我已經一個一個將有使用到locate的地方改成query的語法了… 但是…像我在查詢某個資料時, 要怎麼讓dbgrid裡的游標移到我所找到的那筆資料呢?    因為之前用locate就可以… 現在…唉…/_\ 已經近乎完工的程式,又得再改了… 不過還好及時發現的早…><    
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-12-23 15:30:34 IP:192.168.xxx.xxx 未訂閱
引言: 我已經一個一個將有使用到locate的地方改成query的語法了… 但是…像我在查詢某個資料時, 要怎麼讓dbgrid裡的游標移到我所找到的那筆資料呢? 因為之前用locate就可以… 現在…唉…/_\ 已經近乎完工的程式,又得再改了… 不過還好及時發現的早…>< < face="Verdana, Arial, Helvetica"> 我想只能一筆一筆Next測試看看是否符合條件了, 其它網友有沒有好的辦法! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
T.J.B
版主


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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-12-23 17:13:06 IP:61.220.xxx.xxx 未訂閱
引言:
引言: 你可以把locate 前後的程式碼post上來看看 天行健 君子當自強不息~~@.@
以下是我的程式碼… if (Edit_MT_dbaQuery.text='') then messagedlg('查詢值不可為空! ',mterror,[mbok],0) else with DM_MT do begin open; IF Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[]) THEN begin Close; showmessage('已查到管理者代碼為 ' edit_mt_dbaquery.Text ' 的記錄'); end else begin showmessage('查無此筆 ' Edit_MT_dbaQuery.text ' 管理員記錄'); Edit_MT_dbaQuery.SetFocus; end; bitbtn2Click(nil);//關閉form end; 就這樣…麻煩您幫我看一下囉…謝謝
1:看紅色部分 你在這邊因為把query給關掉了 所以會導致如果你一開始就找不到 程式會正常 但是 如果一但有找到資料後 再找下一筆往後的locate就會因為query被close而找不到了 所以你必須把close拿掉 應該就正常了 2:看藍色部分 如不把close拿掉 那就要加 open 的程式碼 ps:所以不是locate的問題 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2002/12/23 17:15:57 發表人 - T.J.B 於 2002/12/23 17:19:06
------
天行健
君子當自強不息~~@.@
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-12-23 17:40:22 IP:211.74.xxx.xxx 未訂閱
這一句.. IF Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[]) THEN 改這樣試看看.. IF Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[loPartialKey ]) THEN TRY TRY SEE...
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-12-23 23:05:49 IP:211.74.xxx.xxx 未訂閱
嗯…我那個close是關掉我的form, 因為這個程式是另一個form在做查詢的, 當我查完時會關閉form, 不過我看了一下我的程式,好像是多此一舉, 故我也有聽T.J.B大哥的話,把他註解掉, 但是,LOCATE還是沒辦法偵測到我的資料…>< 我今天拿了我的程式給同學測,發覺在同學的電腦上, 用LOCATE跑起來是沒問題的… 怎麼辦呢…/_\ 問題到底出在那??
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-12-23 23:08:26 IP:211.74.xxx.xxx 未訂閱
引言: 這一句.. IF Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[]) THEN 改這樣試看看.. IF Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[loPartialKey ]) THEN TRY TRY SEE...
嗯…那是什麼指令呢? 我試了他會出現錯誤哎…有拼錯嗎?
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#19 引用回覆 回覆 發表時間:2002-12-24 10:46:03 IP:210.202.xxx.xxx 未訂閱
引言: 嗯…我那個close是關掉我的form, 因為這個程式是另一個form在做查詢的, 當我查完時會關閉form, 不過我看了一下我的程式,好像是多此一舉, 故我也有聽T.J.B大哥的話,把他註解掉, 但是,LOCATE還是沒辦法偵測到我的資料…>< 我今天拿了我的程式給同學測,發覺在同學的電腦上, 用LOCATE跑起來是沒問題的… 怎麼辦呢…/_\ 問題到底出在那??
請問您有檢查您和您同學 MySQL、OS、Delphi 的版本是相同的嗎 ? 或是改用 Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[loCaseInsensitive]) 或 Table_MT_DBA.Locate('DBA_ID',Edit_MT_dbaQuery.text,[loPartialKey]) 看看 ... 記得要 uses DB 發表人 - danny 於 2002/12/24 10:51:02
------
將問題盡快結案也是一種禮貌!
ooctiger
一般會員


發表:25
回覆:46
積分:14
註冊:2002-07-08

發送簡訊給我
#20 引用回覆 回覆 發表時間:2002-12-24 15:06:17 IP:61.219.xxx.xxx 未訂閱
請各位幫幫忙 請問一下 Locate改寫成SQL方式要如何修改? 可否show出更改前,後的程式碼做參考 另外如果我在TQuery下一SQL要查詢符合條件 的資料筆數,在 edit1.text show出資料筆數, 要如何做.
T.J.B
版主


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

發送簡訊給我
#21 引用回覆 回覆 發表時間:2002-12-24 15:56:32 IP:61.220.xxx.xxx 未訂閱
引言: 請各位幫幫忙 請問一下 Locate改寫成SQL方式要如何修改? 可否show出更改前,後的程式碼做參考 另外如果我在TQuery下一SQL要查詢符合條件 的資料筆數,在 edit1.text show出資料筆數, 要如何做.
問題一 舉例 如下 用LOCATE (修改前)
 
if DM_MT.Table_MT_dba.locate('dba_id',Edit_MT_DBAid.text,[])then
begin
showmessage('管理員代碼 ' Edit_MT_DBAid.text ' 重覆!!請重新輸入!');
edit_mt_dbaid.SetFocus;
end
用SQL (修改後)
  With DM_MT.Table_MT_dba do
  begin
    close;
    sql.clear;
    sql.add('select count(*) value from xxx where dba_id = ''' Edit_MT_DBAid.text  ''' '); 
    prepare;
    open;
    
    if not (isempty) then
    begin
    showmessage('管理員代碼 ' Edit_MT_DBAid.text ' 重覆!!請重新輸入!');
    edit_mt_dbaid.SetFocus;
    end
  end;
問題二 接上題的SQL語法
EDIT1.TEXT:= DM_MT.Table_MT_dba.FIELDBYNAME('value').asstring;
ps:DM_MT.Table_MT_dba 這裡的DM_MT應該是放Table_MT_dba 的地方 如果Table_MT_dba 是放在該form就不用加DM_MT的程式碼 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2002/12/24 16:02:37 發表人 - T.J.B 於 2002/12/24 16:07:56
------
天行健
君子當自強不息~~@.@
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#22 引用回覆 回覆 發表時間:2002-12-25 09:01:10 IP:211.22.xxx.xxx 未訂閱
請妳檢查妳的硬碟容量是否足夠及是否運作正常(根據經驗最好在400MB以上), 或是妳的DataSet是否以經完全由後端下載至前端? 在我個人認為Delphi在執行Locate或Lookup都是在前端作業, 是故與前端暫存區資料完整性有關, 應該與後端什麼資料庫無關, 當 DBGrid 開啟時並沒有將資料全部下載完畢, 當啟動Locat機制時, 會由後端下載至前端, 可由SQL Monitor去監控, 是否在下載時存至前端時發生了什麼問題, 是必須去探討的. 提供個人經驗供參考.
davidwu1217
一般會員


發表:0
回覆:2
積分:0
註冊:2002-12-26

發送簡訊給我
#23 引用回覆 回覆 發表時間:2002-12-26 11:04:02 IP:61.222.xxx.xxx 未訂閱
看了各位大大的留言....發現跟小弟所用的方式有點出入耶^^" 在此提供小弟locate的用法... if DM.AA48.Locate('AA48_C',VarArrayOf([AA48.Text]), [loPartialKey]) then 不同之處在於-->VarArrayOf([AA48.Text]) 不知是小弟愚知還是....@@ 小弟都是這樣用滴^^ 希望對大家有幫助...
T.J.B
版主


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

發送簡訊給我
#24 引用回覆 回覆 發表時間:2002-12-26 12:04:59 IP:61.220.xxx.xxx 未訂閱
引言: 看了各位大大的留言....發現跟小弟所用的方式有點出入耶^^" 在此提供小弟locate的用法... if DM.AA48.Locate('AA48_C',VarArrayOf([AA48.Text]), [loPartialKey]) then 不同之處在於-->VarArrayOf([AA48.Text]) 不知是小弟愚知還是....@@ 小弟都是這樣用滴^^ 希望對大家有幫助...
VarArrayOf 是用在多個欄位查詢用 當然用在一個欄位查詢亦可 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
系統時間:2024-06-26 23:01:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!