![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
В программе используется ADO и БД Access. Запросы SQL необходимо хранить вне тела программы, чтобы была возможность их изменения без перекомпиляции. Хранить запросы в отдельных файлах - неудобно (при переносе программы на другой компьютер). MS Access дает возможность хранить запросы непосредственно в файле БД. Собственно вопрос: как использовать данную возможность из Delphi. Заранее спасибо.
|
|
#2
|
||||
|
||||
|
Да так-же как и таблицы, через запрос. Только вместо "Create table ..."используется "Create view ..."
|
|
#3
|
|||
|
|||
|
Я, наверное, неправильно выразился. Мне надо файле Access хранить текст запроса. А в компоненту ADOQuery - подгружать его динамически. Из отдельного файла - это функция ADOQuery.SQL.LoadFromFile(), а как из файла Access загрузить текст запроса с определенным именем?
|
|
#4
|
||||
|
||||
|
Если я правильно понял, то вам нужен исходный текст запроса для вьюшки сохраненной в базе. Не делал такого, но предположу что надо читать Description из схемы базы данных для вашего запроса.
|
|
#5
|
||||
|
||||
|
Первое поле в таблице имя запроса, второе сам запрос (хотя я предпочитаю обращаться не по имени, а по индексу).
Тебе понадобиться такая функция: Код:
function Tdm.Selects(s: string): string;
var QSel: TADOQuery;
begin
QSel:= TADOQuery.Create(nil);
QSel.Connection:= ADOConnection1;
QSel.SQL.Text:= 'select {поле_где_хранится_текст_запроса} from {имя_таблицы} where {поле_имени_запроса} = '+QuotedStr('тут_имя_твоего_запроса');
QSel.Open;
Result:= qSel.FieldByName('{поле_где_хранится_текст_запроса}').AsString;
qSel.Close;
qSel.Free;
end;Код:
...
ADOQuery1.SQL.Text:= Selects('TEST_SELECT'); //Вернет текст запроса с именем TEST_SELECT
... |
|
#6
|
||||
|
||||
|
Нет, ему не это нужно. В Акцесовской БД есть объекты: Таблицы, Запросы.
Для доступа через ADO без разницы в этом случае таблица это или запрос т.к. они располагаются в одном пространстве имен, и получить вы сможете только структуру этих объектов т.е. перечисление полей их составляющих. Но ему-то нужно не просто перечисление, а именно исходный текст запроса. Хотя если он для хранения текста запросов использует свою табличку то вероятно вы правы. Последний раз редактировалось Страдалецъ, 05.12.2011 в 16:42. |