Показать сообщение отдельно
  #8  
Старый 05.12.2011, 18:38
vdstud vdstud вне форума
Прохожий
 
Регистрация: 17.01.2010
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Нет, ему не это нужно. В Акцесовской БД есть объекты: Таблицы, Запросы.
Да, Вы меня правильно поняли.
Цитата:
Сообщение от Страдалецъ
...и получить вы сможете только структуру этих объектов т.е. перечисление полей их составляющих.
А это неправда. Решение найдено, благодаря Вашей мысли:
Цитата:
Сообщение от Страдалецъ
Если я правильно понял, то вам нужен исходный текст запроса для вьюшки сохраненной в базе. Не делал такого, но предположу что надо читать Description из схемы базы данных для вашего запроса.
Спасибо!
Вот функция, может кому-то еще пригодится.
Код:
function TFmMain.GetSQLFromAcces(MyConnection:TADOConnection;SQLName:String):String;
var NewADODataSet:TADODataSet;
begin
  NewADODataSet:=TADODataSet.Create(Application);
  NewADODataSet.Connection:=MyConnection;
  MyConnection.OpenSchema(siViews, EmptyParam, EmptyParam, NewADODataSet);
  NewADODataSet.Locate('TABLE_NAME',SQLName,[]);
  Result:=VarToStr(NewADODataSet.FieldValues['VIEW_DEFINITION']);
  NewADODataSet.Free;
end;
В параметр MyConnection передаем компонент класса TADOConnection, настроенный на соединение с БД Access, а в SQLName - имя этого запроса в файле MS Access.

Пример использования:
ADOQuery1.SQL.Text:=GetSQLFromAcces(ADOConnection1 ,'MyTableSQL');
Ответить с цитированием