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

如何用BCB(by ADO)來設計MS Access

答題得分者是:azurecloud
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-04 17:19:03 IP:211.76.xxx.xxx 未訂閱
請問如何用BCB(by ADO)來設計MS Access,要能列出資料庫裡面的資料表,及各個欄位的資料型態,資料表的建立及刪除...等等功能,只要能支援開啟Access(.mdb)即可,不需支援其他的資料庫,目前我已經能列出資料表,但是在列出每個欄位的資料型態時無法像Access一樣可以有下拉式選單可以更,主要是因為我是用StringGride去顯示資料表每個欄位的類型,我不知道該怎麼讓StringGride的欄位可以有下拉式選單還是說有其他的元件可以替代的,請問誰有範例檔案,或是知道哪裡有文件的(我在微軟的MSDN找過了,但是我不知道該用什麼關鍵字去搜尋,所以找不到我要的)?謝謝了...
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-08 00:04:51 IP:163.13.xxx.xxx 未訂閱
Hi, GGL 您好:     看了您的問題好幾天尚無人回覆,我想提供您另一個想法,以下是以一個 Delphi 的 ADO 物件進 ACCESS Create 一個 table,是可以 work 的,我的重 點在於 sqlstr 這個字串的合成(以 BCB 的語法合成),然後再用類似 adoquery 物件將語法送出執行,就可以在 ACCESS 資料庫中建立資料表。 (抱歉加號顯示不出來,用十代替) procedure TForm1.Button1Click(Sender: TObject); var sqlstr : string; begin adoquery1.SQL.Clear; sqlstr := 'create table test ( '; sqlstr := sqlstr 十 ' num varchar(30) , '; sqlstr := sqlstr 十 ' date1 varchar(30) , '; sqlstr := sqlstr 十 ' item varchar(30) , '; sqlstr := sqlstr 十 ' amount numeric(9) ) '; adoquery1.sql.add(sqlstr); adoquery1.ExecSQL; end;    那麼下拉式表單您可以自己建立,視使用者的選擇替換相對應的型態字元 例: IF ComboBox.Text := '文字' then sqlstr :=  sqlstr 十 ' 欄位名稱 varchar(長度) , ';    讓 stringgrid 可以有下拉式選單的站上有 ADVStringgrid 可用,也有 BCB 版本,您可搜尋一下。上述解法還有一個問題是:ACCESS 中的型態是用中文 如 文字、數字等,我查不到相對應的英文(也就是 SQL 語法中真正要用的型態) 您可能要再查一下。希望對您有幫助。    ========================
我要努力向上~~[/h5] ========================
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-08 00:21:52 IP:211.76.xxx.xxx 未訂閱
謝謝azurecloud...我再試試看 我已經找出型態所對應的代碼了...只是有些型態的代碼竟然一樣,不知道是怎麼一回事
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-09 01:26:14 IP:211.76.xxx.xxx 未訂閱
原來ValueListEditor可以做出下拉式選單的功能.... ValueListEditor1->InsertRow("test","10",true); ValueListEditor1->ItemProps[0]->PickList->Add("1"); ValueListEditor1->ItemProps[0]->PickList->Add("2"); ValueListEditor1->ItemProps[0]->PickList->Add("3"); ValueListEditor1->ItemProps[0]->PickList->Add("4");
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-09 18:46:25 IP:211.76.xxx.xxx 未訂閱
請問一下,在連結Access資料庫時,SQL語法是不是有點不同呢? 我看了一些指令但是我在對我的資料庫下指令時都沒有用... 像是修改Table的名稱,以及欄位的名稱(我只會修改欄位的屬性).. 請問一下在Access下,SQL是什麼呢?謝謝
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-10 10:35:35 IP:211.20.xxx.xxx 未訂閱
不同的資料庫的SQL 多多少少都有差異 就算同樣是 M$ 出的 SQL Server 和 Access 的SQL都不完全一樣 不可能在這裡說的清楚 你去買書來看吧 有一本SQL的書 同一個範例同時有 Oracle、SQL Server、Access、Ansi SQL的寫法 就可以比較出差異了 內容很容易懂,是一本入門書 書名: 入門SQL 出版社: 博碩文化 DB20039
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-11 13:22:47 IP:211.76.xxx.xxx 未訂閱
引言: 不同的資料庫的SQL 多多少少都有差異 就算同樣是 M$ 出的 SQL Server 和 Access 的SQL都不完全一樣 不可能在這裡說的清楚 你去買書來看吧 有一本SQL的書 同一個範例同時有 Oracle、SQL Server、Access、Ansi SQL的寫法 就可以比較出差異了 內容很容易懂,是一本入門書 書名: 入門SQL 出版社: 博碩文化 DB20039
謝謝folkchen推薦我這本書,我去書局找過了,沒看到這一本,只有找到"實踐SQL"這本書,我稍微翻了一下雖然有介紹Oracle、SQL Server、Access的語法,但是基本上大多是Oracle跟SQL Server,很少有Access的,可能Access與MS SQL語法相同吧,我又翻了另外一本旗標的SQL Server 2000設計實務,裡面有談到如何修改欄位及資料表名稱的用法sp_rename,但是我試了一下還是無法成功... 我的語法是這樣:EXEC sp_rename Test_Table.[tese], title, COLUMN 請問一下,我有寫錯嗎? (ps.MSDN sp_rename:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sp_ra-rz_3ns5.asp)
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-11 16:36:18 IP:163.13.xxx.xxx 未訂閱
嗯,這也是我查了很久沒有回應你的問題的原因,MS 討厭的地方在於它的產品 常常互不相容,例如舊版的 Office 無法讀 新版的文件也是一樣。 ACCESS 和 MS SQL Server 很像,但其實並不一樣,例如 MS SQL 的萬用字元 是 % 和 _ 而 ACCESS 則是 * 和 ?;而且… ACCESS 的說明文件是中文的,常 找不到相對應的 SQL 語法的說明… 你所說的語法是 MS SQL 獨特的產物,那個 sp_rename 應該是它自己定義的, 而非 ANSI SQL 相容,ACCESS 也沒有。 言歸正傳,我查了許久,還真得查不到 SQL 語法中有改變 Table Name 的語法 ,Alter 指令只能改欄位名稱,我和我同學討論的結果,結論是 ---  Select into 指令!缺點是資料量大時就有得等了 另一個結論:到底是誰有需要隨時修改資料表名稱?一個規劃完整的資料庫, 而且其中已輸入大量資料的話,資料關聯圖應該都已建好了,這時改其中一資 料表的名稱會造成混亂的狀況,或許是這樣,所以沒有改資料表名字的 SQL 語 法吧… 在 ACCESS 中,用 查詢 --> 使用設計檢視建立新查詢 --> 按滑鼠右鍵 --> 選 SQL 檢視,可看到 新增(Select)、修改(Update)、刪除(Delete)、插入(Insert) 的 SQL 碼,但看不見如 Create Table、Drop Table、Alter Table 等等的指 令,我現在的做法是先用 MS SQL Analyzer 先測過 SQL 語法可執行後,再貼 回 ACCESS 中測試,祝好運,如果您整理出或找出 ACCESS 的 SQL 語法 請貼 回站上和大家分享哦! ========================
我要努力向上
========================
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-11 18:15:32 IP:211.76.xxx.xxx 未訂閱
謝謝azurecloud詳盡的回答... 因為我要寫的程式是模仿Access的功能,因此會用到一般人不會用到的修改資料表名稱,主要是因為希望能讓我的程式盡量支援更多Access支援的功能。 我在嘗試看看,看來用Access來寫資料庫軟體是一件蠻麻煩的事情
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-12-11 18:42:39 IP:211.76.xxx.xxx 未訂閱
引言: .............................. 我現在的做法是先用 MS SQL Analyzer 先測過 SQL 語法可執行後,再貼 回 ACCESS 中測試,祝好運,如果您整理出或找出 ACCESS 的 SQL 語法 請貼 回站上和大家分享哦! ========================
我要努力向上 [/h5] ========================
請問一下,你說先用 MS SQL Analyzer 先測過再貼到Access中測試...問一個很蠢的問題,我要貼到Access的哪裡測試呢?我找了很久還是沒看到Access可以測試SQL語法的地方...
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-12-11 19:56:06 IP:163.13.xxx.xxx 未訂閱
請見下圖,圖二[5]這個地方可以自行輸入 SQL 語法,按執行鈕來執行,也可以先用 ACCESS 的視覺化查詢建立好之後,切換至此觀察它真正的 SQL 是怎麼下的 圖二 ========================
我要努力向上
========================
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-12-11 21:41:16 IP:211.76.xxx.xxx 未訂閱
謝謝azurecloud...原來是在那裡,一直都找不到
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-12-12 23:18:50 IP:211.76.xxx.xxx 未訂閱
我在大陸的網站有找到Access變更欄位名稱的方法,但是她說要先把整個欄位刪除,改變欄位名稱後再產生一個新的欄位,但是這樣原本這個欄位裡面的資料就會不見了,除非先做資料備份的動作....好像有點麻煩
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-12-16 01:23:31 IP:211.76.xxx.xxx 未訂閱
問題又來囉~~~~ 如果在我的資料庫檔案(.MDB)裡面,某一個欄位已經有資料了,假設原本的欄位資料型態是CHAR,資料也都是文字,但是當我把欄位的資料型態轉換成int時,會造成轉換的錯誤,請問要怎麼偵測這個錯誤的發生? 在ACCESS裡面如果發生此錯誤會產生當超過超過表格允許的欄數或單一檔案的鎖定數時, 就會發生此錯誤。 我想讓我的程式可以偵測到這個錯誤的發生...應該如何做?謝謝
系統時間:2024-05-02 18:47:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!