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

請問 Tquery 的問題

答題得分者是:deity
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-07 11:21:46 IP:218.103.xxx.xxx 未訂閱
             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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-07 11:40:46 IP:218.15.xxx.xxx 未訂閱
你好:
  将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 但也包括呼叫數據庫做不同事的函數。    
~~~无休无止的重复~~~
系統時間:2024-06-23 10:22:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!