程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> DELPHI多層分布式開發(2)(8)

DELPHI多層分布式開發(2)(8)

編輯:Delphi

再看客戶端:

現在給它再加一個ComboBox,以顯示當前打開的數據庫的表名。

; 在.FormCreate事件過程中,再聲明一個變量:

DBTables: OleVariant;

在.FormCreate程序的最後加上:

//顯示表名
ComboBox2.Clear;
DBTables := DCOMConnection1.APPServer.GetTableNames;
if VarIsArray(DBTables) then
for I := 0 to VarArrayHighBound(DBTables, 1) do
ComboBox2.Items.Add(DBtables[I]);

為了在改變數據庫後也能正確顯示相應的表名,ComboBox1的雙擊事件也要加 上相應的一段。

procedure TForm1.ComboBox1DblClick(Sender: TObject);
var
UserName, PassWord: string;
//下面兩的變量聲明是新加的
DBTables: OleVariant;
i:integer;
begin
// 當您在ComboBox中選取的數據不是空字符串時
if ComboBox1.Text <> '' then
begin
ClIEntDataSet1.Close;
try
// 先給應用程序服務器傳一次空的UserName及PassWord
// 如果後台數據庫是Paradox或DBase可能就沒問題,
// 可是如果是SQL base的關系型數據庫則會收到exception。
//SetDatabaseNames是服務端的COM 方法

DCOMConnection1.APPServer.SetDatabaseName(ComboBox1.Text,'','');
except

// 由於後台數據庫是SQL base的關系型數據庫,所以您必須
// 通過Form2輸入UserName及PassWord,並且把這些數據
// 通過應用程序服務器提供的SetDatabaseName傳給後台數
// 據庫驗證。

on E: Exception do
if E.Message = 'PassWord Required' then
begin
if InputDialog(UserName, PassWord) then
DCOMConnection1.APPServer.SetDatabaseName(ComboBox1.Text,
UserName, PassWord);
end else raise;
end;

//顯示表名,這段程序是新加的
ComboBox2.Clear;
DBTables := DCOMConnection1.APPServer.GetTableNames;
if VarIsArray(DBTables) then
for I := 0 to VarArrayHighBound(DBTables, 1) do
ComboBox2.Items.Add(DBtables[I]);
ComboBox2.Text:=ComboBox2.items[0];
end;
end;

給ComboBpx2加一個雙擊事件,可以把表的名字加入SQL 語言:

procedure TForm1.ComboBox2DblClick(Sender: TObject);
begin
Memo1.text:=Memo1.text+combobox2.text;
end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved