![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
хранимые процедуры в access [D7, MSSQL]
сергей1 © (2004-09-29 20:56:00)говорят, что в access отсутствуют хранимые процедуры, что-же делать, если надо выполнить несколько операторов ? неужели просто забить их в свойство sql.text ?
ЮЮ (2004-10-01 03:19:00) [1]Если цикл определяется данными,то можно воспользоваться и подзапросом
сергей1 (2004-09-30 18:58:00) [2]>-среди этих команд есть команда запуска
хм, может я торможу, но что-то не совсем понимаю, процедура-то должна находиться на том-же компе, где и сама база ? а клиент с помощью класса TDoCmd все-таки может заставить ее выполниться ?
В любом случае спасибо, наверно я все-таки всю логику организую с помощью дельфи, ну подумаешь в цикле уйдет запросов 15-25 (в среднем) на сервер, малость через задницу, но черт с ним
Digitman (2004-09-30 17:43:00) [3]
> из клиентского приложения по сети можно такую процедуру
> запустить?
теоретически - да.
практически - достаточно сложно .. да и не нужно
здесь иной подход :
- на каждой кл.машине должен быть инсталлирован Access
- в Делфи импортируется библиотека типов Access , при этом в закладку Servers автоматически инсталлируется иконка компонента TDoCmd
- класс TDoCmd осуществляет коммуникацию с Access , позволяя выполнить практически любую команду, которую Access предусматривает, как если бы эта команда вызывалась на выполнение в контексте самого Access
- среди этих команд есть команда запуска на выполнение указанной VBA-процедуры/ф-ции
Nikolay M. (2004-09-30 17:36:00) [4]На sql.ru в форуме MS SQL Server, кажется, или в аксесном, не помню точно, поднимался вопрос.
сергей1 (2004-09-30 17:34:00) [5]а из клиентского приложения по сети можно такую процедуру запустить?, и как это сделать из дельфи, вряд-ли dbGo это позволяет. Вообще, можешь хотя-бы в двух словах описать, что нужно делать, что-бы несколько клиентов работали с этой процедурой ?
а то может и не стоит заморачиваться, цикл в клиенте организовать и посылать одиночные запросы из него, не так уж тормоза здесь сильно принципиальны
Digitman (2004-09-30 16:53:00) [6]
> а этот редактор позволяет sql-запросы писать ?
это не столько редактор, сколько целая подсистема, реализующая встроенный интерпретатор языка VBA (редактор, разумеется, там есть)
текст VBA-программы хранится в базе, вместе с табицами и прочими объектами
AccessVBA позволяет в том числе писать сиквел-запросы и запускать их на выполнение
вне контекста работающего Access.exe-приложения VBA-программа выполнена быть не может
для запуска той или иной AccessVBA-программы, хранящейся в той или иной базе, требуется доступ к Access.ехе как к серверу автоматизации
сергей1 (2004-09-30 15:39:00) [7]>укладывается, т.к. поддерживает вложенные запросы
подзапросы тут нипричем, это просто пример, в реальной задаче будет цикл с вычислениями, и подзапросами там не обойтись.
>А собственно Access располагает не менее мощным средством - Access VBA.
а этот редактор позволяет sql-запросы писать ?
Digitman (2004-09-30 10:00:00) [8]
> гребанный аксесс, а я-то надеялся выполнить что-то типа
Access-то причем здесь ? Ты же в дан.случае используешь не Access-движок ..
А собственно Access располагает не менее мощным средством - Access VBA. На встроенном в Access интерпретаторе Васика ты можешь создать любой сложности процедуру и вызвать ее на выполнение извне
DrPass (2004-09-30 00:20:00) [9]
> А Вы по цене Access ниче больше не хотели?
Firebird + IBExpert подешевле будут...
Petr V. Abramov (2004-09-30 00:05:00) [10]А Вы по цене Access ниче больше не хотели?
sniknik (2004-09-29 23:30:00) [11]как напишеш так и будет. и никакой надобности в нескольких командах в приведенных выше строках нет, вполне все в одну укладывается, т.к. поддерживает вложенные запросы (вот загадочное "bla-bla-bla" и "и т.д." никуда не лезет)
а по скорости в некоторых случаях побыстрее mssql будет (с которым все пытаешся сравнивать).
сергей1 (2004-09-29 22:00:00) [12]>что все? больше одной команды все одно
гребанный аксесс, а я-то надеялся выполнить что-то типа
declare @v integer
set @v = (select bla-bla-bla)
select something from table1 where key_field = @v и т.д.
выходит, все отдельными запросами делать надо, тормозить будет похлеще тормозов от Билаза
sniknik (2004-09-29 21:40:00) [13]что все? больше одной команды все одно не выполниш. а так да, можеш забивать. ;)
сергей1 (2004-09-29 21:13:00) [14]так что делать-то ? все-таки забивать все в sql.text ?
sniknik (2004-09-29 21:04:00) [15]они не отсутствуют, просто они там такие что называть их так стыдно по крайней мере. ;о)
разве можно называть процедурой состоящую из одной команды конструкцию?