Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.25;
Скачать: CL | DM;

Вниз

Как узнать имена таблиц содержащихся в БД.   Найти похожие ветки 

 
Matvey   (2002-01-27 15:43) [0]

Есть база *.MDB, необходимо узнать имена таблиц содержащихся в этой базе, причем именно программно (run time), эдакая процедура
GetTablesName :), т.к. юзверю необходимо будет выбирать из таблиц, то с чем ему предстоит работать.
Очень надеюся на вашу помощь.
_______________________________
СПАСИБО.


 
wicked ©   (2002-01-27 15:50) [1]

в access"е есть такая вещь - системные таблицы... по умолчанию их не видно, но если в access поставить галку "системные объекты" в диалоге "Параметры", закладка "Вид" (меню Сервис/Параметры), то их можно просматривать... далее всё очевидно - смотрим что где лежит и пишем необходимый код в delphi...


 
Matvey   (2002-01-27 20:17) [2]

Да совет конечно дельный, но как в этой каше разобраться единственный объект в котором проскальзывают названия таблиц называется MSysObjects, положем я в состоянии написать SQL запрос на поиск там и выуживание TableName, но вот как это сделать в Delphi.
Разве что
Database1.Database := "XXX.mdb";
Table1.TableName:="MSysObjects";
Сомневаюсь что это будет работать может есть иной способ.
ПОДСКАЖИТЕ.
_______________________________________
Спасибо.


 
Matvey   (2002-01-27 20:21) [3]

Может компонентик специальный есть про кторорый я не знаю или кто-нибудь с этим сталкивался, потому как, как же работать с большой базой не зная списка таблиц!?


 
wicked ©   (2002-01-27 22:04) [4]

насчёт компонентика не знаю.... хотя.... посмотри в tsession... там, если порыться, чего-то такое есть...


 
Matvey   (2002-01-27 22:26) [5]

Что такое tressio понятия не имею, но вроде выход кроется в функции GetSourceTableName это функция из KADaoTable FreeWare компонентик, но хелп такой скудный что просто бесит
------------------------------------------------------------
Function GetSourceTableName(FieldName:String):String;
Returns the source name of the Table when field with name FieldName is a part of join between two or more tables.
-------------------------------------------------------------
Если кто знает как с этим орудовать обязательно напишите, очень прошу. Хотя млжет есть и другие варианты
______________________
С нетерпением жду :)


Если кому интересно, то я делал так:

_______________________________________________________________
var ttt:string;
begin
KADaoDatabase1.Database := "XXX.mdb";
KADaoDatabase1.UserName := "Admin";
KADaoDatabase1.Connected := True;
KADaoTable1.Database :=KADaoDatabase1;
KADaoTable1.TableName :="Table1" ; //Иначе ругается
KADaoTable1.Open;
//--------------------------->>
KADaoTable1.GetSourceTableName(ttt);
Edit1.Text:=ttt;
KADaoTable1.Close ;
KADaoDatabase1.Connected := False;
end;
И на все это НОЛЬ эмоций.! :(
Что в скобках указывать неизвестно, там толи то что функция возвращает, толи что-то еще. Ваши соображения (исходя из хелпа)...


 
wicked ©   (2002-01-27 22:37) [6]

там же ясно написано - возвращает имя исходной таблицы, когда поле <ИмяПоля> является продуктом join (не переводится :) двух и более таблиц... т. е., если у нас есть запрос вида:

select a.f1, a.f2, b.zz from a inner join b on a.f3 = b.f3

то ф-ция вернёт "а" для "f1" и "f2", "b" для "zz"....
имхо это не то что тебе надо....
но если ты используешь bde, то посмотри в help по TSession, процедура GetTableNames....


 
Станислав ©   (2002-01-28 10:48) [7]

Как создал так и читай. Ведь я так понял, что в процессе работы есть возможность создавать новые таблицы? Вот создаешь там например ОгурцыТаблица, то так же ее и читаешь. А если юзверю разбиратся с названиями таблиц, так он хотя бы 2-х месячные курсы по разработке баз данных долже пройти.


 
Matvey   (2002-01-29 00:17) [8]

Все нормальо, я как всегда все усложняю, я просто завел еще одну таблицу содержащую имена имеющихся. Бывает :).


 
RAVEN ©   (2002-01-29 09:01) [9]

Ещё один способ получить таблицы из *.mdb, но не показывает прилинкованные таблицы в D6 покрайней мере. ADOConnection.GetTableNames(ObjectList,flag);
ObjectList:TStrings;
flag:boolean - позволяет получать также системные таблицы.
Это лучше чем заводить таблицу вручную, т.к. нет привязки приложения к БД.


 
Upendra   (2002-01-29 10:47) [10]


MainDM: TMainDM;
TableLists: TStrings;

TableLists := TStringList.Create;
MainCon.GetTableNames(TableLists, False);


 
Matvey   (2002-01-30 00:53) [11]

Огромное спасибо попробуем.


 
Matvey   (2002-01-31 02:15) [12]

Lkz RAVEN © - пример работает на все 100, за небольшим исключением
ADOConnection1.GetTableNames(ObjectList,flag);
ObjectList:TStringsList

Относительно предложений Upendra
MainDM: TMainDM; //------>> что ето такое (компонент?)
TableLists: TStrings;

TableLists := TStringList.Create;
MainCon.GetTableNames(TableLists, False);
___________________________________________________
Не работает.

Но вопрос - то в другом, при использовании ADO, на машине клиента должен быть установлен ADO 2.1, а также Microsoft SQL Server, а в ODBE должен иметься драйвер OLE DB для Access (в моем случае),для BDE всякие Alias и тому подобное, т.к., не имею возможности проверить спрашиваю у всех, что можно использовать
(ADO, BDE ...), чтобы при переносе программы работающей с Access, на клиентскую машину, грубо говоря, кроме *.EXE, ни чего не надо было тащить (DLL, OCX и т.п.).?
________________________________________________________
Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2002.02.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
4-79496
Snake2000
2001-12-21 17:28
2002.02.25
Здадержка


3-79268
Matvey
2002-01-27 15:43
2002.02.25
Как узнать имена таблиц содержащихся в БД.


3-79251
AndrewK
2002-01-30 14:26
2002.02.25
Как заставить MS SQL Server 7.0 сообщать подсоединенным клиентам о необходимости обновить свои DataSet`ы


14-79463
Filat
2002-01-09 13:15
2002.02.25
Как при помощи NORTON GHOST сделать копию партишина в имидж вин2000 сервер, чтобы сохранился файл подкачи.


6-79408
dimonf
2001-12-06 18:10
2002.02.25
Построение отчетов с помощью HTML