如何使用ADOConnection1及TADOQuery元件 |
尚未結案
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
剛剛去翻了「DELPHI 6實務經典 第三波 林金霖編著」,想要查看如何取得某一欄的值,查TADOQuery物件,結果只有20-43~20-44兩頁,再往後翻也沒有題到如何取很某一欄的值,到20-50就換另一個主題了,過去只要打入 Emp_No := ADOTable1.FieldByName('A0').AsString; 即可,我該如何取得ADOConnection1欄位某值的內容?盼各位先進再次指導,或告知那本書?我一定用心苦讀,感謝。 發表人 - jawtair 於 2003/05/09 14:31:34
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
ADOConnection 只做連接的部份,其他的部份仍時是各 ADOTable / ADOQuery 去做 不用 ADOConnection :
───ADOTable1 ───ADOTable2 數據庫───ADOTable3 ───ADOQuery1 ───ADOQuery2每個DataSet 各自設定獨立連線到數據庫,佔用多資源,要建立多次輸入連線資料,若連線資料修改要多次修改 用 ADOConnection : ──ADOTable1 ──ADOTable2 數據庫───ADOConnection──ADOTable3 ──ADOQuery1 ──ADOQuery2各DataSet 共享同一連線到數據庫,佔用較少資源,只要建立一次連線資料,若連線資料修改只需修改 ADOConnection ADOConnection 只取代 ADOTable / ADOQuery 的 連線部份 ,資料處理部份仍是 ADOTable/ADOQuery 自行處理,與獨立時無異。 |
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你連到轉了
應是 DataSources 的 DataSet 連到 ADOTable1 ADOTable1 的 DataSources 是讓 Detail Table 連 上 Master Table 的 DataSources 的
-------------------------------------------------------------------- 修正 : 上面的似乎是我看太快看錯了,不用理會 你的 ADOQuery 是 Table1 的 Detail Table 嗎? 若是的話,你可用 : Select * from DetailTable where KeyFieldName = :KeyFieldName; 這樣 ADOQuery1 就只會顯示合乎 Table1 KeyFieldName 的值的資料了 發表人 - Justmade 於 2003/05/09 18:23:29
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
數據庫←ADOConnection1←ADOTable1←DataSource1←DBGrid1
←ADOQuery1 將ADOQuery1 的 Connection 設為 ADOConnection1
但執行Active時,一直出現「Missing Connection or ConnectionString.」的錯誤訊息 將ADOQuery1的DataSource設為DataSource1
執行Active時,一直出現「ADOQuery1:Missing SQL property.」的錯誤訊息 DBGrid1已經看得到資料,請問為什麼ADOQuery1無法連接ADOConnection1,我漏了那邊嗎?請用淺顯的方法教我,像: TADOQuery.SQL 屬性要設定,
例: Select * From TableName;
然後才可以 Active.
要在那裡設,我找不到Select的屬性 這個 你的 ADOQuery 是 Table1 的 Detail Table 嗎?
若是的話,你可用 :
Select * from DetailTable where KeyFieldName = :KeyFieldName;
這樣 ADOQuery1 就只會顯示合乎 Table1 KeyFieldName 的值的資料了 我也不了解意思,好想去買書喔,那本書寫的比較好,是否能推薦啊< >
再繼續問這種對版主太簡單的問題,我會不好意思啦< > 發表人 - jawtair 於 2003/05/09 21:09:44
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
adoconnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db2.mdb;Persist Security Info=False'; adoconnection1.Connected :=true; ADOQuery1.Connection :=adoconnection1;
ADOQuery1.SQL.Clear ;
adoquery1.sql.Add('SQL语句');
ADOQuery1.Close ;
ADOQuery1.Open; 风花雪月 e梦情缘
------
风花雪月 e梦情缘 |
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
引言: adoconnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db2.mdb;Persist Security Info=False'; adoconnection1.Connected :=true; ADOQuery1.Connection :=adoconnection1; ADOQuery1.SQL.Clear ; adoquery1.sql.Add('SQL语句'); ADOQuery1.Close ; ADOQuery1.Open;現在已經可以查詢了,但是我如何把查詢記錄傳給DBGrid1並且讓它重新顯示 |
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
補充Justmade兄打的,可能漏掉了,試看看這樣
ADOQuery1.SQL.Add('SELECT * FROM pm3d Where (A1 = ' #39 Edit1.Text #39 ')');
引言: 若這個可行 ADOQuery1.SQL.Add('SELECT * FROM pm3d WHERE (A1 = 1000)'); 應該改成這樣罷 : ADOQuery1.SQL.Add('SELECT * FROM pm3d Where (A1 = ' Edit1.Text ')');發表人 - chih 於 2003/05/20 16:29:42 |
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
呵呵,大家都知道我經常筆誤,不過這次是其於 WHERE (A1 = 1000) 沒括號所以不加括號的不是漏掉了
if edit1.text <> '' then //有輸入 begin ADOQuery1.SQL.Text := 'SELECT * FROM pm3d Where (A1 = ' Edit1.Text ')'; ADOQuery1.Active := true; if ADOQuery1.isEmpty then // 沒有資料 ShowMessage('沒有找到資料'); end else ShowMessage('沒有輸入資料'); |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
引言:1.但如果我要判斷使用者是否有輸入資料假設Edit1就是user輸入 if Trim(Edit1.Text)='' then begin SHOWMESSAGE('資料沒有輸入!!!'); Edit1.SetFocus; end; 引言:2.或輸入的資枓是否有查詢到資料,如果沒有即返回,ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM pm3d Where A1= ' #39 Edit1.Text #39); ADOQuery1.Open; if ADOQuery1.IsEmpty then begin SHOWMESSAGE('查無資料!!!'); ADOQuery1.Close end; TRY TRY SEE 發表人 - chih 於 2003/05/20 17:10:58 |
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
if length(trim(edit1.text))=0 then
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM pm3d Where A1= '+#39+Edit1.Text+#39);
ADOQuery1.Close;
ADOQuery1.Open;
if ADOQuery1.eof and ADOQuery1.bof then
SHOWMESSAGE('没有您需要的数据!');
ADOQuery1.Close
end else
SHOWMESSAGE('请输入查询数据!'); 风花雪月 e梦情缘
------
风花雪月 e梦情缘 |
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: if length(trim(edit1.text))=0 then 註 begin ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM pm3d Where A1= ' #39 Edit1.Text #39); ADOQuery1.Close; ADOQuery1.Open; if ADOQuery1.eof and ADOQuery1.bof then SHOWMESSAGE('没有您需要的数据!'); ADOQuery1.Close end else SHOWMESSAGE('请输入查询数据!');本文沒提出任何新的有用資料,只是將前文有一小點不同,效率更差而且錯了 1. 註 處使用者沒輸入資料才做 Query 有輸入反叫使用者輸入查詢 (不過這只是不小心的小錯) 2. 註 用的方法比 Chih 兄對比的方法效率差 明顯又是一篇提出效率更差方法的模魚文章 詳見 給 wnhoo ,也給關心事件的K.Top網友 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30664 |
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
ADOQuery1.SQL.Add('SELECT * FROM pm3d Where A2= ' #39 Edit1.Text #39); 奇怪,這行為什麼查詢時會出現錯誤訊息:
Project MDIAPP.exe raised exception class EOleException with message '[Microsoft][ODBC SQL Server Driver][SQL Server]資料行前置詞 'From1.Edit1'與用於查詢中的資料表名稱或別名不符。 Process stopped Use step of Run to continue. A2的資料型態是 nvarchar (SQL Server)
是不是字串的查詢方式不一樣?
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
不知道你的Delphi有沒有做過update了??
請先依照你的版本更新一下.
DELPHI 6 Enterprise更新檔Update 2
http://delphi.ktop.com.tw/topic.php?topic_id=179
DELPHI 6 Professional更新檔Update 2
http://delphi.ktop.com.tw/topic.php?topic_id=180
TRY TRY SEE
引言: ADOQuery1.SQL.Add('SELECT * FROM pm3d Where A2= ' #39 Edit1.Text #39); 奇怪,這行為什麼查詢時會出現錯誤訊息: Project MDIAPP.exe raised exception class EOleException with message '[Microsoft][ODBC SQL Server Driver][SQL Server]資料行前置詞 'From1.Edit1'與用於查詢中的資料表名稱或別名不符。 Process stopped Use step of Run to continue. A2的資料型態是 nvarchar (SQL Server) 是不是字串的查詢方式不一樣? |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: ADOQuery1.SQL.Add('SELECT * FROM pm3d Where A2= ' #39 Edit1.Text #39); 奇怪,這行為什麼查詢時會出現錯誤訊息: Project MDIAPP.exe raised exception class EOleException with message '[Microsoft][ODBC SQL Server Driver][SQL Server]資料行前置詞 'From1.Edit1'與用於查詢中的資料表名稱或別名不符。 Process stopped Use step of Run to continue.應該是你程式的筆誤罷,你大慨打成了 : ADOQuery1.SQL.Add('SELECT * FROM pm3d Where A2= ' 'Form1.Edit1.Text'); 之類罷 你打回 ADOQuery1.SQL.Add('SELECT * FROM pm3d Where A2= ' #39 Form1.Edit1.Text #39); 便應沒事了。 |
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |