powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
11 сообщений из 11, страница 1 из 1
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190078
Я написал несколько функций в модуле и построил представление, использующее эти ф-ции.
В MSAccess оно прекрасно работает, но при обращении к этому QueryDef из VB6 посредством DAO выдается сообщение о том, что все эти ф-ции не определены.

Как быть?
Заранее спасибо.
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190090
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Как вариант: превратить обращения к функциям в параметры, перенести функции в VB и подставлять значения при запуске запроса.
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190113
Но ведь в эти мои функции работают на основе данных из других полей текущей записи.

Как же я в коде на VB6 буду обращаться к данным еще не полученного рекодсета?

Что в MSAccess нет никакого способа использовать хранимые UDF функции?
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190120
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все одно функции сильно тормозят выполнение запроса - лучше всячески избегать этого
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190122
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял, ты функции то в VB перетащил? Если нет, то перетащи, это тебе не клиент-сервер.
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190125
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все одно функции сильно тормозят выполнение запроса - лучше всячески избегать этого
АлексейК , вот это что-то новенькое. Ну хорошо, как будем избегать?
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190135
Эти функции очень сложные. Посредством синтаксиса sql их вообще не написать. Понятно, что при критически больших объемах данных этого лучше не делать, но в моем случае нескольких сотен записей все прекрасно и быстро работает (когда я открываю QueryDef вручную из MSAccess-а).

Все же как использовать хранимые udf-ф-ции.
Может добавить ссылку в проект VB6 на MSAccess9.0 Object Library, открыть Access Aplication с указанием пути на мой mdb-файл?
Может это добавит область видимости?
Я пробую - пока не получается :(
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190139
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с АлексеемК. Имел случай убедиться. Хотя единичный случай м.б. не показателен, тем не менее, когда вместо своей простенькой функции стал использовать в запросе вложеный и довольно сложный селект, запрос стал работать гораздо быстрее (ну, очччччень заметно быстрее).
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190143
Я не понял, ты функции то в VB перетащил? Если нет, то перетащи, это тебе не клиент-сервер.

Нет, ф-ции в модуле самой бд.
Я мог бы перетащить их в проект на VB6, но мне хочется построить хранимое представление (а не запрос на лету), чтобы потом к нему легко было обращаться, типа
Set rstRecordset1 = g_dbMain.OpenRecodset( "SELECT * FROM qdfQuerySef1" )
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190145
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Pavel
по разному, в зависимости от того какие вычисления требуются и из соображений оптимизации быстрдействия.



вот основные способы , которыми я пользуюсь

1. использование вложенных селектов.

2. загрузка данных через рекордсет их обработка в коде VB и при необходимости вывод в таблицу результатов.

3. получение списка требуемых аргументов функции через рекордсет в VB
создание временной таблицы с заранее расчитанными значениями функций по аргументам

при работе с временными таблицами следует учесть что таблицы созданные в локальном файле работают быстрее линкованных и не мешают остальным пользователям.
...
Рейтинг: 0 / 0
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
    #32190178
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, ф-ции в модуле самой бд.
Иван Абрамов , так не получится. Я же написал, это не клиент-сервер. Про область видимости ты и сам все понимаешь. dao знает только про обьекты данных внутри MDB, про модули (и функции, соответственно) dao ничего не известно. Обеспечивай видимость функций. Причем в mdb объект QueryDef у тебя всего лишь хранится, а выполнятся он будет из VB (вернее библиотекой dao, но в контексте среды VB)

АлексейК
на 1: Это справедливо, знание и умелое исрользование SQL залог производительной работы с реляционными данными.
на 2 и 3: а вот это, на мой взгляд, мало чем отличается от использования функций. Приведи пример деградации производительности. Скорее всего там просто что-то подкрутить надо.
на последнее: с этим я не спорю, просто сейчас использую Access только в качестве клиента к MSSQL (adp), а там другая идеология (хотя временные такблицы тоже активно использую).
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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