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

利用opendialog 開啟資料庫的資料表

尚未結案
ann0509
一般會員


發表:19
回覆:42
積分:12
註冊:2010-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-08-23 10:51:34 IP:60.248.xxx.xxx 訂閱

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
AdoTable1.Active := false;
ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\qc01\桌面\Data\student.mdb';
ADOTable1.TableName:=edit1.text;
AdoTable1.Active := true;
end;
end;
end.

[/code]
我原本的程式 是可以選擇 資料庫
但是資料表的名稱 要利用edit1先輸入 才可以選擇資料庫

我想改成 當我利用opendialog 開啟資料庫時
可以出現我所選擇的資料庫 裡面所有的資料表
然後我可以選擇我要哪一個資料表 顯示在DBGrid1
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-08-23 11:19:47 IP:59.120.xxx.xxx 未訂閱
請先爬文~
關鍵字可以用"GetTableNames"或"取得資料表" 來找文

===================引 用 ann0509 文 章===================

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
AdoTable1.Active := false;
ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\qc01\桌面\Data\student.mdb';
ADOTable1.TableName:=edit1.text;
AdoTable1.Active := true;
end;
end;
end.

[/code]
我原本的程式 是可以選擇 資料庫
但是資料表的名稱 要利用edit1先輸入 才可以選擇資料庫

我想改成 當我利用opendialog 開啟資料庫時
可以出現我所選擇的資料庫 裡面所有的資料表
然後我可以選擇我要哪一個資料表 顯示在DBGrid1
ann0509
一般會員


發表:19
回覆:42
積分:12
註冊:2010-08-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-08-23 11:38:22 IP:60.248.xxx.xxx 訂閱
https://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=75063
我利用這個方法

procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
AdoTable1.Active := false;
ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\qc01\桌面\Data\student.mdb';
ADOConnection1.GetTableNames('TableName',DBListBox1);
AdoTable1.Active := true;
end;
end;
end.

可是卻出現 incompatible types:'Tstring' and 'String'
incompatible types:'Boolean' and 'TDBListBox'
的錯誤呢 請問我是哪裡弄錯了嗎?
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-08-23 11:57:07 IP:59.120.xxx.xxx 未訂閱
第一個要帶入的是TStrings
第二個要帶入的是:是否要SystemTables
你代入'TableName',DBListBox1 當然會錯
而且
該篇文章中
cashxin2002大大明明不是這樣寫的...
ADOConnection1.GetTableNames(ListBox1.Items, False);

===================引 用 ann0509 文 章===================
https://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=75063
我利用這個方法

procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
AdoTable1.Active := false;
ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\qc01\桌面\Data\student.mdb';
ADOConnection1.GetTableNames('TableName',DBListBox1);
AdoTable1.Active := true;
end;
end;
end.

可是卻出現 incompatible types:'Tstring' and 'String'
incompatible types:'Boolean' and 'TDBListBox'
的錯誤呢 請問我是哪裡弄錯了嗎?
ann0509
一般會員


發表:19
回覆:42
積分:12
註冊:2010-08-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-08-23 13:17:10 IP:60.248.xxx.xxx 訂閱
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
AdoTable1.Active := false;
ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\qc01\桌面\Data\student.mdb';
ADOConnection1.GetTableNames(ListBox1.Items, False);
ADOConnection1.GetTableNames('TableName',DBListBox1);
AdoTable1.Active := true;
end;
end;
end.

應該是要這樣嗎
請問怎麼轉成一樣型態?
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-08-23 13:32:46 IP:59.120.xxx.xxx 未訂閱
在該文章中
cashxin2002GetTableNames(ListBox1.Items, False);
//False參數為不讀取系統資料表名稱
ADOConnection1.GetFieldNames('TableName', ListBoxItems);
這兩個語法很明顯的不一樣
您怎麼把第二個語法中的內容套用在第一個語法中呢?
而且他的第二個語法也只是”提示怎麼用”
並不是您跟著照打就會對

GetTableNames所要帶入的第一個是可以放TStrings的元件
而第二個是要設定是否要有系統資料表 一般都不設
另外~
請在Delphi中在下語法時
Delphi都有提示要該參數是什麼東西(滑鼠移到GetTableNames上也會出現)
所以您應該先把這些都看過一次
才會知道要怎麼寫






===================引 用 ann0509 文 章===================
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
AdoTable1.Active := false;
ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\qc01\桌面\Data\student.mdb';
ADOConnection1.GetTableNames(ListBox1.Items, False);
ADOConnection1.GetTableNames('TableName',DBListBox1);
AdoTable1.Active := true;
end;
end;
end.

應該是要這樣嗎
請問怎麼轉成一樣型態?
ann0509
一般會員


發表:19
回覆:42
積分:12
註冊:2010-08-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-08-23 14:44:15 IP:60.248.xxx.xxx 訂閱

我選用這個方法
ADOConnection1. 大大是寫:
ADOConnection1.GetFieldNames('TableName', ListBoxItems);
這兩個語法很明顯的不一樣
您怎麼把第二個語法中的內容套用在第一個語法中呢?
而且他的第二個語法也只是”提示怎麼用”
並不是您跟著照打就會對

GetTableNames所要帶入的第一個是可以放TStrings的元件
而第二個是要設定是否要有系統資料表 一般都不設
另外~
請在Delphi中在下語法時
Delphi都有提示要該參數是什麼東西(滑鼠移到GetTableNames上也會出現)
所以您應該先把這些都看過一次
才會知道要怎麼寫






===================引 用 ann0509 文 章===================
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
AdoTable1.Active := false;
ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\qc01\桌面\Data\student.mdb';
ADOConnection1.GetTableNames(ListBox1.Items, False);
ADOConnection1.GetTableNames('TableName',DBListBox1);
AdoTable1.Active := true;
end;
end;
end.

應該是要這樣嗎
請問怎麼轉成一樣型態?
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-08-23 14:50:21 IP:59.120.xxx.xxx 未訂閱
LoginPrompt設False
===================引 用 ann0509 文 章===================

我選用這個方法
ADOConnection1. 大大是寫:
ADOConnection1.GetFieldNames('TableName', ListBoxItems);
這兩個語法很明顯的不一樣
您怎麼把第二個語法中的內容套用在第一個語法中呢?
而且他的第二個語法也只是”提示怎麼用”
並不是您跟著照打就會對

GetTableNames所要帶入的第一個是可以放TStrings的元件
而第二個是要設定是否要有系統資料表 一般都不設
另外~
請在Delphi中在下語法時
Delphi都有提示要該參數是什麼東西(滑鼠移到GetTableNames上也會出現)
所以您應該先把這些都看過一次
才會知道要怎麼寫
ann0509
一般會員


發表:19
回覆:42
積分:12
註冊:2010-08-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-08-23 15:09:31 IP:60.248.xxx.xxx 訂閱
程式沒有問題了
執行時又出現"驗證錯誤"????
系統時間:2024-11-23 7:33:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!