![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как 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