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

一個Query ,查2個不同的access資料庫的問題...

答題得分者是:syntax
firesu
中階會員


發表:26
回覆:28
積分:55
註冊:2004-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-02 15:57:57 IP:61.62.xxx.xxx 未訂閱
http://www.9freebsd.com/server/p199/J19924517.shtml

照這的例子做..要查詢2個access,Query的DataBaseName:='';.... .
當Query.open時會出現DataBase Login的視窗要你輸入user name 跟password 這個畫面
這個畫面有方法讓它不出現嗎...?
因為query要不出現這個畫面,Query必須連一個TDataBase , LoginPrompt屬性設false..
剛好又跟Query的DataBaseName:='' 有衝突...
編輯記錄
firesu 重新編輯於 2007-10-02 16:02:01, 註解 改標 題‧
ace33022
一般會員


發表:2
回覆:41
積分:23
註冊:2004-05-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-03 13:16:01 IP:59.125.xxx.xxx 訂閱
那能不能改變TDatabase連線的來源到不同的Access呢?不要直接異動TQuery的Database屬性。
firesu
中階會員


發表:26
回覆:28
積分:55
註冊:2004-12-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-04 12:05:32 IP:61.62.xxx.xxx 未訂閱
範例中用2個TDataBase分別連接2個不同的mdb

TDataBase1..AliasName=ODBC1, DataBaseName=DB1, LoginPrompt=False
TDataBase2..AliasName=ODBC2, DataBaseName=DB2, LoginPrompt=False

Query1的DataBaseName=''
Query1.SQL.Clear
Query1.SQL.ADD('select a.cusno,b.saleno from ":DB1:cust" a,":DB2:sale" b where a.cusno=b.cusno');
Query1.Open;

因為Query1的DataBaseName是空白,所以才跑出輸入username password視窗
編輯記錄
firesu 重新編輯於 2007-10-04 12:06:24, 註解 無‧
ace33022
一般會員


發表:2
回覆:41
積分:23
註冊:2004-05-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-05 10:25:07 IP:59.125.xxx.xxx 訂閱

Sorry... 一開始沒看清楚你要的方式。
這種方法倒沒用過,找個時間試試.... 有解再上來回

===================引 用 firesu 文 章===================
範例中用2個TDataBase分別連接2個不同的mdb

TDataBase1..AliasName=ODBC1, DataBaseName=DB1, LoginPrompt=False
TDataBase2..AliasName=ODBC2, DataBaseName=DB2, LoginPrompt=False

Query1的DataBaseName=''
Query1.SQL.Clear
Query1.SQL.ADD('select a.cusno,b.saleno from ":DB1:cust" a,":DB2:sale" b where a.cusno=b.cusno');
Query1.Open;

因為Query1的DataBaseName是空白,所以才跑出輸入username password視窗
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-24 09:41:56 IP:218.163.xxx.xxx 訂閱
你好:

試試看...將 Query1.DatabaseName 指向一個 "Local" 的 Alias, 如 DBDemos.
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-10-27 23:44:00 IP:61.64.xxx.xxx 訂閱
應該是沒有所謂「衝突」,這件事

設計本來就是這樣,所以你不是很清楚每項元件的角色喔!(HELP 說的滿清楚的,建議多加利用)

原來是:DB 實際路徑 --> Alias --> TQuery (assinged as DatabaseName) --> TDataSource (assigned as DataSet) --> T資料感知元件 (assigned as DataSource)

變成是:DB 實際路徑 --> Alias --> TDatabase (assigned as AliasName) --> TQuery (assinged as DatabaseName, and choose the TDatavase.DatabaseName)
--> TDataSource (assigned as DataSet) --> T資料感知元件 (assigned as
DataSource)

TDataBase1.DatabaseName := 你要的名稱
TDataBase1.AliasName := 實際的資料庫別名
其他設定

不想程式內變動的話,請使用兩組 TDataBase1 & 2

然後

TQuery.DataBaseName --> 不要選「實際的資料庫別名」,改選自己設定的 TDataBase???.DatabaseName

這樣就會使用所選的 TDataBase,也不用寫在 Query1.SQL.ADD('select a.cusno,b.saleno from ":DB1:cust" a,":DB2:sale" b where a.cusno=b.cusno'); 內

「Query1的DataBaseName是空白,所以才跑出輸入username password視窗」,如果是空白,那請問,所查詢的資料庫是哪一個?應該是非空白,且該資料庫有支援控管,才會跳出來問吧!,所以使用 TDatabase ,並設定好帳號密碼等資訊,讓程式幫你回答,就不會再問了

如果不想在程式內指定 SQL,換來換去的話,也可以直接使用兩組 TQuery,不是嗎?

所以沒有衝突,沒有規定一個資料庫的別名,只能有一個,

反過來。如果別名一樣,那 AliasName 也就可省去不設囉

Delphi 說明: (多自己動手看)

Use DatabaseName to specify the name of the database to use with a database component. If DatabaseName is the same as an existing Borland Database Engine (BDE) alias, then the AliasName and DriverName properties need not be set. If DatabaseName does not match an existing BDE alias, then either the application must also supply a valid alias in the AliasName property in addition to the DatabaseName, or it must supply the DriverName and Params properties.

===================引 用 firesu 文 章===================
http://www.9freebsd.com/server/p199/J19924517.shtml

照這的例子做..要查詢2個access,Query的DataBaseName:='';.... .
當Query.open時會出現DataBase Login的視窗要你輸入user name 跟password 這個畫面
這個畫面有方法讓它不出現嗎...?
因為query要不出現這個畫面,Query必須連一個TDataBase , LoginPrompt屬性設false..
剛好又跟Query的DataBaseName:='' 有衝突...
系統時間:2024-05-17 12:51:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!