请教一个TSESSION的问题(50分)

  • 主题发起人 主题发起人 菜鸟陈
  • 开始时间 开始时间

菜鸟陈

Unregistered / Unconfirmed
GUEST, unregistred user!
请教一个TSESSION的问题,书上的一个例子,三个LISTBOX,分别将当前程序可连接的数据库别名,LISTBOX2放置点取LISTBOX1中的数据库别名的名,LISTBOX3则放置字段名.用的是TSESSION的GetAliasNames获取数据名,GetTableNames获取表名.但不论我连接到哪个数据库别名,总显示是其中没有表,但实际应该是有的,通过数据集也可连接,不知是哪里的问题,
请各位大虾指点,谢啦.
 
在连接之前,有没将这条语句写在前面?
session.ConfigMode := cmAll;
 
你是怎么写的?
 
不好意思,第一次提问,没讲清楚,书上的一个例子,TSESSION的,用的是TSESSION的
GetAliasNames获得BDE别名,GetTableNames取得表名,代码如下.想请教关于BDE会话期的解释.

procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.cursor:=crHourglass;

with Listbox1 do
begin
Items.Clear;
Session.GetAliasNames(Items);
end;

Screen.Cursor := crDefault;

if ListBox1.Items.Count < 1 then

MessageDlg( 'There are no database aliases currently defined. You ' +

'need at least one alias to use this demonstration.',

mtError, [mbOK], 0 );
end;

procedure TForm1.ListBox1Click(Sender: TObject);

var

strValue: string;
bIsLocal: Boolean;
slParams: TStringList;
iCounter: Integer;

begin
with ListBox1 do
strValue := Items.Strings[ItemIndex];
ListBox2.Items.Clear;
Session.GetTableNames(strValue,
' ',
CheckBox1.Checked,
CheckBox2.Checked,
ListBox2.Items);


Screen.Cursor:=crDefault;
if LIstBox2.Items.Count < 1 then
MessageDlg('你选的数据库中没有表,请选择其他的数据库别名',mtError,[mbOK],0);
ListBox3.Items.Clear;
end;

procedure TForm1.ListBox2Click(Sender: TObject);
begin
Screen.Cursor:=crHourglass;
try
if Table1.Active then
Table1.Close;
with LIstBox1 do
Table1.DatabaseName:=Items.Strings[ItemIndex];
Table1.Open;
if Table1.Active then
Table1.GetFieldNames(ListBox3.Items);
finally
Screen.Cursor:=crDefault;
end;
end;

end.
 
Tsession.GetTableNames:
For searches on Paradox and dBASE,
set Extensions to True to include filename extensions as part of the table name.
For SQL-based databases, set Extension to False.
//
Set SystemTables to True for SQL-based databases to return both data tables
and the system tables that define the database structure.
Set SystemTables to False for Paradox and dBASE tables.
 
接受答案了.
 
后退
顶部