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

Вниз

хранимые процедуры в access   Найти похожие ветки 

 
сергей1   (2004-09-29 20:56) [0]

говорят, что в access отсутствуют хранимые процедуры, что-же делать, если надо выполнить несколько операторов ? неужели просто забить их в свойство sql.text ?


 
sniknik ©   (2004-09-29 21:04) [1]

они не отсутствуют, просто они там такие что называть их так стыдно по крайней мере. ;о)

разве можно называть процедурой состоящую из одной команды конструкцию?


 
сергей1   (2004-09-29 21:13) [2]

так что делать-то ? все-таки забивать все в sql.text ?


 
sniknik ©   (2004-09-29 21:40) [3]

что все? больше одной команды все одно не выполниш. а так да, можеш забивать. ;)


 
сергей1   (2004-09-29 22:00) [4]

>что все? больше одной команды все одно
гребанный аксесс, а я-то надеялся выполнить что-то типа

declare @v integer
set @v = (select bla-bla-bla)
select something from table1 where key_field = @v   и т.д.

выходит, все отдельными запросами делать надо, тормозить будет похлеще тормозов от Билаза


 
sniknik ©   (2004-09-29 23:30) [5]

как напишеш так и будет. и никакой надобности в нескольких командах в приведенных выше строках нет, вполне все в одну укладывается, т.к. поддерживает вложенные запросы (вот загадочное "bla-bla-bla" и "и т.д." никуда не лезет)
а по скорости в некоторых случаях побыстрее mssql будет (с которым все пытаешся сравнивать).


 
Petr V. Abramov ©   (2004-09-30 00:05) [6]

А Вы по цене Access ниче больше не хотели?


 
DrPass ©   (2004-09-30 00:20) [7]


> А Вы по цене Access ниче больше не хотели?

Firebird + IBExpert подешевле будут...


 
Digitman ©   (2004-09-30 10:00) [8]


> гребанный аксесс, а я-то надеялся выполнить что-то типа


Access-то причем здесь ? Ты же в дан.случае используешь не Access-движок ..

А собственно Access располагает не менее мощным средством - Access VBA. На встроенном в Access интерпретаторе Васика ты можешь создать любой сложности процедуру и вызвать ее на выполнение извне


 
сергей1   (2004-09-30 15:39) [9]

>укладывается, т.к. поддерживает вложенные запросы
подзапросы тут нипричем, это просто пример, в реальной задаче будет цикл с вычислениями, и подзапросами там не обойтись.

>А собственно Access располагает не менее мощным средством - Access VBA.
а этот редактор позволяет sql-запросы писать ?


 
Digitman ©   (2004-09-30 16:53) [10]


> а этот редактор позволяет sql-запросы писать ?


это не столько редактор, сколько целая подсистема, реализующая встроенный интерпретатор языка VBA (редактор, разумеется, там есть)

текст VBA-программы хранится в базе, вместе с табицами и прочими объектами

AccessVBA позволяет в том числе писать сиквел-запросы и запускать их на выполнение

вне контекста работающего Access.exe-приложения VBA-программа выполнена быть не может

для запуска той или иной AccessVBA-программы, хранящейся в той или иной базе, требуется доступ к Access.ехе как к серверу автоматизации


 
сергей1   (2004-09-30 17:34) [11]

а из клиентского приложения по сети можно такую процедуру запустить?, и как это сделать из дельфи, вряд-ли dbGo это позволяет. Вообще, можешь хотя-бы в двух словах описать, что нужно делать, что-бы несколько клиентов работали с этой процедурой ?

а то может и не стоит заморачиваться, цикл в клиенте организовать и посылать одиночные запросы из него, не так уж тормоза здесь сильно принципиальны


 
Nikolay M. ©   (2004-09-30 17:36) [12]

На sql.ru в форуме MS SQL Server, кажется, или в аксесном, не помню точно, поднимался вопрос.


 
Digitman ©   (2004-09-30 17:43) [13]


> из клиентского приложения по сети можно такую процедуру
> запустить?


теоретически - да.
практически - достаточно сложно .. да и не нужно

здесь иной подход :

- на каждой кл.машине должен быть инсталлирован Access
- в Делфи импортируется библиотека типов Access , при этом в закладку Servers автоматически инсталлируется иконка компонента TDoCmd
- класс TDoCmd осуществляет коммуникацию с Access , позволяя выполнить практически любую команду, которую Access предусматривает, как если бы эта команда вызывалась на выполнение в контексте самого Access
- среди этих команд есть команда запуска на выполнение указанной VBA-процедуры/ф-ции


 
сергей1   (2004-09-30 18:58) [14]

>-среди этих команд есть команда запуска

хм, может я торможу, но что-то не совсем понимаю, процедура-то должна находиться на том-же компе, где и сама база ? а клиент с помощью класса TDoCmd все-таки может заставить ее выполниться ?

В любом случае спасибо, наверно я все-таки всю логику организую с помощью дельфи, ну подумаешь в цикле уйдет запросов 15-25 (в среднем) на сервер, малость через задницу, но черт с ним


 
ЮЮ ©   (2004-10-01 03:19) [15]

Если цикл определяется данными,то можно воспользоваться и подзапросом



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
1-1097693549
volser
2004-10-13 22:52
2004.10.31
Левый и правый alt, ctrl, shift


14-1097229183
duk
2004-10-08 13:53
2004.10.31
Просмотр графического файла PNG


1-1098256346
Ega23
2004-10-20 11:12
2004.10.31
Закрытие формы по Escape


1-1097759680
Oleg_
2004-10-14 17:14
2004.10.31
как из дельфи запретить закрытие документа в word


3-1096696321
kaginava
2004-10-02 09:52
2004.10.31
Ошибка при выполнени запроса на вставку записей





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