|
|
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Хочу из запроса в Access XP вызвать запрос с параметром. Параметр будет вычисляться и передоваться из первого запроса. Это возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 17:52 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
если это ADP а в качестве сервера mssql 2000 то наверное речь идет о серверной функции ? Если это MDB то в пределах sql-запроса можно 1. использовать пользовательские функции (правильно написанные) 2. подчиненные запросы. правда и то и другое тормозит жутко. другое дело если собирать простые запросы программно и тут же их запускать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 18:00 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Есть вот такой запрос, но он не работает, просит меня определить two.ClientsInf_ID, если я выкидываю один уровень вложенности, все работает. Думал, можно создать вспомогательный запрос с параметром, но передать его теда я не знаю как. У меня mdb 1) Использовать подчиненный запрос, я не понял как. 2) Пользовательские функции, это о чем? Это все потом будет работать на SQL Server, а результат нужен сейчас, и не хочется мучиться потом с преобразованием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 18:10 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
убегаю, утром напишу у тебя и есть - подчиненные запросы а функции - модуль в нем public function MYFUNCTION(MY_ARG) .... end function в запросах MDB можно ими пользоваться только нужно кое что учесть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 18:18 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Создал я функцию, но возвращать в запрос могу только одно значение. Каким типом данных пользоваться, чтобы передать в запрос в вектор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 19:47 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Я думаю что оптимально будет написать две функции отдельно для каждого значения по следующей причине: даже если результатом отрабатывания функции является изменение значения глобальной пременной (массива) то отимизатор запросов в версиях MSACC начиная с 2000 игнорирует то что переменная могла быть изменена за время выполнения запроса и берется кэшированное значение. кроме того хочу заметить что если при вызовах функции в vb было достаточно декларирования функции как числа чтобы присвоить ей исходное значение = 0 и еще если аргумент функции не изменяется , если не ошибаюсь то в ACC 2002 функция не выполняется а берется из кеша в случае с запросами в функцию обязательно нужно добавлять сброс начальных значений (видимо декларирование происходит перед выполнением запроса) Public Function MYFUNC(MYVAR As Variant) As Integer MYFUNC = 0 ' обязательно сбросить при использовании в запросах If MYVAR = 1 Then ' в А2002 наблюдалось кеширование если аргумент не меняется MYFUNC = Rnd * 10 * Timer End If End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 09:53 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
АлексейК прав на все 100 % нужно использовать для каждого возвращаемого значения свою функцию. Если нужно выполнить сложные действия, то можно вкладивать одну функцию в другу, причем таких вложений можно сделать много. (Главное не напутать : ) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 11:33 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Замечательно. Теперь у меня похожий вопрос - пишу сюда же. Люди, АУ!!! Есть запрос [Deb1 - Журнал-фильтр] с вычисляемым полем [РазницаДатОтгрОпл]. В нем нужно сделать подзапрос на таблицу ВидыСроков такого вида: (SELECT ВидыСроков.СрокЗадолж FROM ВидыСроков WHERE (((ВидыСроков.С)<=[Deb1 - Журнал-фильтр].[РазницаДатОтгрОпл]) AND ((ВидыСроков.По)>=[Deb1 - Журнал-фильтр].[РазницаДатОтгрОпл]))) AS Выражение1 Но SQL ругается на "ссылку" в главный запрос: [Deb1 - Журнал-фильтр].[РазницаДатОтгрОпл] Как это правильно выписать? (Хочу Ме! из Васика!!! ;))))))))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 17:55 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Forms![Deb1 - Журнал-фильтр].[РазницаДатОтгрОпл] Имеется в виду это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 17:59 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Пиши вместо вот этой лажи [Deb1 - Журнал-фильтр].[РазницаДатОтгрОпл] - DlookUp (хелп в аксесе подробен), если уж так хочется, а вообще-то так не делается, пишутся джойны с запросом в котором критерии (если их несколько, допустим, определённый набор записей по какому-либо критерию - не важно, откуда мы его задаём) и никаких уровней вложенности в пользовательских функциях. Либо пользуйтесь Where In(Select ***), а во вложенном запросе уже функцию, уровень вложенности забыл, потому как не стоит загружать сервер либо локальную машину большим количеством вложенных выборок, при больших объёмах - ступор обеспечен. Выходов несколько - хранимые процедуры на SQL сервере либо делать темповые таблички в mdb, потом их удалять и компактить базу.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 18:08 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
2ВС: К сожалению, не форма, а расчетное поле именно запроса - главного, - которое надо передать в подчиненный. Иначе бы и вопроса не было - с формой все просто ;) 2Hummer: DlookUp тожа знаю, могу и вместо него функцию на VB наваять ;), только толку?.. Сейчас написана огромная Select Case'ина, которая классифицирует сроки. Хотел перебросить в таблицу со структурой: КлассСрока С По для чего и ваялся подзапрос - выбирать из это таблы КлассСрока для каждой записи по только что рассчитанному в этой же записи значению... 2All: Ну что ж это за бред, камрады?.. Параметр родителя нельзя передать дочке?.. Ну и бредятина... 8() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 18:17 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
АААА!!! Дошло. Надо убрать [Deb1 - Журнал-фильтр]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 18:22 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Еще раз 2Hummer: Джойны-то и не могу здесь юзать: в главном запросе в результате расчета получаем дискретины: 1 5 69 458 -56 -89 (дней), а таблица классов содержит интервалы: Класс : с : по До 30 дней : 0 : 30 До 60 дней : 31 : 60 Народ! Поделитесь, как надо правильно делать такой "классификатор?" Или все SelectCase' пишут? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 18:24 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Alexus12 Так уже сказали - "Надо убрать [Deb1 - Журнал-фильтр]." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 09:47 |
|
||
|
Это возможно???
|
|||
|---|---|---|---|
|
#18+
Что самое смешное, все равно не работает. Ругается выводом более 1 значения, хотя это просто невозможно. Зато если навесить на запрос с расчетным значением [РазницаДатОтгрОпл] новый запрос (где расчетное поле [РазницаДатОтгрОпл] стало статическим, и оба запроса со сравниваемыми величинами стали источниками данных, не обращаясь сами на себя ;) и уже в нем делать Where с таблицей-классификатором, SELECT [Deb1 - Журнал-фильтр].РазницаДатОтгрОпл, ВидыСроков.СрокЗадолж FROM ВидыСроков, [Deb1 - Журнал-фильтр] WHERE (((ВидыСроков.С)<=[Deb1 - Журнал-фильтр].[РазницаДатОтгрОпл]) AND ((ВидыСроков.По)>=[Deb1 - Журнал-фильтр].[РазницаДатОтгрОпл])); то все работает как часики. Вот и получается, что с подчиеннными лучше и не связываться, легче сверху довески написать... ВС! Как ваше мнение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 10:12 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1794&tid=1681159]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 314ms |

| 0 / 0 |
