全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2466
推到 Plurk!
推到 Facebook!

ADO 元件控制 Access 資料庫

答題得分者是:a6475

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-24 16:50:49 IP:211.23.xxx.xxx 未訂閱
由於工作上需要,小弟得寫個資料庫程式 想請教在這的前輩們 這個資料庫最主要的功能就是當我資料(Edit1->text)有變動時 我猜這部份可以寫在 Edit1Change 他會自動的將這筆資料存入資料庫內 我手邊關於 BCB 的書籍都沒提到這部份的相關寫法 今天看了許多討論版的文章仍覺得沒頭緒 是否能請前輩們告訴小弟用什麼資料庫就可以 還有提供一下是否坊間有寫這類的書,這兩天就得用上了 程式的功能不大,大約是十台機器回傳的資料,變動的不甚頻繁 小弟覺得也許 Access 就可以用,只是不曉得該如何動手 謝謝 發表人 - 流 於 2003/07/29 17:46:37
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-24 17:57:50 IP:61.229.xxx.xxx 未訂閱
你寫不是不很清楚耶。 是要更動的資料,是資料庫的那一筆呢? 依照題意的話.就是在Edit1Change 事件裡寫 (Delphi的寫法) Table.edit; Table['資料表名稱'] := edit1.text; Table.pose; 但這個方法不是很好,因為每打一個字就會寫入資料庫。 也就是如果打 123456 ,程式碼就會執行六次. 改進的話可以在Edit1Exit事件寫程式碼 月夜 光明 藍更愁
------
月夜 光明 藍更愁

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-24 21:00:13 IP:218.163.xxx.xxx 未訂閱
抱歉,講的不是很詳細,我再補充 我寫了個程式,在 Form 裡 Edit 值會變動 但我想記錄起每一次 Edit 的變化,並加上變化的時間 Edit 的變動不是人為的,所以他會一次顯示一個字串 不會如 a6475 兄所言,會讓程式執行六次 我現在的想法是要記錄起每一次 Edit 的變動 我會給 Edit 一個特定的名字,在資料庫來說是具有唯一性 也許日後會想搭起關聯式的查詢 ~ 所以想請問前輩們,若使用 Access 來存取每一次 Edit 的變動 用 BCB 來寫的話,我要透過什麼元件連結 Access 才對(BDE or ADO) 以及使用了什麼語法 (SQL,我第一次接觸到,呼) 坊間是否有介紹這部份的書籍 (明早我要去找) 希望藉著大家意見的提供,我能比較快速的找到資料 謝謝
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-24 21:13:34 IP:61.229.xxx.xxx 未訂閱
引言: 抱歉,講的不是很詳細,我再補充 我寫了個程式,在 Form 裡 Edit 值會變動 但我想記錄起每一次 Edit 的變化,並加上變化的時間 Edit 的變動不是人為的,所以他會一次顯示一個字串 不會如 a6475 兄所言,會讓程式執行六次 我現在的想法是要記錄起每一次 Edit 的變動 我會給 Edit 一個特定的名字,在資料庫來說是具有唯一性 也許日後會想搭起關聯式的查詢 ~ 所以想請問前輩們,若使用 Access 來存取每一次 Edit 的變動 用 BCB 來寫的話,我要透過什麼元件連結 Access 才對(BDE or ADO) 以及使用了什麼語法 (SQL,我第一次接觸到,呼) 坊間是否有介紹這部份的書籍 (明早我要去找) 希望藉著大家意見的提供,我能比較快速的找到資料 謝謝
一樣在Edit1Change 寫
 
with Query1 do begin
  Close;
  SQL.Text := 'INSERT INTO DBName (欄位名稱1) VALUES('''   Edit1.Text   '''';
  ExecSQL;
end;
end; 
連資料庫,我建議用ADO,雖然BDE也是可以,但那個以經是快被淘汰的東西了。 如果你是要SQL語法的書,像我個人是看博碩出的「入門SQL」,作著是日本人 還簡單易懂的。不是打廣告哦,只是純個人意見^^ 月夜 光明 藍更愁
------
月夜 光明 藍更愁

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-28 14:45:59 IP:211.23.xxx.xxx 未訂閱
對不起喔,再多讓我問些問題再結案 ^^" 小弟這兩天看書的結果,讓我有了一些心得 如果我想連結 Access 資料庫,那我得先建立一個 mdb 檔 第一個問題: 如果沒有建立 mdb 的檔案,那在 BCB 下可以 work 嗎? 也就是說可以由 BCB 動態連結 Access 並產生所需之欄位 雖然我覺得還是乖乖的建 mdb 檔,不過心中疑問還是想請教前輩們 第二個問題: 小弟打算以 ADO 的方式來連結 Access 那麼 BCB 所提供的元件之中,是否不需要透過 SQL 語法 而利用ADO之元件即有增加、刪除、修改等功能? 或是說以 SQL 語法來控制其功能比較廣、完整? 如果不需透過 SQL 語法來連結資料庫 請問哪邊有對 ADO 元件,如增加、刪除、修改語法的簡便說明 謝謝。
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-28 18:10:58 IP:61.221.xxx.xxx 未訂閱
您好 (1)請參考以下連結資料 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32427 (2)可使用TTADOTable元件試試看。 TADOTable->Insert(); TADOTable->Delete(); TADOTable->Edit(); TADOTable->Post(); ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之 發表人 - tech_state 於 2003/07/29 18:08:30
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-29 09:55:52 IP:211.21.xxx.xxx 未訂閱
引言: ..... 這個資料庫最主要的功能就是當我資料(Edit1->text)有變動時 我猜這部份可以寫在 Edit1Change 他會自動的將這筆資料存入資料庫內 .....
殺雞焉用牛刀... 如果只是工業上的數據監測 可將資料變化紀錄到一個 Log 檔中即可(若要彙整資料繪成圖表就不適用了) 1.本方法會在執行檔同目錄下建立一同檔名但副檔名為 .log 的 Log 文字檔 例如 Project1.log 2.有時間紀錄 void __fastcall TForm1::Edit1Change(TObject *Sender) { _WriteLogFile(Edit1->Text); } //--------------------------------------------------------------------------- int __fastcall TForm1::_WriteLogFile(String log) { FILE *log_file; String logfile=ChangeFileExt( Application->ExeName, ".log" ); String nowstr=FormatDateTime("yyyy-mm-dd hh:nn:ss",Now()); if ((log_file=fopen(logfile.c_str(), "a ")) == NULL) { fclose( log_file); return(0); } else { fprintf( log_file,"%s %s\n", nowstr.c_str(),log.c_str()); } fclose( log_file); return(0); } //---------------------------------------------------------------------------

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-29 17:58:41 IP:218.163.xxx.xxx 未訂閱
謝謝 tech_state 的指導 我會再多看相關書籍,熟悉您所講的方法 ^^ 原本想繼續發問的,不過可能會文不對題 也謝謝你提醒,我真的是一直都忽略了 ^^ bruce0211: 你的回答讓我又多了些想法 應該說是耳目一新的感覺 謝謝您 ^^
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-31 08:55:43 IP:211.21.xxx.xxx 未訂閱
Log 檔中資料為文字型態 可匯入Excel 做處理 無論是排序統計或繪圖表,都可方便應用

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-08 03:40:04 IP:218.163.xxx.xxx 未訂閱
不好意思,已經結案了還繼續發問,請見諒    bruce0211:    我用了您的 Source code 會出現下列問題 1 [C++ Error] Unit1.cpp(21): E2268 Call to undefined function '_WriteIniFile' 2 [C++ Error] Unit1.cpp(25): E2316 '_fastcall TForm1::_WriteLogFile(AnsiString)' is not a member of 'TForm1' 3 [C++ Error] Unit1.cpp(38): E2206 Illegal character '\' (0x5c)    我用 Button1Click 去代替 Edit1Change  可以指正哪兒出錯了嗎 我翻遍了 C++ 中的文章,最多提到 include 也可說找不到相似的用法 可以請你再指導嗎,謝謝 ^^

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-08-09 12:32:06 IP:218.163.xxx.xxx 未訂閱
經過這兩天的嘗試與修改後,已經可以了 不過現在想要開啟,以相對位置方式 而我已經另開了一個主題在 C 討論中 附上程式碼,當然得感謝bruce0211前輩 我寫在 OnButtonClick 上測試 FILE *fp; String fpfile=ChangeFileExt( Application->ExeName, ".txt" ); String nowstr=FormatDateTime("yyyy-mm-dd hh:nn:ss",Now()); if ((fp=fopen(fpfile.c_str(), "a ")) == NULL) { fclose( fp); } else { fprintf( fp,"%s %s\n", nowstr.c_str(),Edit1->Text); }
系統時間:2024-04-27 10:08:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!