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

如何解查詢問題

尚未結案
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-06 01:04:54 IP:61.228.xxx.xxx 未訂閱
if FC4RadioGroup1.ItemIndex = 0 then      Form1.ADOQuery1.Locate('comno',FC4edit1.Text,[])      // 代號   else      Form1.ADOQuery1.Locate('Comname',FC4edit2.Text,[]);      // 名稱    Form1.ADOQuery1.Locate('Comname',FC4edit2.Text,[])一定要輸入完整資料庫'三民企業股份有限公司' 才查詢得到. 如何輸入簡短 '三民' or '三民企業' 一樣可以查詢到符合comname='三民' 排序之第一筆資料 謝謝    <ObjectPascal 轉區> 發表人 - ddy 於 2003/05/06 09:16:48
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-06 08:13:58 IP:219.130.xxx.xxx 未訂閱
Form1.ADOQuery1.Locate('comno',FC4edit1.Text,[loPartialKey])
liorex
初階會員


發表:19
回覆:60
積分:32
註冊:2002-08-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-06 08:38:13 IP:61.222.xxx.xxx 未訂閱
我想你的問題JuseMade已經給你很好的解答了,但是還要提醒你,假如你 要使用這樣的方式找值,在開query時就叫將要locate的欄位加入order by 中而且最好是依序排locate field1,field2 order by 就要FIELD1,Field2 這樣要做資料處裡的時候比較方便 ---------------------- 一切有為法 如夢幻泡影 如露亦如電 應做如是觀 ----------------------
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-07 00:58:07 IP:61.228.xxx.xxx 未訂閱
Form1.ADOQuery1.Locate('comno',FC4edit1.Text,[loPartialKey]) 之前加了,[loPartialKey],Run時出現 error message [Error] Undeclared identifier: 'loPartialKey' [Error] Incompatible types: 'TLocateOption' and 'Integer' 不知錯那兒,所以一直沒用[loPartialKey] [/quote] 發表人 - nick167 於 2003/05/07 01:06:42
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-07 07:04:31 IP:202.39.xxx.xxx 未訂閱
要 uses db;    --- 每個人都是一本書
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-07 11:05:32 IP:61.228.xxx.xxx 未訂閱
[quote] 要 uses db(已經uses) Form1.ADOQuery1.Locate('comno',FC4edit1.Text,[]) 可以 Form1.ADOQuery1.Locate('comname',FC4edit2.Text,[loPartialKey]) 不行,會出現上error message
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-07 11:20:34 IP:218.16.xxx.xxx 未訂閱
[Error] Undeclared identifier: 'loPartialKey' [Error] Incompatible types: 'TLocateOption' and 'Integer' 沒理由會一起出現的啊 第一行是沒找到 loPartialKey 的定義 (確如 hagar 版主所言, uses DB 即可) 而第二行是 你在[]內直接給個整數或給了個內容是整數的變數 才會出現 既找不到 loPartialKey 又甚會將之當成是整數??? 你要不要貼整段程式及完整的錯誤訊息給大家看看?
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-07 11:36:08 IP:61.228.xxx.xxx 未訂閱
procedure TFormComp4.FC4BitBtn1Click(Sender: TObject); begin if FC4RadioGroup1.ItemIndex = 0 then FormComp1.CompADOQuery1.Locate('companyno',FC4edit1.Text,[]) // []可以 [loPartialKey]:就有Error message else FormComp1.CompADOQuery1.Locate('companyname',FC4edit2.Text,[]); // []可以 [loPartialKey]:就有Error message FormComp1.FormCompMaskedit1.Text:=FormComp1.CompADOQuery1.FieldByName('opendate').AsString; FormComp1.FCEdit1.Text:=FormComp1.CompADOQuery1.FieldByName('CompanyNo').AsString; FormComp1.AssignValue; Close; end; [Error] frm4comp.pas(56): Undeclared identifier: 'loPartialKey' [Error] frm4comp.pas(56): Incompatible types: 'TLocateOption' and 'Integer' [Fatal Error] HCmychk.dpr(15): Could not compile used unit 'frm4comp.pas' 真的不知問題出在那兒
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-07 11:49:55 IP:61.155.xxx.xxx 未訂閱
相关的单元都要 uses db; 这样就不会出现错误了!!! 调用例,如: query1.Locate('Comname',FC4edit2.Text,[loPartialKey]); 风花雪月 e梦情缘
發表人 - wnhoo 於 2003/05/07 12:41:19
------
风花雪月 e梦情缘
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-07 12:08:59 IP:218.16.xxx.xxx 未訂閱
引言: 要 uses db(已經uses)
我相信你在 FormComp1 已經 Used DB 但你在 FormComp4 也要 Uses DB 呀 因為你現在是在 FormComp4 使用 loPartialKey 而 loPartialKey 是在 DB 裡定議的。
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-07 13:24:02 IP:218.16.xxx.xxx 未訂閱
哇...wnhoo 兄... 原本只說句 uses DB; 是 hagar 大大早說了的 看見他人的詳細解說在那裡use後就修改原先的文章來加詳細 真是高招,偑服偑服
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-07 13:43:30 IP:61.155.xxx.xxx 未訂閱
Justmade 兄: 我刚才说的USES DB;是指在每个单元中加入,只不过没讲清楚,所以就补上了。    不知道我们的想法,是不是nick167兄的问题所在。    仅供参考!!!!       风花雪月 e梦情缘
------
风花雪月 e梦情缘
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-05-07 14:15:13 IP:218.16.xxx.xxx 未訂閱
wnhoo 兄 : 其實我想 hagar 大大的意思也是 在需要的地方 uses DB 罷。 一般來說,修改是修改筆誤或是在沒其他人回答前補充資料。 若其他人已作回答而你有所補充,應重新回應會較好。 可能大家使用的方法有所不同罷,一點小誤會。
lilisn
一般會員


發表:35
回覆:62
積分:24
註冊:2003-03-09

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-05-07 14:51:48 IP:61.228.xxx.xxx 未訂閱
我用我同事lilisn電腦討論因為nick電腦中毒了?不好意思 我的程式 Form1comp1 裡 button1(搜尋) -> do (formcomp4) 寫法一: if FC4RadioGroup1.ItemIndex = 0 then formcomp1.compADOQuery1.Locate('companyno',[]) // 代號只有5碼比較好輸入 else formcomp1.compADOQuery1.Locate('companyname',FC4edit2.Text,[]); // 名稱50碼要輸入與資料庫一樣才 serach ok FormComp1.FormCompMaskedit1.Text:=FormComp1.CompADOQuery1.FieldByName('opendate').AsString; FormComp1.FCEdit1.Text:=FormComp1.CompADOQuery1.FieldByName('CompanyNo').AsString; FormComp1.AssignValue; close; 回Formcomp1後指標也指向該筆,符合我需求 只是fc4edit2.text 要完全key in "美文紙品有限公司" 才search ok ,如key in "美文" 去search 會not found 寫法二: // 在 FormComp4 加一個adoquery1 (uses db) if FC4RadioGroup1.ItemIndex = 0 then fc4ADOQuery1.Locate('companyno',[loPartialKey]) else fc4ADOQuery1.Locate('companyname',FC4edit2.Text,[loPartialKey]); 搜尋沒問題了,可是如何回到formcomp1,record指向該筆? 謝謝前輩指導 [/quote] 發表人 - lilisn 於 2003/05/07 15:03:24
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-05-08 00:27:53 IP:61.228.xxx.xxx 未訂閱
借用我同事lilisn電腦發表上述想法, 公司電腦有按裝防毒,還是中毒,還好有備份, 家中比較靜,思考整理一下, procedure TFormComp4.FC4BitBtn1Click(Sender: TObject); var Srecord:String; begin if FC4RadioGroup1.ItemIndex = 0 then Fc4ADOQuery1.Locate('companyno',FC4edit1.Text,[loPartialKey]) else Fc4ADOQuery1.Locate('companyname',FC4edit2.Text,[loPartialKey]); Srecord:=Fc4ADOQuery1.FieldByName('companyno').AsString; Fc4ADOQuery1.Close; // 記錄companyno後,在locate一次,可以完成我所需,不知是否有較好寫法? FormComp1.CompADOQuery1.Locate('companyno',Srecord,[]); FormComp1.FormCompMaskedit1.Text:=FormComp1.CompADOQuery1.FieldByName ('opendate').AsString; FormComp1.FCEdit1.Text:=FormComp1.CompADOQuery1.FieldByName ('CompanyNo').AsString; FormComp1.AssignValue; Close; end; [/quote]
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-05-08 01:01:37 IP:218.16.xxx.xxx 未訂閱
FormComp4 不用另加一個 dataset,可用 FormComp1的 只要在 uses 裡手動加上 DB 即可!
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-05-08 11:42:37 IP:61.228.xxx.xxx 未訂閱
引言: FormComp4 不用另加一個 dataset,可用 FormComp1的 只要在 uses 裡手動加上 DB 即可!
謝謝Justmade,我使用delphi上在爬行階段 真不好意思,可否說明forcomp4裡如何 uses sql-2000 *.dbo
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-05-08 12:22:01 IP:218.16.xxx.xxx 未訂閱
unit forcomp4;    interface    uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, ...., DB;
lilisn
一般會員


發表:35
回覆:62
積分:24
註冊:2003-03-09

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