powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
23 сообщений из 23, страница 1 из 1
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32571438
TJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задал такое в Дельфи форум
Использую TADOStoredProcedure для вызова запроса типа UPDATE из базы Access И представляете, отвечает такой-то функции у меня нет. запрос звучит так:
UPDATE Func SET Func.Func_Values = FindValues(Func!Func_Expr);
FindValues - это функция VB и если бы она не работала в Access я бы пошёл спрасить на sql.ru Access форум но в Access всё работает прекрасно, складывается такое приятное чувство что ADO передаёт в процедурный компонент сам запрос, а про остальные module они и не слыхивали, что в такой дерьмовой ситуации, то делать.
pkarklin мне ответил
Это вы не поняли, TADOStoredProc используеться для выполения хранимых процедур, а для выполнения запросов используйте TADOQuery. Кроме того, проконсультируйтесь на форуме по Access поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32571445
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопос 1:

UPDATE Func SET Func.Func_Values = FindValues(Func ! Func_Expr);
Это что за знак восклицания?
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32571452
TJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же говорю в Access всё работает а знак восклицания - это типа точки по моему
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32571460
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TJЯ же говорю в Access всё работает а знак восклицания - это типа точки по моему

Дык - поставь точку - что получится?
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32571469
йцук
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не поддерживает
ни с точками не поддерживает, ни без точек
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32571475
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
TJЯ же говорю в Access всё работает а знак восклицания - это типа точки по моему
Это что? Форма и контрол? Таблица и поле? Мать и мачеха?
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572228
TJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч TJЯ же говорю в Access всё работает а знак восклицания - это типа точки по моему
Это что? Форма и контрол? Таблица и поле? Мать и мачеха?
Незнаю о чём Вы прочтите топик, ещё раз, я получаю доступ из Дельфи к ббазе Access и хочу выполнить запрос на обновление, который включает функцию VB FindValues в Access всё делается, но почему когда вызываю из Дельфи пишет что функции нет - вот и вопрос топика появляется
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572241
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Func!Func_Expr, передаваемый как параметр, - это что? Поле в таблице, контрол на форме или что-то еще?
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572276
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НЕТ!


работу c пользовательскими функциями обеспечивает сам АКЦЕСС

перепиши запрос без функций, дальше в цикле отбирай подходящие записи.

И НИКОГДА НЕ СОМНЕВАЙСЯ В ТОМ, ЧТО АКЦЕСС ЭТО ДЕЛАЕТ КАК-ТО ИНАЧЕ.
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572533
TJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда товарищи я похоже попал конкретно потому-что то что в той функции написано врядли на sql написать, разве что Access понимает TransactSQL
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572621
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
VictoshaИ НИКОГДА НЕ СОМНЕВАЙСЯ В ТОМ, ЧТО АКЦЕСС ЭТО ДЕЛАЕТ КАК-ТО ИНАЧЕ.
И НИКОГДА НЕ ДУМАЙ, ЧТО АКСЕСС ЭТО ДЕЛАЕТ ИМЕННО ТАК. :)))
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572928
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TJТогда товарищи я похоже попал конкретно потому-что то что в той функции написано врядли на sql написать, разве что Access понимает TransactSQL

Дык - функцию покажи - будем думать
И запрос тоже.
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572938
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты еще можешь использовать Access не через Jet, а как OLE- сервер, тогда в памяти компика будет экземпляр ексеса и он будет делать чего захочешь.
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572948
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
UPDATE Func SET Func.Func_Values = FindValues(Func!Func_Expr);

Прежде всего, чтобы не путать никого, не надо давать тавлицам имена типа Func !
Смотрим, что написано в запросе: UPDATE таблицу Func,
дай значение полю Func_Values из этой таблицы, которое найди посредством функции FindValues с параметром Func_Expr, взятым из таблицы Func ...
Функция FindValues, очевидно, написана в MDB где живет таблица Func
и дельфи о ней не имеет никакого представления, поэтому получаем ошибку...
Чтобы выполнить такой запрос, его нужно сохранить в Акцесе и из Дельфи только послать команду на его выполнение.
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572969
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin DmitryЧтобы выполнить такой запрос, его нужно сохранить в Акцесе и из Дельфи только послать команду на его выполнениеДык - он и так в Аксе сохранет авторИспользую TADOStoredProcedure для вызова запроса типа UPDATE из базы Access ...
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572980
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparome Rivkin DmitryЧтобы выполнить такой запрос, его нужно сохранить в Акцесе и из Дельфи только послать команду на его выполнениеДык - он и так в Аксе сохранет авторИспользую TADOStoredProcedure для вызова запроса типа UPDATE из базы Access ...

Так если я правильно понял, он его (текст) посылает, а должен в Аксе сохранить query типа "MyUpdate" и послать на выполнение, в этом то и вся проблема. Но как вам имечко таблицы?
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32572996
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я немного кувыркался с этой проблемой, но года три и могу наврать.
Итак:
1) Сохранение запроса проблему не вылечит, сохраненный запрос, вызываемый из джета будет все равно ругаться на пользовательскую функцию
2) По моему, некоторые системные функции работают, Nz в частности
3) Ну про оле я уже говорил, но это плохое решение. Правильнее по моему сделать все руками из делфей, тк если у вас в памяти болтается экземпляр эксеса, тогда зачем делфи? Из пушки по воробью получается.
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32573002
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>но года три
но года три назад:-)
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32573350
TJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне совсем непонятны разработчики Access зачем вообще делать функции, если они только в Access поддерживаються, надо видно на MSDE переходить, я бы и давно перешёл просто в Access на удивление удобно делать сами таблицы.

Так маленький вопросик, я так понял Jet понимает TransactSQL или нет.

Насчёт OLE - мне так раньше и приходилось делать, но оно же так медленно, а мне этот запрос надо часто вызывать

К paparome вот одна из функций и как её преобразовать
-------------------------------
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Public Sub GetVarsArray(Formula As String)
beg = False
For a =  1  To Len(Formula)
C = Mid(Formula, a,  1 )
If (C <> "=") And (C <> " ") And (C <> "+") And (C <> "-") _
   And (C <> "*") And (C <> "/") And (C <> "^") And (C <> ")") And (C <> "(") Then
                varnow = varnow + C
Else
  If (varnow <> "") And (beg = True) Then n = n +  1 : vars(n) = varnow: varnow = ""
  If C = "=" Then beg = True: varnow = ""
End If
Next a
If varnow <> "" Then vars(n +  1 ) = varnow: n = n +  1 
End Sub
------------------------------
Public Function FindVarsInFormuls(Formula As String) As String
 'Выдаёт (var1номер, ...)
 
GetVarsArray (Formula)
For a =  1  To n
v = v & "(" & vars(a) & ")"
Next a
FindVarsInFormuls = v
v = ""
n =  0 
End Function
-----------------------------
Смысл в том что база хранит функции типа a=b+с, а потом должна разбивать эту каку на переменные, получать ()()() и тд
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32574688
TJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В результате получилось, то что я и ожидал, пришлось использовать OLE Automation, а так этот макрос пришлось выполнять раз двадцать - в результате это минута времени, и приходиться отключать ADO Connection.

Остаётся два выхода - переход на MSDE или вы подскажите есть ли в Access что-то вроде тригерров
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32574885
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
триггеров в Аксе нет :(

Про функции - нда, наворочано :(
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32575152
TJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paparome а случайно нет какого-либо транслятора в TranasactSQL
...
Рейтинг: 0 / 0
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
    #32575156
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TJPaparome а случайно нет какого-либо транслятора в TranasactSQL

Как тут недавно маяк сказал:
Голова, руки и клавиатура.

Мне более не известно :(
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]