Форум: "Базы";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];
Внизпытаюсь получить список таблиц *.mdb файла Найти похожие ветки
← →
inc-viz (2003-04-22 08:59) [0]Пытаюсь получить названия таблиц *.mdb файла через компонент
TSession. На форме компонент, 2 листвокса и кнопка:
procedure TForm1.Button1Click(Sender: TObject);
begin
MyStringList := TStringList.Create;
try
MySession2.GetDatabaseNames(MyStringList);
ListBox1.Items := MyStringList;
MySession2.GetTableNames("d:\Temp\acc\","",false,false,MyStringList);
ListBox2.Items := MyStringList;
finally
MyStringList.Free;
end;
end;
При запуске в listbox1 вместо названия баз пишутся названия алиасов,
а listbox2 вобще пустой.Короче говоря - в чем моя ошибка? :(
← →
stone (2003-04-22 09:14) [1]
> listbox1 вместо названия баз пишутся названия алиасов
Все правильно, алиас - это псевдоним БД
> а listbox2 вобще пустой
MySession2.GetTableNames(ListBox1.Items.Strings[ListBox1.ItemIndex],"",false,false,ListBox2.Items);
← →
inc-viz (2003-04-22 09:31) [2]Дык ведь..это..у меня mdb файл просто так валяется без алиаса...
Можно тогда, конечно, попробовать динамически для него создать, а потом удалить..
Так и попробую;)
← →
inc-viz (2003-04-22 09:42) [3]Попробовал так:
PrivateDir у Mysession: D:\TEMP\ACC\PDNEW.MDB
И в win 98 в listbox1 пишутся имена таблиц из файла PDNEW.mdb
Проблемы возникают, когда я пытаюсь проделать то же самое в XP
Причем попытался в win98 откомпилировать программу и на той же машине проверил файл - работает. А у меня в Xp тот самый откомпилированный фаил при запуске выдает список алиасов:(
← →
stone (2003-04-22 09:43) [4]
> Можно тогда, конечно, попробовать динамически для него создать,
> а потом удалить..
В этом нет нужды. Раз уж ты используешь БДЕ (я не ошибся?), используй TDatabase для подключения к твоей БД. Список таблиц в этом случае ты сможешь получить так:
Database1.GetTableNames(YourDatabaseName,"",false,false,ListBox2.Items);
← →
stone (2003-04-22 09:45) [5]Извиняюсь, для TDatabase немного по-другому
Database1.GetTableNames(ListBox2.Items; False);
← →
inc-viz (2003-04-22 10:10) [6]попробовал и меня обругали строкой: Undeclared identifier: "GetTableName".
← →
stone (2003-04-22 10:21) [7]GetTableName s
← →
viman (2003-04-22 10:28) [8]Сделай через ADO, у меня все работает
ListBox1.Items.Clear;
ADOConnection1.Connected:=false;
ADOConnection1.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+apl_path+filename+".mdb;Mode=Share Deny Read|Share Deny Write;Persist Security Info=False";
ADOConnection1.Connected:=true;
ADOConnection1.GetTableNames(ListBox1.items);
ConnectionString конечно можно один раз настроить у все, просто у меня случай такой, да и все необходимые параметры видно.
← →
inc-viz (2003-04-22 10:36) [9]Через ADO у меня проблем не возникает:) Но мне нужно чтобы мое приложение могло работать без вряких наворотов типа ADO...чтобы не ставить их потом вместе с программой как дополнение.
← →
KDS (2003-04-22 10:38) [10]Я через АДО сделал такс, причём работает безбалалаечно:
var tbList: TStringList;
try
tbList:=TStringList.Create;
ADOConnection1.GetTableNames(tbList);
cbxTables.Items.Assign(tbList);
finally
tbList.Free;
end;
cbxTables.ItemIndex:=0;
где cbxTables: TComboBox
ADOConnection1 надо настроить на свою МДБ
← →
inc-viz (2003-04-22 10:53) [11]Блин, через Адо любой дурак сможет..
А компанентами DataAccess слабо??
← →
inc-viz (2003-04-22 10:57) [12]To stone: Undeclared identifier: "GetTableNames". - я и так пробовал.
← →
stone (2003-04-22 11:03) [13]F1 тебе поможет.
Populates a string list with the names of tables in the database.
Delphi syntax:
procedure GetTableNames(List: TStrings; SystemTables: Boolean = False);
Description
Call GetTableNames to retrieve a list of tables in the associated database.
List is a TStrings descendant that receives the table names. Any existing strings are deleted from the list before GetTableNames adds the names of all tables in the database.
SystemTables specifies whether the list of table names should include only the database’s system tables. If SystemTables is true, only the system tables are added to List. If SystemTables is false, the list is filled with ordinary tables.
For example, the following line fills a list box with the names of all tables in the database:
Database1.GetTableNames(ListBox1.Items, False);
← →
inc-viz (2003-04-22 11:52) [14]Да, так и пишу Database1.GetTableNames(ListBox1.Items, False);
а мне вылезает Undeclared identifier: "GetTableNames"
Могу скриншот сделать, если есть необходимость, но сам факт - не работает.
У в help для Tdatabse : GetNamePath и GetParentComponent больше нету. Делфи 5 -ый.
← →
stone (2003-04-22 11:56) [15]uses
DBTables
← →
inc-viz (2003-04-22 22:26) [16]uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DBTables, Db;
Так все и было
← →
inc-viz (2003-04-23 01:39) [17]Понял в чем проблема.Попробовал в 6-м делфи и там действительно есть GetTableNames .Просто компонент database у D5 и D6 разных версий.
Придется ставить 6-ую делфю..
Но вот всетаки интересно, можно ли получить этот несчастный список таблиц в Д5, используя компоненты DataAccess?
← →
ЮЮ (2003-04-23 04:06) [18]в D6 в компонентах DataAccess остался только TDataSourse, так что нельзя :-)
>Но мне нужно чтобы мое приложение могло работать без вряких наворотов типа ADO...чтобы не ставить их потом вместе с программой как дополнение.
А БДЕ уже можно не ставить? :-) А остальные компоненты перекочевали на закладку BDE
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c