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

如何取得database alias用寫程式的方式?

答題得分者是:channel
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-19 08:58:20 IP:203.69.xxx.xxx 未訂閱
如何取得database alias用寫程式的方式? databasename及 databasealias有什麼差別及關系?
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-19 09:13:44 IP:218.16.xxx.xxx 未訂閱
Session.GetAliasNames(TString) 例 : 1. uses dbtables 2. put a memo and a button in your form 3. procedure TForm1.Button1Click(Sender: TObject); begin Session.GetAliasNames(Memo1.Lines); end; 這樣就可以了 Alias 是指在 BDE Admin 設定好了的數據庫 DatabaseName 是 Alias 你程式設定的 Database 元件
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-19 09:34:13 IP:203.69.xxx.xxx 未訂閱
引言: Session.GetAliasNames(TString) 例 : 1. uses dbtables 2. put a memo and a button in your form 3. procedure TForm1.Button1Click(Sender: TObject); begin Session.GetAliasNames(Memo1.Lines); end; 這樣就可以了 Alias 是指在 BDE Admin 設定好了的數據庫 DatabaseName 是 Alias 你程式設定的 Database 元件
我抓到的是database name,不是Alias
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-19 09:47:03 IP:218.16.xxx.xxx 未訂閱
引言: 我抓到的是database name,不是Alias
???????????? 你試試 : 1. 加入一個 Database 元件 任意選一個 alias name Database name 填 aaa 2. 加入另一個 Database 元件 看 alias name, 是沒有 aaa 的 3. 加入一個 Table 元件 看 database name, 是有 aaa 的 4.執行剛才說的 Session.GetAliasNames(Memo1.Lines); 是沒有 aaa 的 換成 Session.GetDatabaseName(Memo1.Lines); 是有 aaa 的 看到 AliasName 和 databasename 的異同了嗎??
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-19 10:23:10 IP:203.69.xxx.xxx 未訂閱
引言:
引言: 我抓到的是database name,不是Alias
???????????? 你試試 : 1. 加入一個 Database 元件 任意選一個 alias name Database name 填 aaa 2. 加入另一個 Database 元件 看 alias name, 是沒有 aaa 的 3. 加入一個 Table 元件 看 database name, 是有 aaa 的 4.執行剛才說的 Session.GetAliasNames(Memo1.Lines); 是沒有 aaa 的 換成 Session.GetDatabaseName(Memo1.Lines); 是有 aaa 的 看到 AliasName 和 databasename 的異同了嗎??
可是shown databasename及databsealias有好幾個,若只show此程式用 的databse name與 database aliasname如何用呢
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-19 10:36:43 IP:218.16.xxx.xxx 未訂閱
引言: 可是shown databasename及databsealias有好幾個,若只show此程式用 的databse name與 database aliasname如何用呢
若你知道你會用那幾個 databasebname / alias 你自已做個 TStringList 裝起它不就好了 ? 若你不懂用 TStringList, 也可放個 Memo 設定 visible = false 然後在 memo.lines 打入你在該程式會用的 aliasname 就好。 若你也不知道會用那幾個 databasename / alias 電腦又甚會知道呢? ShowAliasName / ShowDatabaseName 所列出的,就是你在你的程式可用的 Alias / database,若你要一個你在你的程式用的 list 就要你自己來做了。
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-19 11:42:55 IP:211.21.xxx.xxx 未訂閱
引言: 可是shown databasename及databsealias有好幾個,若只show此程式用 的databse name與 database aliasname如何用呢
您只要看此程式的AliasName就要看您有沒有用TDatabase元件 若有則AliasName就是您的TDatabasse.AliasName 若無則AliasName就是您的TDataSet(TQuery及TTable).DatabaseName 但要找databse name就有點因難,怎麼說:(就我所知) Oracel:是用Service與BDE作溝通,無法取得databse name Paradox(及local資料庫):沒有databse name,故無法取得databse name MS SQL,Access(....):才有辦法取得databse name,方法如下:
有TDatabase元件:(以MS SQL為例)
var
  aSL: TStringList;
begin
  aSL := TStringList.Create;
  try
    Session.GetAliasParams(Database1.AliasName, aSL);
    ShowMessage(aSL.Strings[0]);
  finally
    aSL.Free;
  end;
end;    無TDatabase元件:
var
  aSL: TStringList;
begin
  aSL := TStringList.Create;
  try
    Session.GetAliasParams(Query1.DatabaseName, aSL);
    ShowMessage(aSL.Strings[0]);
  finally
    aSL.Free;
  end;
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-19 12:05:24 IP:203.69.xxx.xxx 未訂閱
引言:
引言: 可是shown databasename及databsealias有好幾個,若只show此程式用 的databse name與 database aliasname如何用呢
您只要看此程式的AliasName就要看您有沒有用TDatabase元件 若有則AliasName就是您的TDatabasse.AliasName 若無則AliasName就是您的TDataSet(TQuery及TTable).DatabaseName 但要找databse name就有點因難,怎麼說:(就我所知) Oracel:是用Service與BDE作溝通,無法取得databse name Paradox(及local資料庫):沒有databse name,故無法取得databse name MS SQL,Access(....):才有辦法取得databse name,方法如下:
有TDatabase元件:(以MS SQL為例)
var
  aSL: TStringList;
begin
  aSL := TStringList.Create;
  try
    Session.GetAliasParams(Database1.AliasName, aSL);
    ShowMessage(aSL.Strings[0]);
  finally
    aSL.Free;
  end;
end;    無TDatabase元件:
var
  aSL: TStringList;
begin
  aSL := TStringList.Create;
  try
    Session.GetAliasParams(Query1.DatabaseName, aSL);
    ShowMessage(aSL.Strings[0]);
  finally
    aSL.Free;
  end;
end;
~小弟淺見,參考看看~
因alias有兩個(一個正式區,一個test區)如果要抓BDE administrator database alias所定義(definition)的 databasename如何用程式抓到 ?
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-19 12:21:30 IP:211.21.xxx.xxx 未訂閱
引言: 因alias有兩個(一個正式區,一個test區)如果要抓BDE administrator database alias所定義(definition)的 databasename如何用程式抓到 ?
我們好像對alias的定義有點不同 我指的alias就是BDE的alias name 您要取得BDE administrator database alias所定義(definition)的 databasename除了用,下列方法,其他的方法我就不知了
有TDatabase元件:(以MS SQL為例)
var
  aSL: TStringList;
begin
  aSL := TStringList.Create;
  try    
    Session.GetAliasParams(Database1.AliasName, aSL);
    ShowMessage(aSL.Strings[0]);
  finally
    aSL.Free;
  end;
end;    無TDatabase元件:
var
  aSL: TStringList;
begin
  aSL := TStringList.Create;
  try
    Session.GetAliasParams(Query1.DatabaseName, aSL);
    ShowMessage(aSL.Strings[0]);
  finally
    aSL.Free;
  end;
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-19 12:39:58 IP:218.16.xxx.xxx 未訂閱
就如channel兄所提的稍作更改 1.用 Session.GetAliasParams(YourAliasName, StringList); 去取得在 BDE Admin Defination 頁所列的 Params 2.用 StringList.Value['DATABASE NAME'] 去直接取得列在 BDE Admin 右邊Defination, DATABASE NAME 欄的資料。 如 channel 君所言,大部份的 alias 都不一定有 DATABASE NAME 的,不過你知道你用的有就行了。
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-19 13:11:07 IP:211.21.xxx.xxx 未訂閱
引言: 就如channel兄所提的稍作更改 1.用 Session.GetAliasParams(YourAliasName, StringList); 去取得在 BDE Admin Defination 頁所列的 Params 2.用 StringList.Value['DATABASE NAME'] 去直接取得列在 BDE Admin 右邊Defination, DATABASE NAME 欄的資料。 如 channel 君所言,大部份的 alias 都不一定有 DATABASE NAME 的,不過你知道你用的有就行了。
修正一下Justmade兄的筆誤: StringList.Values['DATABASE NAME']
------
~小弟淺見,參考看看~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-03-19 14:21:57 IP:203.69.xxx.xxx 未訂閱
引言:
引言: 就如channel兄所提的稍作更改 1.用 Session.GetAliasParams(YourAliasName, StringList); 去取得在 BDE Admin Defination 頁所列的 Params 2.用 StringList.Value['DATABASE NAME'] 去直接取得列在 BDE Admin 右邊Defination, DATABASE NAME 欄的資料。 如 channel 君所言,大部份的 alias 都不一定有 DATABASE NAME 的,不過你知道你用的有就行了。
修正一下Justmade兄的筆誤: StringList.Values['DATABASE NAME']
請問這一段要放在那procedure? var aSL: TStringList; begin aSL := TStringList.Create; try Session.GetAliasParams(Database1.AliasName, aSL); ShowMessage(aSL.Strings[0]); finally aSL.Free; end; end; 用 StringList.Value['DATABASE NAME'] 去直接取得,放在那..
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-03-19 14:34:14 IP:211.21.xxx.xxx 未訂閱
引言: 請問這一段要放在那procedure? var aSL: TStringList; begin aSL := TStringList.Create; try Session.GetAliasParams(Database1.AliasName, aSL); ShowMessage(aSL.Strings[0]); finally aSL.Free; end; end; 用 StringList.Value['DATABASE NAME'] 去直接取得,放在那..
procedure TForm1.FormCreate(Sender: TObject);
var
  aSL: TStringList;
  aDataBaseName, aAliasName: String;//也可宣告在private區...等 
begin
  aAliasName := Database1.AliasName;
  aSL := TStringList.Create; 
  try 
    Session.GetAliasParams(Database1.AliasName, aSL); 
    aDataBaseName := aSL.Values['DATABASE NAME'];
  finally 
    aSL.Free;
  end;
end;
這樣做您就取得此程式用的databse name與 database aliasname 您要將這段寫在那都無所謂,看您的程式要在什麼時機取得 寫在Form Create也可以,如上例 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/19 14:39:10
------
~小弟淺見,參考看看~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-03-19 15:15:11 IP:203.69.xxx.xxx 未訂閱
引言:
引言: 請問這一段要放在那procedure? var aSL: TStringList; begin aSL := TStringList.Create; try Session.GetAliasParams(Database1.AliasName, aSL); ShowMessage(aSL.Strings[0]); finally aSL.Free; end; end; 用 StringList.Value['DATABASE NAME'] 去直接取得,放在那..
procedure TForm1.FormCreate(Sender: TObject);
var
  aSL: TStringList;
  aDataBaseName, aAliasName: String;//也可宣告在private區...等 
begin
  aAliasName := Database1.AliasName;
  aSL := TStringList.Create; 
  try 
    Session.GetAliasParams(Database1.AliasName, aSL); 
    aDataBaseName := aSL.Values['DATABASE NAME'];
  finally 
    aSL.Free;
  end;
end;
這樣做您就取得此程式用的databse name與 database aliasname 您要將這段寫在那都無所謂,看您的程式要在什麼時機取得 寫在Form Create也可以,如上例 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/19 14:39:10
出現 expected but identifier 'DATABASE' found 是什麼原因
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-03-19 15:49:01 IP:203.69.xxx.xxx 未訂閱
引言:
引言: 請問這一段要放在那procedure? var aSL: TStringList; begin aSL := TStringList.Create; try Session.GetAliasParams(Database1.AliasName, aSL); ShowMessage(aSL.Strings[0]); finally aSL.Free; end; end; 用 StringList.Value['DATABASE NAME'] 去直接取得,放在那..
procedure TForm1.FormCreate(Sender: TObject);
var
  aSL: TStringList;
  aDataBaseName, aAliasName: String;//也可宣告在private區...等 
begin
  aAliasName := Database1.AliasName;
  aSL := TStringList.Create; 
  try 
    Session.GetAliasParams(Database1.AliasName, aSL); 
    aDataBaseName := aSL.Values['DATABASE NAME'];
  finally 
    aSL.Free;
  end;
end;
這樣做您就取得此程式用的databse name與 database aliasname 您要將這段寫在那都無所謂,看您的程式要在什麼時機取得 寫在Form Create也可以,如上例 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/19 14:39:10
把aDataBaseName := aSL.Values["DATABASE NAME"]; 改成 aDataBaseName := aSL.Values['DATABASE NAME']; 就ok. 謝謝你們回答我那麼多問題.
系統時間:2024-06-28 17:38:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!