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

bcb搜尋access的問題

答題得分者是:st33chen
superkid07
一般會員


發表:2
回覆:3
積分:1
註冊:2009-08-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-08-24 23:56:18 IP:125.232.xxx.xxx 訂閱
小弟是剛學程式的新手
最近被老師要求作bcb連結access
有找過一些書 但是沒有針對bcb的資料庫做很深的介紹 BCB的書也真的不多(而且大部分都是舊書)
最近時間也比較緊迫
近日來這邊找尋文章幾天了
大概知道如何設定元件 但是卻不太了解元件之間的功能區別(像是Adotable跟Adoquery常常一起使用 但卻不知各別功能)
因為小弟也不是科班的 BCB的資料感覺也不大多
所以還是忍不住來發問很基本的問題(很抱歉 來發問很蠢的問題 但是實在是不知怎麼做)

小弟是要用BCB查詢ACCESS資料庫 無須用到新增 刪除功能 純粹將搜尋到的東西顯示在EDIT上 不需特別在BCB內做出報表
EX:資料庫中有姓名與興趣兩項 我在EDIT1中輸入姓名 即可在EDIT2上查詢到相對應的興趣 無需其他功能及報表
看了一些文章 裡面有教設定ADO元件 但是我只知道ADOConnect是作連結 另外有設定3個卻不知道功用
可以不用作報表就能有查詢功能嗎 如果是的話 哪個元件是作報表的(我可以不用他)
此外我大概了解select * ..... 但是前面很多東西都不懂 希望前輩們稍微提示一下
問這些問題真的很抱歉!!
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-08-25 08:41:46 IP:122.116.xxx.xxx 未訂閱
您好,

generally speaking,

adotable 是指定一個 table, 然後對整個 table 進行操作, 篩選資料要用 filtered, filterstring 屬性
adoquery 是依需求指定一個篩選資料的 SQL 語句, 然後對篩選出來的資料進行操作.
所以,
當 adoquery 用 select * from tablename 時效果約等於 adotable 指定 tablename
當 adotable 用 filterstring 時效果約等於 adoquery 用 select * from tablename where ... ( 其中 ... 為 filterstring 的內容)

您的例子 : 資料庫中有姓名與興趣兩項 我在EDIT1中輸入姓名 即可在EDIT2上查詢到相對應的興趣
用 adoquery 的方法是 adoquery 的 sql 的 text 設為 'select 興趣 from table名 where 姓名 = ''' edit1->text '''';
找得到的話( ! adoquery1->eof ) 把值 adoquery->fieldbyname('興趣')->value 放入 edit2->text 中

試著實做一下 ...

------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
superkid07
一般會員


發表:2
回覆:3
積分:1
註冊:2009-08-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-08-25 11:53:33 IP:125.232.xxx.xxx 訂閱
謝謝你 這樣我大概比較瞭解了 我就有方向可以做下去了
非常謝謝你喔~~

ADOQuery1:cannot perform this operation on a closed dataset;
是什麼東西被關了?
編輯記錄
superkid07 重新編輯於 2009-08-25 12:42:49, 註解 無‧
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-08-25 13:03:05 IP:61.219.xxx.xxx 未訂閱

adoquery 的操作順序大約是

adoquery1->close;
adoquery1->sql->text = '........................';
adoquery1->open;
---
您的其他動作
---
adoquery1->close;

adoquery 要被 open 後才能做操作, 您可能還沒 open

===================引 用 superkid07 文 章===================
謝謝你 這樣我大概比較瞭解了 我就有方向可以做下去了
非常謝謝你喔~~

ADOQuery1:cannot perform this operation on a closed dataset;
是什麼東西被關了?
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
superkid07
一般會員


發表:2
回覆:3
積分:1
註冊:2009-08-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-08-25 20:31:51 IP:125.232.xxx.xxx 訂閱
謝謝 
現在程式執行的時候 並沒有出現偵錯
但是點選到要執行搜尋的按鈕 就會出現無法指出的錯誤
" "左邊此符號要包覆的範圍是從select到我指定的東西 然後 edit的text這樣嗎?
(我現在只有做edit1的搜尋 還沒做edit2的秀出 因為搜尋會出錯)

ADOQuery1->Close();
ADOQuery1->SQL->Text="select id from db1 where ccc=" " Edit2->Text ";
ADOQuery1->Open();

id是我設定姓名的欄位 ccc是我設定興趣的欄位 db1是我table的名稱
我有設定一個按鈕去執行 程式可執行 但是會出現錯誤呢(當我按下按鈕才會) 是我包覆錯誤嗎? 不好意思 結案了還是發問了一下><"
系統時間:2017-11-20 17:29:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!