
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.06.2003, 11:46
|
|||
|---|---|---|---|
|
|||
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
Я написал несколько функций в модуле и построил представление, использующее эти ф-ции. В MSAccess оно прекрасно работает, но при обращении к этому QueryDef из VB6 посредством DAO выдается сообщение о том, что все эти ф-ции не определены. Как быть? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 11:53
|
|||
|---|---|---|---|
|
|||
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
Как вариант: превратить обращения к функциям в параметры, перенести функции в VB и подставлять значения при запуске запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:11
|
|||
|---|---|---|---|
|
|||
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
Но ведь в эти мои функции работают на основе данных из других полей текущей записи. Как же я в коде на VB6 буду обращаться к данным еще не полученного рекодсета? Что в MSAccess нет никакого способа использовать хранимые UDF функции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:14
|
|||
|---|---|---|---|
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
все одно функции сильно тормозят выполнение запроса - лучше всячески избегать этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:16
|
|||
|---|---|---|---|
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
Я не понял, ты функции то в VB перетащил? Если нет, то перетащи, это тебе не клиент-сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:18
|
|||
|---|---|---|---|
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
все одно функции сильно тормозят выполнение запроса - лучше всячески избегать этого АлексейК , вот это что-то новенькое. Ну хорошо, как будем избегать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:24
|
|||
|---|---|---|---|
|
|||
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
Эти функции очень сложные. Посредством синтаксиса sql их вообще не написать. Понятно, что при критически больших объемах данных этого лучше не делать, но в моем случае нескольких сотен записей все прекрасно и быстро работает (когда я открываю QueryDef вручную из MSAccess-а). Все же как использовать хранимые udf-ф-ции. Может добавить ссылку в проект VB6 на MSAccess9.0 Object Library, открыть Access Aplication с указанием пути на мой mdb-файл? Может это добавит область видимости? Я пробую - пока не получается :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:26
|
|||
|---|---|---|---|
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
Согласен с АлексеемК. Имел случай убедиться. Хотя единичный случай м.б. не показателен, тем не менее, когда вместо своей простенькой функции стал использовать в запросе вложеный и довольно сложный селект, запрос стал работать гораздо быстрее (ну, очччччень заметно быстрее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:29
|
|||
|---|---|---|---|
|
|||
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
Я не понял, ты функции то в VB перетащил? Если нет, то перетащи, это тебе не клиент-сервер. Нет, ф-ции в модуле самой бд. Я мог бы перетащить их в проект на VB6, но мне хочется построить хранимое представление (а не запрос на лету), чтобы потом к нему легко было обращаться, типа Set rstRecordset1 = g_dbMain.OpenRecodset( "SELECT * FROM qdfQuerySef1" ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:29
|
|||
|---|---|---|---|
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
2 Pavel по разному, в зависимости от того какие вычисления требуются и из соображений оптимизации быстрдействия. вот основные способы , которыми я пользуюсь 1. использование вложенных селектов. 2. загрузка данных через рекордсет их обработка в коде VB и при необходимости вывод в таблицу результатов. 3. получение списка требуемых аргументов функции через рекордсет в VB создание временной таблицы с заранее расчитанными значениями функций по аргументам при работе с временными таблицами следует учесть что таблицы созданные в локальном файле работают быстрее линкованных и не мешают остальным пользователям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.06.2003, 12:50
|
|||
|---|---|---|---|
Можно ли писать в модуле ф-ции, использовать их в QueryDef, и обращаться by DAO? |
|||
|
#18+
Нет, ф-ции в модуле самой бд. Иван Абрамов , так не получится. Я же написал, это не клиент-сервер. Про область видимости ты и сам все понимаешь. dao знает только про обьекты данных внутри MDB, про модули (и функции, соответственно) dao ничего не известно. Обеспечивай видимость функций. Причем в mdb объект QueryDef у тебя всего лишь хранится, а выполнятся он будет из VB (вернее библиотекой dao, но в контексте среды VB) АлексейК на 1: Это справедливо, знание и умелое исрользование SQL залог производительной работы с реляционными данными. на 2 и 3: а вот это, на мой взгляд, мало чем отличается от использования функций. Приведи пример деградации производительности. Скорее всего там просто что-то подкрутить надо. на последнее: с этим я не спорю, просто сейчас использую Access только в качестве клиента к MSSQL (adp), а там другая идеология (хотя временные такблицы тоже активно использую). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&tablet=1&tid=1680946]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 341ms |

| 0 / 0 |
