請問 Tquery 的問題 |
答題得分者是:deity
|
SamSam1230
中階會員 ![]() ![]() ![]() 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
Query := Tquery.Create(Self); Query.DatabaseName := 'NVtermServerSys' with Query.SQL do begin Clear; Add('SELECT * FROM clientacctb where Name = "' UserName '"'); end; Query.ExecSQL; VRes := Query.FieldbyName('Status').AsInteger;'NVtermServerSys' 是在另一個form 的 tdatabase 但當這個執行之後, 紅色那一句 會出現 error 如下 raised exception class Edatabaseerror withe message ' Field ' Status' not found' 但我的structure 確定是有 'Status' 這個field 另外也試過用以下的方法會出現error 如下 UserName := Copy(Key,1,Pos(deli,Key)-1); Password := Copy(Key,Pos(deli,Key) 1,Length(Key)); try Query := Tquery.Create(Self); Query.DatabaseName := 'NVtermServerSys'; with Query do begin VRes := Query.Lookup('Name',UserName,'Status'); end;error : 'Cannot Perform this operation on a closed dataset' 可能不是最好的方法 !!! 我也是初學者 !!! 不要怪我呀.. 我最喜歡吃零食啦^.^ |
deity
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
你好:
将Query.ExecSQL; 改为:Query.Open; 试试 错误提示也即:数据源没打开,所以得Open; 另POS:ExecSQL与Open的区别,转于站内: 【文章】TQuery元件 Open 和 ExecSQL 的差異? 【編輯】tech_state 【作者】Justmade、channel 【內文】 Open : 當你的 SQL 指令是會另數據庫回傳資料時使用,最常用的是 Select, 但也包括 Show Tables, Show Create Table 等等,你使用 Open (或設 Active := true) DataSet 元件會期望有 Cursor 回傳,即是回傳的是空資料也好;但若沒 Cursor 回傳即會出錯。 ExecSQL : 當你的 SQL 指令只是叫數據庫執行一些東西而沒有 Cursor 回傳的 (可回傳 Row Affected / warning 等資訊)。DataSet 不會預備資源給回傳的 Cursor 所以若有 Cursor 回傳也處理不了。這主要是 Insert、Update、Delete 但也包括呼叫數據庫做不同事的函數。~~~无休无止的重复~~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |