有關如何取得BDE的DataBase的Definition的問題 |
尚未結案
|
nullx
一般會員 發表:3 回覆:8 積分:2 註冊:2002-07-22 發送簡訊給我 |
各位先進:
對小弟而言Delphi本人是新手,本公司開發的應用軟體有用Delphi 5,VB,
PowerBuilder 5等開發工具,資料庫有 SQL Server 2000,Sybase 等等 ...
最近有個需求是Delphi程式去執行PowerBuilder程式,因此產生了許多問題. 本公司MIS系統是Delphi開發的,可連接不同的分公司,不同的分公司使用不同
的資料庫,所以在BDE建立不同的DataBase Aliases,問題來了當Delphi程式去
Call PowerBuilder程式時,PowerBuilder程式如何知道去連接那個資料庫,
因此本人希望各位先進能幫忙解決小弟的問題如下: 1) 從Delphi程式中取得目前正在執行的資料庫資訊,如何由BDE取得實際的
Server Name,DataBase Name,User Name, PassWord 等.... 2) 將由前項取得的資料寫入一個檔案(某某.INI) 如此PowerBuilder程式就可以透過(某某.INI)檔案連接資料庫了 小弟敬請各位先進不吝指教,在此謝過 發表人 - nullx 於 2004/03/04 13:15:00
------
蔡俊德 |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi nullx, 歡迎加入 Delphi K.Top 1.
procedure TMainForm.Button2Click(Sender: TObject); begin Edit_Server_Name.Text := DBTAS.Params.Values['SERVER NAME']; Edit_DataBase_Name.Text := DBTAS.Params.Values['DATABASE NAME']; Edit_User_ID.Text := DBTAS.Params.Values['USER NAME']; Edit_Password.Text := DBTAS.Params.Values['PASSWORD']; end;其中 DBTAS 為 TDataBase 2. procedure TMainForm.ButtonSaveClick(Sender: TObject); var MyIniFile: TIniFile; begin IF FileExists(IniFile) THEN BEGIN MyIniFile := TIniFile.Create(IniFile); WITH MyIniFile DO BEGIN WriteString('DATABASE','SERVER NAME',Edit_Server_Name.Text); WriteString('DATABASE','DATABASE NAME',Edit_DataBase_Name.Text); WriteString('DATABASE','USER NAME',Edit_User_ID.Text); WriteString('DATABASE','PASSWORD',Edit_Password.Text); END; MyIniFile.Free; END; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
nullx
一般會員 發表:3 回覆:8 積分:2 註冊:2002-07-22 發送簡訊給我 |
感謝Fishman先進的回應 本公司使用SQL Server 2000的資料庫NT Server平台,所以Delphi程式用SafeVcl
的Packages中的TMsSQLSafe元件來連接資料庫,不是Data Access的Packages中的
DataBase元件來連接資料庫,兩者很相似,針對第一個問題若用類似的方式如: 其中 DBTAS 為 TMsSQLSafe 以下二者的值皆為empty DBTAS.Params.Values['SERVER NAME'];
DBTAS.Params.Values['DATABASE NAME']; 但是UserName,PassWord,AliasName是知道的,所以小弟才想透過BDE取得實際的Server Name,DataBase Name. 不知Fishman先進是否有其他方法或由Session方面取得Server Name,DataBase Name 在此感謝Fishman先進的指教 蔡俊德
------
蔡俊德 |
nullx
一般會員 發表:3 回覆:8 積分:2 註冊:2002-07-22 發送簡訊給我 |
感謝Fishman先進的回應 本公司使用SQL Server 2000的資料庫NT Server平台,所以Delphi程式用SafeVcl
的Packages中的TMsSQLSafe元件來連接資料庫,不是Data Access的Packages中的
DataBase元件來連接資料庫,兩者很相似,針對第一個問題若用類似的方式如: 其中 DBTAS 為 TMsSQLSafe 以下二者的值皆為empty DBTAS.Params.Values['SERVER NAME'];
DBTAS.Params.Values['DATABASE NAME']; 但是UserName,PassWord,AliasName是知道的,所以小弟才想透過BDE取得實際的Server Name,DataBase Name. 不知Fishman先進是否有其他方法或由Session方面取得Server Name,DataBase Name 在此感謝Fishman先進的指教 蔡俊德
------
蔡俊德 |
nullx
一般會員 發表:3 回覆:8 積分:2 註冊:2002-07-22 發送簡訊給我 |
感謝Fishman先進的回應 本公司使用SQL Server 2000的資料庫NT Server平台,所以Delphi程式用SafeVcl
的Packages中的TMsSQLSafe元件來連接資料庫,不是Data Access的Packages中的
DataBase元件來連接資料庫,兩者很相似,針對第一個問題若用類似的方式如: 其中 DBTAS 為 TMsSQLSafe 以下二者的值皆為empty DBTAS.Params.Values['SERVER NAME'];
DBTAS.Params.Values['DATABASE NAME']; 但是UserName,PassWord,AliasName是知道的,所以小弟才想透過BDE取得實際的Server Name,DataBase Name. 不知Fishman先進是否有其他方法或由Session方面取得Server Name,DataBase Name 在此感謝Fishman先進的指教
------
蔡俊德 |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
nullx
一般會員 發表:3 回覆:8 積分:2 註冊:2002-07-22 發送簡訊給我 |
感謝Fishman先進的回應 本公司使用SQL Server 2000的資料庫NT Server平台,所以Delphi程式用SafeVcl
的Packages中的TMsSQLSafe元件來連接資料庫,不是Data Access的Packages中的
DataBase元件來連接資料庫,兩者很相似,針對第一個問題若用類似的方式如: 其中 DBTAS 為 TMsSQLSafe 以下二者的值皆為empty DBTAS.Params.Values['SERVER NAME'];
DBTAS.Params.Values['DATABASE NAME']; 但是UserName,PassWord,AliasName是知道的,所以小弟才想透過BDE取得實際的Server Name,DataBase Name. 不知Fishman先進是否有其他方法或由Session方面取得Server Name,DataBase Name 在此感謝Fishman先進的指教
------
蔡俊德 |
nullx
一般會員 發表:3 回覆:8 積分:2 註冊:2002-07-22 發送簡訊給我 |
1.
procedure TMainForm.Button2Click(Sender: TObject); begin Edit_Server_Name.Text := DBTAS.Params.Values['SERVER NAME']; Edit_DataBase_Name.Text := DBTAS.Params.Values['DATABASE NAME']; Edit_User_ID.Text := DBTAS.Params.Values['USER NAME']; Edit_Password.Text := DBTAS.Params.Values['PASSWORD']; end;其中 DBTAS 為 TDataBase 這是本人針對上面問題所找到的答案 : var server_name,database_name : string; MyStringList : Tstrings; //Get BDE env From Aliasname Into ListBox1 MyStringList := TStringList.Create; try Session.GetAliasParams(DataBase.AliasName,MyStringList); //'hoyard is Alias name ListBox1.Items := MyStringList; server_name := MyStringList.Values['SERVER NAME']; //抓出Alias 對應的伺服器名稱 database_name := MyStringList.Values['DATABASE NAME']; //抓出Alias 對應的資料庫名稱 finally MyStringList.Free;
------
蔡俊德 |
nullx
一般會員 發表:3 回覆:8 積分:2 註冊:2002-07-22 發送簡訊給我 |
1.
procedure TMainForm.Button2Click(Sender: TObject); begin Edit_Server_Name.Text := DBTAS.Params.Values['SERVER NAME']; Edit_DataBase_Name.Text := DBTAS.Params.Values['DATABASE NAME']; Edit_User_ID.Text := DBTAS.Params.Values['USER NAME']; Edit_Password.Text := DBTAS.Params.Values['PASSWORD']; end;其中 DBTAS 為 TDataBase 這是本人針對上面問題所找到的答案 : var server_name,database_name : string; MyStringList : Tstrings; //Get BDE env From Aliasname Into ListBox1 MyStringList := TStringList.Create; try Session.GetAliasParams(DataBase.AliasName,MyStringList); //'hoyard is Alias name ListBox1.Items := MyStringList; server_name := MyStringList.Values['SERVER NAME']; //抓出Alias 對應的伺服器名稱 database_name := MyStringList.Values['DATABASE NAME']; //抓出Alias 對應的資料庫名稱 finally MyStringList.Free;
------
蔡俊德 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |