![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO и Access: GetTableNames
Павел Боровик © (2004-09-15 21:13:00)Использую связку ADOConnection + ADOTable для открытия mdb файлов.
Список таблиц получаю при помощи GetTableNames.
Как получить список запросов в mdb файле?
Павел Боровик (2004-09-16 23:01:00) [1]Спасибо.
Дело Мастера Delphi боится :)
sniknik (2004-09-16 22:07:00) [2]не знает CheckActive,
ну это можно выкинуть, чего не знаеш активен конект или нет?
но можно и так
тип
TMyADOConnection = class(TADOConnection);
и
TMyADOConnection(ADOConnection1).CheckActive
не знает OpenSchema...
uses ADODB; ?
но ты чего прям так вставляеш, а ADOConnection у тебя тоже есть? или всетаки ADOConnection1?
вот, этого должно хватить
procedure TForm1.GetTableNames(List: TStrings);
var TypeField, NameField: TField;
TableType: string;
begin
ADOConnection1.OpenSchema(siTables, EmptyParam, EmptyParam, FieldSchema);
TypeField:= FieldSchema.FieldByName('TABLE_TYPE');
NameField:= FieldSchema.FieldByName('TABLE_NAME');
List.BeginUpdate;
try
List.Clear;
while not FieldSchema.EOF do begin
TableType:= TypeField.AsString;
if (TableType = 'TABLE') or (TableType = 'VIEW') then List.Add(NameField.AsString;);
FieldSchema.Next;
end;
finally
List.EndUpdate;
end;
end;
FieldSchema это датасет (просто положи на форму не подключая к конекту, а вот грид к нему можно, просто посмотреть что в нем будет)
z12 (2004-09-16 21:07:00) [3]Удалено модератором
Павел Боровик (2004-09-16 20:13:00) [4]не знает CheckActive, не знает OpenSchema...
Павел Боровик (2004-09-16 20:12:00) [5]Спасибо за помощь.
Вставляю кусок в свою программу (из модуля ADODB):
procedure TMyForm.GetTableNames(List: TStrings;
SystemTables: Boolean);
var
TypeField,
NameField: TField;
DataSet: TADODataSet;
begin
ADOConnection.CheckActive;
DataSet := TADODataSet.Create(nil);
try
ADOConnection.OpenSchema(siTables, EmptyParam, EmptyParam, DataSet);
TypeField := DataSet.FieldByName('TABLE_TYPE'); { do not localize }
NameField := DataSet.FieldByName('TABLE_NAME'); { do not localize }
List.BeginUpdate;
try
List.Clear;
while not DataSet.EOF do
begin
if (TypeField.AsString = 'TABLE') or (SystemTables and { do not localize }
(TypeField.AsString = 'SYSTEM TABLE')) then { do not localize }
List.Add(NameField.AsString);
DataSet.Next;
end;
finally
List.EndUpdate;
end;
finally
DataSet.Free;
end;
end;
и начинается петрушка :(
Erik1 (2004-09-16 14:43:00) [6]To Rem
"Access не поддерживает хранимые процедуры" да не ужто?! Откуда такие сведенья? A, что TADOStordProc показывает? Конечно им далеко до настоящих процедур они больше на View похожи, но это не повод утверждать, что их нет.
Я и ответил на вопрос, надо было только брость на форму TADOStordProc и проверить.
Rem (2004-09-16 10:56:00) [7][2]
1. Access не поддерживает хранимые процедуры.
2. Вопрос был про запросы (представления, VIEWs), а не про хранимые процедуры.
Erik1 (2004-09-16 10:13:00) [8]А StoredProc непоможет отцу руской демократии?
sniknik (2004-09-15 23:21:00) [9]легко, на самом деле легко, зажми Ctrl и кликни по слову GetTableNames в редакторе дельфей, выйдеш на оригинальный код, скопируй его в себе программу (править в оригинале не рекомендуется).
в общем то и все что поправить (всего 1 условие расширить) видно практически сразу.