Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем. / 23 сообщений из 23, страница 1 из 1
22.06.2004, 12:43:52
    #32571438
TJ
TJ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
Задал такое в Дельфи форум
Использую 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
22.06.2004, 12:46:05
    #32571445
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
Вопос 1:

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

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


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

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

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

Дык - функцию покажи - будем думать
И запрос тоже.
...
Рейтинг: 0 / 0
23.06.2004, 09:06:37
    #32572938
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
Ты еще можешь использовать Access не через Jet, а как OLE- сервер, тогда в памяти компика будет экземпляр ексеса и он будет делать чего захочешь.
...
Рейтинг: 0 / 0
23.06.2004, 09:11:53
    #32572948
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
Код: 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
23.06.2004, 09:20:46
    #32572969
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
Rivkin DmitryЧтобы выполнить такой запрос, его нужно сохранить в Акцесе и из Дельфи только послать команду на его выполнениеДык - он и так в Аксе сохранет авторИспользую TADOStoredProcedure для вызова запроса типа UPDATE из базы Access ...
...
Рейтинг: 0 / 0
23.06.2004, 09:25:25
    #32572980
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
paparome Rivkin DmitryЧтобы выполнить такой запрос, его нужно сохранить в Акцесе и из Дельфи только послать команду на его выполнениеДык - он и так в Аксе сохранет авторИспользую TADOStoredProcedure для вызова запроса типа UPDATE из базы Access ...

Так если я правильно понял, он его (текст) посылает, а должен в Аксе сохранить query типа "MyUpdate" и послать на выполнение, в этом то и вся проблема. Но как вам имечко таблицы?
...
Рейтинг: 0 / 0
23.06.2004, 09:31:57
    #32572996
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
Я немного кувыркался с этой проблемой, но года три и могу наврать.
Итак:
1) Сохранение запроса проблему не вылечит, сохраненный запрос, вызываемый из джета будет все равно ругаться на пользовательскую функцию
2) По моему, некоторые системные функции работают, Nz в частности
3) Ну про оле я уже говорил, но это плохое решение. Правильнее по моему сделать все руками из делфей, тк если у вас в памяти болтается экземпляр эксеса, тогда зачем делфи? Из пушки по воробью получается.
...
Рейтинг: 0 / 0
23.06.2004, 09:32:51
    #32573002
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
>но года три
но года три назад:-)
...
Рейтинг: 0 / 0
23.06.2004, 11:49:24
    #32573350
TJ
TJ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
Мне совсем непонятны разработчики 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
23.06.2004, 22:06:03
    #32574688
TJ
TJ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поддерживает ли ядро Jet (без Access) работу с функциями, определенными пользователем.
В результате получилось, то что я и ожидал, пришлось использовать OLE Automation, а так этот макрос пришлось выполнять раз двадцать - в результате это минута времени, и приходиться отключать ADO Connection.

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

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

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

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


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