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

Вниз

ADO и Access: GetTableNames   Найти похожие ветки 

 
Павел Боровик   (2004-09-15 21:13) [0]

Использую связку ADOConnection + ADOTable для открытия mdb файлов.

Список таблиц получаю при помощи GetTableNames.

Как получить список запросов в mdb файле?


 
sniknik ©   (2004-09-15 23:21) [1]

легко, на самом деле легко, зажми Ctrl и кликни по слову GetTableNames в редакторе дельфей, выйдеш на оригинальный код, скопируй его в себе программу (править в оригинале не рекомендуется).
в общем то и все что поправить (всего 1 условие расширить) видно практически сразу.


 
Erik1 ©   (2004-09-16 10:13) [2]

А StoredProc непоможет отцу руской демократии?


 
Rem   (2004-09-16 10:56) [3]

[2]
1. Access не поддерживает хранимые процедуры.
2. Вопрос был про запросы (представления, VIEWs), а не про хранимые процедуры.


 
Erik1 ©   (2004-09-16 14:43) [4]

To Rem
"Access не поддерживает хранимые процедуры" да не ужто?! Откуда такие сведенья? A, что TADOStordProc показывает? Конечно им далеко до настоящих процедур они больше на View похожи, но это не повод утверждать, что их нет.
 Я и ответил на вопрос, надо было только брость на форму TADOStordProc и проверить.


 
Павел Боровик   (2004-09-16 20:12) [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;

и начинается петрушка :(


 
Павел Боровик   (2004-09-16 20:13) [6]

не знает CheckActive, не знает OpenSchema...


 
z12 ©   (2004-09-16 21:07) [7]

Удалено модератором


 
sniknik ©   (2004-09-16 22:07) [8]

не знает 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 это датасет (просто положи на форму не подключая к конекту, а вот грид к нему можно, просто посмотреть что в нем будет)


 
Павел Боровик   (2004-09-16 23:01) [9]

Спасибо.

Дело Мастера Delphi боится :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
6-1091819057
Nill
2004-08-06 23:04
2004.10.17
Шары


3-1095328509
Medik
2004-09-16 13:55
2004.10.17
Добавление и удаление в Paradox


1-1096383555
Ivolg
2004-09-28 18:59
2004.10.17
Как таскать Image


1-1096529257
Term
2004-09-30 11:27
2004.10.17
Простой вопрос, как сделать что бы в TPageControl сделать нужную


1-1096885823
Skywalker
2004-10-04 14:30
2004.10.17
Как обойти "Circular unit reference"?





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