|
|
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Не болтай! Построй, запусти, проверь время. Если будет медленно, выстави на форум структуру таблиц и результирующий запрос, посмотрим, подумаем... :))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 12:37:14 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Rivkin Dmitry Код: plaintext 1. 2. 3. Послушай чей-то я видать не догоняю. Мне это в модуль писать или SQL запрос такой в таблицу загнать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 13:01:55 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
NikP Rivkin Dmitry Код: plaintext 1. 2. 3. Послушай чей-то я видать не догоняю. Мне это в модуль писать или SQL запрос такой в таблицу загнать Твой запрос, видимо, хранимый? Прежде чем ты его откроешь, делаешь так: Dim db as DataBase: Set db= CurrentDb Dim Qd as QueryDef: Set qd = db.QueryDefs("MyQry") qd.SQL = "SELECT " & MyDateFormat([Forms]![000_Volume]![Date]) & " ... Все, пользуся запросом, как хочешь, текст его уже сохранен. Удобно еще и тем, что когда ты его откроешь в построителе, увидешь все наглядно. И прогнать можешь на время ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 13:17:12 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
По-моему мы друг друга немного не понимаем. Объясняю картину: 1.Есть таблица в ней поле MEMO в котором хранится запрос 2.Запрос основан на другом запросе с определенными параметрами и таблице 3.На основе таблицы в которой храниться запрос построена форма в ней есть поле в котором указан текст запроса(поле MEMO) 4.В форме также есть график, у которого RowSourse присваивается ссылка на поле с текстом запроса 5.В форме также есть группа переключателей "Дата" и список на основании которых меняются данные запроса 6.Надо сделать экспорт данных получаемых в результате запроса в Excel через кнопку 7.Но OpenRecordset ругается и не хочет пускать текст запроса (надо 5 параметров) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 13:34:17 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Извини, не понимаю, зачем текст запроса хранить в таблице, для этого и существуют хранимые запросы. Но это не меняет дела. То что касалось qd.SQL = "SELECT " & MyDateFormat([Forms]![000_Volume]![Date]) & " ... переделай как UPDATE MEMO_Tbl SET MEMO = "SELECT " & MyDateFormat([Forms]![000_Volume]![Date]) & " ... и все осталось, как у тебя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 13:45:54 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Спасибо за поддержку. Я пропаду на немного попробую все переварить, может на самом деле наворотил лишку. Приду в себя объявлю результаты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 14:10:49 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Rivkin Dmitry Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Послушай а откуда функция берет [Date] ? На сколько я понимаю там должна быть конкретная дата, которую функция преобразует в нужный формат. В результате должна быть ссылка на запрос или таблицу Я правильно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 15:33:34 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, что Rivkin Dmitry на форуме нет. Может кто другой подскажет? Вопрос в принципе простой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 17:31:58 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
[Дата] тоже надо в функцию передавать в виде аргумента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 17:33:50 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Вот и я так же подумал. По другому ведь ее не видно Спасибо за помощь! Буду разбирать дальше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 17:37:00 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Я пришел. При написании функции я пользовался текстом запроса автора и в третий раз за сегодня был не внимателен. [Дата] является полем таблиц [00_Дата].Дата и [001_Регион].Дата. Поэтому, передавать параметр в функцию не надо, но функцию надо слегка изменить: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Я очень извиняюсь, наверное, поспешил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 17:57:04 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
К стати проверил скорость функции со вставкой даты как второго параметра Работает в 5 раз медленее И еще. А каким образом [Date] будет браться из таблиц, если ни таблицы, ни запрос к таблицам не открыты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 18:50:03 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
NikPК стати проверил скорость функции со вставкой даты как второго параметра Работает в 5 раз медленее И еще. А каким образом [Date] будет браться из таблиц, если ни таблицы, ни запрос к таблицам не открыты? В 5 раз медленнее чего? Если функция не работает, что мы проверяли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 18:53:22 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Запрос через IIf Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:03:53 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Погодь немного, я постараюсь расписать все. Со скоростью - мне не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:14:49 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Прежде всего, в этом выражении - ошибка и твой запрос не должен работать вообще: Код: plaintext 1. 2. 3. 4. 5. Д.быть IIf([Forms]![000_Объемы]![Дата]=1,Format([Дата],"dd/mm/yy"), IIf([Forms]![000_Объемы]![Дата]=2,CByte((([Дата]-#12/31/2000#)- CByte(([Дата]-#12/31/2000#)/364-0.4999)*364)/7+0.6), IIf([Forms]![000_Объемы]![Дата]=3,Format([Дата],"mmmm yy"), IIf([Forms]![000_Объемы]![Дата]=4,Format([Дата],"q yy"), IIf([Forms]![000_Объемы]![Дата]=5,Format([Дата],"yyyy") , < expression > ))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:31:02 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Я не знаю как, но он работает и работает прилично. Если хочешь проверь сам. Только таблицу свою подставь и все. Желательно, чтобы в таблице было строк где-нибудь 50 000. Сразу увидишь разницу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:38:27 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
О птичках. У меня база mdb на Access 2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:40:00 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
А дату выдает правильно? И насколько я помню, запрос не открывается в рекордсете? Функцию я сварганил такую: Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. Вызов ее вернет тебе текст запроса Код: plaintext Код: plaintext 1. 2. 3. 4. 5. Если 2: Код: plaintext 1. 2. 3. 4. 5. Запрос я не запускал, таблицы лень делать. Вместо русских слов, подставил английские, иначе не вижу текст. Тебе надо вернуть все назад. Возможно, что я что-то напутал или ошибся. Проверь. Если что не так - стучи! Я пока на форуме. Пробуй. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 20:04:49 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Спасибо, что так развернул! Сегодня полностью опробовать не получится. Скоро с работы уйду. Результат скажу завтра. Еще раз спасибо. Намучался наверно писавши. Объемчик не малый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 20:08:55 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Писать (ударение) не трудно - копируй себе, сложно проверять, что правильно сложил все. А еще волнение - правильно ли я твою задачу понимаю, а то может быть зря воздух сотрясаю... Хотя и корысть есть - вдруг правильно понял и правильео тиснул - мой код опубликован будет!!! 8-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 20:16:42 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Если ты еще не ушел, а что ты вычисляешь в выражении Код: plaintext Я что-то не въехал. Если номер текущей недели в году то есть готовая функция format(date,"ww"), которая и возвращает значение. Тогда стоит подправить нашу функцию в соответствующих местах. А что здесь Year([Date])*12+Month([Date]) и здесь Year([Date])*4+CByte(Month([Date])/3+0.2) ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 20:33:42 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Rivkin DmitryЕсли ты еще не ушел, а что ты вычисляешь в выражении Код: plaintext Я что-то не въехал. Если номер текущей недели в году то есть готовая функция format(date,"ww"), которая и возвращает значение. Тогда стоит подправить нашу функцию в соответствующих местах. А что здесь Year([Date])*12+Month([Date]) и здесь Year([Date])*4+CByte(Month([Date])/3+0.2) ??? 1. Ты правильно понял вычисляется номер недели. Только в формате ww есть один минус. Он считает, что в году 53 недели, а на самом деле их 52 просто 53-я переходит в 1. При сравнении разных годов по неделям это не прокатывает. 2. Year([Date])*12+Month([Date]) считает номер недели, но прибавляет к ней год 3. Year([Date])*4+CByte(Month([Date])/3+0.2) то же, что и 2 только не месяц, а квартал Для чего все это нужно: Если брать несколько годов и сортировать их, то текстовый формат даты будет сортироваться не корректно. Вот для этого и нужен еще один столбец в запросе по которому будет производиться сортировка. А 2-й вариант предлагает сам мастер в Access, когда делаешь диаграмму, ну а остальное сам наваял по аналогии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 09:14:39 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Доброе утро! Понятно с датами - твои прблемы. Я думаю, что функцию, что я крапал, нужно уточнить. Во всех местах, где написано "Format([Date] .... надо написать "Format([00_Date].[Date] иначе в запросе будет неопределенность с полями выборки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 09:24:14 |
|
||
|
Рекордсет на основе запроса
|
|||
|---|---|---|---|
|
#18+
Кстати! Когда я предлагал два запроса (один с функцией, а другой с IIf) и IIf работал в 5 раз быстрее, то там скорее всего дело вот в чем: IIf обращается в форму смотрит на значение переключателя и сразу форматирует весь массив Функция обращается в форму к переключателю на каждой записи, а это не к чему. из-за этого и тормозит Но я смотрю последний вариант вроде бы это исключил. Я случаем не ошибаюсь, а то может надо сначала скорректировать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 09:33:27 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32574592&tid=1673566]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
173ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 462ms |

| 0 / 0 |
