Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.012 c
1-46750
AlexGof
2003-05-05 10:51
2003.05.15
Работа приложения с разным разрешением экрана


6-46873
Tolea
2003-03-19 11:21
2003.05.15
Доступ к расшареным ресурсам W2K


3-46668
dm37
2003-04-25 09:18
2003.05.15
Query


1-46700
race1
2003-04-26 12:37
2003.05.15
tvirtualstringtree


14-46976
Василий_
2003-04-24 19:30
2003.05.15
Систем 98Win





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский