|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
Привет всем! Есть такая проблемка. В проекте .adp (MS Access 2000 + MS SQL Server 2000) есть куча отчетов, с паратеризированными запросами. Т.е., при генерации отчета вначале запрашивается параметр (используется просто запрос с "?" и InputParameters для задания текста типа "Введите параметр такой-то"). Т.е., появляется окно с полем для ввода параметра и двумя кнопками "Ок" и "Cancel". В обработчике OnNoData() выдается сообщение типа "Нет записей по Вашему запросу", когда не было найдено записей для введенного парамерта. Все вроде бы ничего, но этот обработчик вызывается даже тогда, когда пользователь нажал "Cancel". Нельзя ли как-нибудь определить был ли нажат "Cancel" или для данного параметра действительно нет записей. Или может быть есть какие-то другие признаки для определения такого рода ситуаций. Могу предположить, что копаю я не там, т.к. опыт работы с Access - ровно неделя. :) Заранее благодарен всем, кто сможет помочь советом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2003, 16:31 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
А почему не сделать форму с параметрами отчета в которой две кнопки "Запуск" и "Отмена" и InputParameters перевести на форму? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2003, 16:44 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
Легче сделать форму с кучей окошек для параметров, а запросу передавать данные из этих контролов. По нажатию кнопки, запускающей запрос, проверь ввод данных в контролы - и ругай юзверя, если не ввел. вот и все ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2003, 16:44 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
Спасибо за ответы. В некоторых отчетах именно так и сделано. Имеются форма с кучей параметров и т.д. Но есть отчеты, в которых только один параметр. Писать для каждого отчета отдельную форму... Ну, вы понимаете. Интересует как определить что нажал юзер именно в системном окне ввода параметров. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2003, 16:55 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
Можно написать универсальную форму для всех отчетов, но это довольно трудоемко, хотя в дальнейшем себя оправдывает. Что касается перехвата результатов работы с системным окном, то я думаю не получится (хотя кто его знает). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2003, 17:03 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
есть идея выписать функцию свою, и указать ее ( МояФция() вместо [ДайМнеПараметр:] ) в запросе. Эта ф-ция уже может делать то, что тебе надо (и возвращать условие отбора в запрос ;-): запуская inputbox(..), лови пустую строку или еще что. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2003, 17:15 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
2 Alexus12 Я сейчас попробовал сделать, что-то подобное предложенное тобой. В общем, работает. Имеется функция, которая вызывается для задания параметра, в ней вызывается форма, отлавливается код возврата и устанавливается глобальная переменная, которая потом проверяется в OnNodata(). Честно говоря, мне кажется, что это как левой ногой правое ухо чесать. Есть еще сомнения насчет типов параметров, подставляемых в запрос или двойного вызова этой самой функции для 2-х параметров и т.п. Ладно, если ничего другого нет, то придется или этот вариант использовать, или дальше копать. В любом случае, спасибо всем за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2003, 18:17 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
Для типов параметров опеределяй фцию явно: function MyFunc() as integer (!!!) Ну а с левой ногой... Как уже предлагали, для всех отчетов делается 1 глобформа, и все запросы/отчеты перевешиваются с таблиц на новый источник данных - 1-ый глобальный запрос, у которого условия отбора берутся из формы. Удобно и радостно. Корифеи, скажите, прав я? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2003, 09:44 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
2 Alexus12 В общем, поигрался я немного со свойствами отчета. Было найдено следующее решение. В обработчике OnNodata() проверяется свойство CurrentRecord. Если юзер нажал Cancel во время ввода параметра, то попытка доступа к этому свойству будет вызывать ошибку 2455. Если просто нет данных, то CurrentRecord будет 0. Этот вариант больше подходит мне. Неохота создавать какую-то глобальную универсальную форму для ввода одного параметра, если уже есть что-то системное. По правде сказать, даже не думал, что это какая-то хитрая проблема. Ведь куча народу использует параметризированные запросы, посему и решение вроде стандартное должно быть. Ок. Может кому пригодится. Еще раз спасибо. Вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2003, 14:22 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
У меня несколько другая продлема, но все же... Есть форма, в которой оператор вводит много-много данных... Так вот, после того, как все заведено, необходимо вызвать отчет с формы, который все данные напечатает в виде справки/догофора/и тд и тп... Так вот, в отчет нужно передать значение 1 из полей (ИНН фирмы)...Никаких параметров тут руками вводить не надо, 1 параметр - из формы. Что мне сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2004, 09:31 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
OrlicУ меня несколько другая продлема, но все же... Есть форма, в которой оператор вводит много-много данных... Так вот, после того, как все заведено, необходимо вызвать отчет с формы, который все данные напечатает в виде справки/догофора/и тд и тп... Так вот, в отчет нужно передать значение 1 из полей (ИНН фирмы)...Никаких параметров тут руками вводить не надо, 1 параметр - из формы. Что мне сделать? Все, сам сделал... Создал запрос, в который передается значение ключевого поля активной записи на форме: Код: plaintext 1. 2.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Самое интересное, что не нужны букмарки, так как используется рефреш, а не реквери, и при обновлении данных остаемся на той же позиции. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2004, 10:19 |
|
Отчет * Окно ввода параметра * Определение кода возврата
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста, никак не могу сообразить... Есть таблица как мне задать параметр вывода информации через диалоговое окно перед запросом? К примеру - в окне "Введите номер счета" и я ввожу "36" и мне показываются все строки с 36 счетом. Потом ввожу "63" счет - все строки с 63счетом по столбику "СчетДляОтбора" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 11:43 |
|
|
start [/forum/topic.php?fid=45&msg=32164279&tid=1612902]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 358ms |
total: | 502ms |
0 / 0 |