Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пользовательская функция в запросе / 8 сообщений из 8, страница 1 из 1
25.12.2002, 00:17
    #32083831
DIMA_APN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательская функция в запросе
Всем привет. В аксесе есть запрос, в котором есть вычисляемые поля. Значения этих полей должна возвращать пользовательская функция, сделанная, к примеру, в Module1. Но когда я пишу в строчке "Поле"
ВЫРАЖЕНИЕ1: стоимость_модель(Код,Код2), появляется ошибка "Неизвестная функция". Подскажите?
...
Рейтинг: 0 / 0
25.12.2002, 01:10
    #32083833
-=Alexey=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательская функция в запросе
финкция должна быть объявлена как public
...
Рейтинг: 0 / 0
25.12.2002, 15:04
    #32084154
DIMA2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательская функция в запросе
Она и есть PUBLIC. Вообще интересно себя Access2к (SP2) ведет. Местами видит функцию, местами - нет. КОгда перезагружаю БД, все ОК. Черз некоторое время опять появляется ошибка.
...
Рейтинг: 0 / 0
25.12.2002, 16:19
    #32084253
Julius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательская функция в запросе
Если при исполнении проекта VBA происходит любая не обработанная ошибка, ядро Jet перестает видеть проект (а значит и функции) и снова "прозревает" только в новом сеансе.
...
Рейтинг: 0 / 0
26.12.2002, 21:40
    #32084983
DIMA2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательская функция в запросе
То есть мне надо сделать все ситуации, которые могут потенциально вызывать ошибки, сделать контролируемыми? Интересно, как это можно обойти?...
...
Рейтинг: 0 / 0
28.12.2002, 12:14
    #32085484
Julius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательская функция в запросе
Обойти никак. Во всех процедурах обработки событий обрабатывать ошибки в обязательном порядке, тогда работоспособность приложения сохранится. Вообще-то, этот косяк наверное самый большой недостаток Access (локального).
Попробуйте перейти все же на ADP и писать запросы на T-SQL, который пользуется функциями не на VBA, а на своем родном языке и таких сбоев не допускает. Да и технология ADP все же более продвинутая, к тому-же клиент-сервер. Пока лучшего решения нет.
...
Рейтинг: 0 / 0
29.12.2002, 16:18
    #32085617
DIMA2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательская функция в запросе
Тогда как можно объяснить такую фигню. Есть запрос:
Код: plaintext
1.
2.
3.
4.
5.
PARAMETERS kv Short;
INSERT INTO БракОтчет ( КодКвитанции, СервисЦентры, Запчасти, Работы, Комплектация )
SELECT [Учет брака].[Номер квитанции], Квитанция_СЦ([Номер квитанции]) AS СЦ, Квитанция_Запч([Номер квитанции]) AS Запч, Квитанция_Работы([Номер квитанции) AS Работы, Квитанция_Компл([Номер квитанции]) AS Комплект
FROM [Учет брака]
WHERE ((([Учет брака].[Номер квитанции])=[kv]))
WITH OWNERACCESS OPTION;


После некоторых действий (вполне возможно, что это как раз "до первой звезды" (ошибки) запрос волшебным образом преображается:
Код: plaintext
1.
2.
3.
4.
5.
PARAMETERS kv Short;
INSERT INTO БракОтчет ( КодКвитанции, СервисЦентры, Запчасти, Работы, Комплектация )
SELECT [Учет брака].[Номер квитанции], [Квитанция_СЦ]([Номер квитанции]) AS СЦ, [Квитанция_Запч]([Номер квитанции]) AS Запч, [Квитанция_Работы]([Номер квитанции]) AS Работы, [Квитанция_Компл]([Номер квитанции]) AS Комплект
FROM [Учет брака]
WHERE ((([Учет брака].[Номер квитанции])=[kv]))
WITH OWNERACCESS OPTION;


Вся фишка в в квадратных скобках, которые, скорее всего, мешают видеть функцию. Что можете здесь посоветовать? Благодарю.
...
Рейтинг: 0 / 0
30.12.2002, 09:16
    #32085668
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательская функция в запросе
Единственное, что можно было посоветовать, ИМХО уже сказал Julius.
А обходить ситуации, где возникают ошибки, можно по-разному. Можно по-простому: On Error Resume Next. Можно по-умному - выявить возможные ошибки, записать их номера и написать обработчик с учетом специфики каждой ошибки, чтобы на выходе не получить бессмыслицу.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пользовательская функция в запросе / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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