Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
1-79388
Lamery
2002-02-08 14:46
2002.02.25
Паскаль


7-79494
neverbee
2001-11-20 11:07
2002.02.25
Вывод текста поверх других окон. Как?


4-79511
Alexprogrammer
2001-12-26 14:39
2002.02.25
Плавное открытие формы


14-79456
StelZ
2002-01-04 20:47
2002.02.25
Help ака справка


3-79303
kam_nal
2002-01-30 14:16
2002.02.25
трабл при добавлении записей в БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский