Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как ComboBox в своей программе сделать выборку алиасов,


Yura88 ©   (2003-03-20 15:53:00) 

зарегистрированных в системе? Например, мне нужен только один, и далее, например делаю, OnClick, во второе ComboBox загружается список доступных таблиц от этого алиаса?


Lord Warlock   (2003-03-21 09:22:00) [1]

Table1.TableName:=FileListBox1.FileName возвращает имя файла с путем. В случае таблиц их надо разносить, те само имя файла в TableName, а путь в DatabaseName


eugie   (2003-03-21 08:40:00) [2]

В случае, если работа с таблицами БД осуществляется через BDE вопрос только в удобстве интерфейса программной оболочки. Лично я тоже придерживаюсь того, чтобы поьзователь просто указал путь к файлам БД. А на счет списка алиасов в ComboBox - просто увидел вопрос, на который у меня есть ответ.


Yura88   (2003-03-21 08:17:00) [3]

Eugie ©, спасибо за код, я его сохранил, очень думаю пригодится, только вот вопрос, обязательно ли открывать БД через алиас, если можно открыть через путь на диске и всё. Через алиасы доступ, имеет ли какие преимущества? (Скорость...)


Eugie   (2003-03-21 07:15:00) [4]

К загрузке алиасов BDE в ComboBox (в примере CB_Alias) на локальной машине. В закомментированных строках-дополнительные свойства алиаса. Загузка в примере выполняется при создании формы.

procedure TF_Main.FormCreate(Sender: TObject);
var
TmpCursor: hDbiCur;
Database_: DBDesc;
rslt: DbiResult;
begin
CB_Alias.Items.Clear;
//Добавление в список имён алиасов
Check(dbiInit(nil));
Check(DbiOpenDatabaseList(TmpCursor));
Repeat
rslt:=DbiGetNextRecord(TmpCursor, dbiNOLOCK, @Database_, nil);
if (rslt <> DBIERR_EOF) then
begin
//DatabaseList.Add(StrPas(Database_.szName)
// + " - " + StrPas(Database_.szPhyName)
// + " - " + StrPas(Database_.szDbType))
CB_Alias.Items.Add(StrPas(Database_.szName));
end;
until (rslt <> DBIERR_NONE);
Check(DbiCloseCursor(TmpCursor));
//Добавили
CB_Alias.ItemIndex:=0;
end;


Yura88   (2003-03-20 16:55:00) [5]

Т.е. я алиасы не выбираю, отказался от них, а выбираю файлы из FileListBox1 при клике, считывается отмеченный файл,
записываю в table имя файла
Table1.TableName:=FileListBox1.FileName;
и далее активизирую:
Table1.Active:=true;
Но вот что то при раз так 50 щелканий, не стало памяти гдето хватать, что ещё нужно добавить, чтобы при переходе с одной на другую таблицу, предыдущая затиралась в памяти? Т.е. Table1.Active:=false;
мало.


Yura88   (2003-03-20 16:34:00) [6]

Это весь код и есть, щёлкаю на файл-лист-бох, где DBF лежат, и на DBGrid выскакивает новая таблица (по крайней мере когда то выскакивала..)
на форме только файл-лист и DBGrid.


ufff   (2003-03-20 16:19:00) [7]

ты лучше покажи что делаешь при выборе алиаса


stone   (2003-03-20 16:17:00) [8]

2 Yura88 (20.03.03 16:15)

Приведи весь код.

Не понятно зачем тут FileListBox1


Yura88   (2003-03-20 16:15:00) [9]

С этим заданием справился, а вот теперь "прыгая" с таблицы на таблицу, через 5 минут стала вылетать ошибка, что памяти в каком то месте мало,

procedure TForm1.FileListBox1Click(Sender: TObject);
begin
Table1.Active:=false;
Table1.TableName:=FileListBox1.FileName;
Table1.Active:=true;
end;

Процедура "перехода" выше, наверное надо как то выгружаться?


Clickmaker   (2003-03-20 15:55:00) [10]

Session.GetAliasNames


Наверх

Титульная страница Поиск, карта сайта Написать письмо