|
|
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Следующая задача: Документ должен находится в одном из состояний («согласование», «бронирование» и т.д.) Переходы между состояниями не линейные, т.е. строгой последовательности перехода межу состояниями нет. Следующее состояние зависит от значений самого документа. (Например, если сумма больше 10 тыс.) Необходимо при несоответствие условий запрещать переход. Возможно автоматически переходить в следующее состояние. Динамический SQL отсутствует. Какие возможны решения? Что получилось у меня: Код: 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. Процедура «знает» с какой таблицей работает. Делаю разбор по полям, если нахожу поле, указанное в условиях проверки - сверяю его с указанным значением. (операции обрабатываются простым IF’ом). Если есть - добавляю/обновляю, нет –удаляю. В конце процедуры проверяю количество «паданий». Понимаю, что коряво, как сделать по-другому (или улучшить) не знаю. Может, кто что предложит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 18:28 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Gold_Динамический SQL отсутствует. Какие возможны решения? Кто мешает использовать статический? Чем вызвано острое желание проверять именно в динамике? Gold_ name_table char(20), --имя таблицы (реально регистрация сложнее) name_field char(20), --имя поля operation char(5), --операция, например «>»,«<»,«=» value char(250) NOT NULL, --значение Угу. (Грустно) Навскидку: 1. Кто скажет, это условие на "хотя бы одна позиция документа" или на "все позиции документа"? 2. Как в пять символов впишется is not null? 3. Какой результат программа выдаст для 250.0 = 250,0? .... 128. Как записать сюда "есть хотя бы одна позиция, по которой есть резерв"? .... Gold_Понимаю, что коряво, как сделать по-другому (или улучшить) не знаю. Может, кто что предложит? Делать "динамические вещи без динамики" некоряво невозможно. Лучший выход - таки избавиться от динамики. Например, заменить ее кодогенерацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 21:50 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
softwarer Например, заменить ее кодогенерацией. Где можно почитать что это такое в контесте хранимых процедур? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 00:25 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
В контексте чего угодно. Пишите программу, которая в некоторый момент времени "заранее" (типичные варианты - при настройке системы; при изменении таблицы настроек) пересоздает хранимые процедуры в соответствии с этими настройками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 00:30 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
да,без динамического скл тяжело.у нас в качестве условия для проверки необходимости перехода используются функции, написанные в определенном формате. На вход кушают набор параметров (мы их вытягиваем по вертикали и помещаем в специальную временную таблицу - это помогает, если однозначно можно провести идентификацию по нескольким полям), однозначно идентифицирующих сущность для проверки. Возвращаю 0 или 1 соответственно.Соответственно в таблице находится имя функции.СУБД - Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 11:20 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Shtockда,без динамического скл тяжело.у нас в качестве условия для проверки необходимости перехода используются функции, написанные в определенном формате. На вход кушают набор параметров (мы их вытягиваем по вертикали и помещаем в специальную временную таблицу - это помогает, если однозначно можно провести идентификацию по нескольким полям), однозначно идентифицирующих сущность для проверки. Возвращаю 0 или 1 соответственно.Соответственно в таблице находится имя функции.СУБД - Oracle. Чего-то совсем запутался я в Вашей постановке... То Вы говорите, что динамического SQL нет, то говорите, что СУБД - Оракл... В Оракле PL/SQL есть замечательная команда Execute Immediate, которая позволяет вам выполнить динамически созданную строку запроса. У меня студент техникума за 2 месяца (летняя практика) на FoxPro написал две функции реализующие: - простейший разбор SQL-выражения на составные части и сохранение их в БД (SQL запрос "парсился" на: наименования полей, использованные таблицы (правда, вложенные запросы не подвергались разбору), условия в Where и др.). - сборка SQL-выражения из сохраненных в БД условий. У Вас аналогичная работа должна получиться намного быстрее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:37 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
"Чего-то совсем запутался я в Вашей постановке... То Вы говорите, что динамического SQL нет, то говорите, что СУБД - Оракл..." Я вообще ничего не говорю. Автор топика не я,а я просто опытом своим делюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 15:49 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, что изменение состояние - это изменение поля id_state? Тогда почему бы не повесить триггер на update этой таблицы. Триггер вызывает хранимую процедуру, а в нее логику можно любую запрограммировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 16:23 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Shtock"Чего-то совсем запутался я в Вашей постановке... То Вы говорите, что динамического SQL нет, то говорите, что СУБД - Оракл..." Я вообще ничего не говорю. Автор топика не я,а я просто опытом своим делюсь. Прошу прощения, "слона-то (т.е. то, что топики писали разные люди) я и не заметил..." Извините, если сможете... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 06:42 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Станислав С...кийУ меня студент техникума за 2 месяца (летняя практика) на FoxPro написал две функции реализующие: - простейший разбор SQL-выражения на составные части и сохранение их в БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 10:16 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
softwarerВ контексте чего угодно. Пишите программу, которая в некоторый момент времени "заранее" (типичные варианты - при настройке системы; при изменении таблицы настроек) пересоздает хранимые процедуры в соответствии с этими настройками. я так понимаю что в приложении будет динамический скл ) billЯ так понимаю, что изменение состояние - это изменение поля id_state? Тогда почему бы не повесить триггер на update этой таблицы. Триггер вызывает хранимую процедуру, а в нее логику можно любую запрограммировать. В какое следующее состояние перводит это и надо мне выяснить Программист-Любитель Любопытно. Как использовать в указанном случае еще не понял. Но где такое мне поюобное понадобится знаю. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 18:13 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Gold_я так понимаю что в приложении будет динамический скл ) "В приложении" (в клиенте) такого понятия нет. Можно сказать, что там любой sql - динамический. Важно может быть отсутствие динамического sql при собственно операции перехода между состояниями - и это вполне достигается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 18:21 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
softwarerВажно может быть отсутствие динамического sql при собственно операции перехода между состояниями - и это вполне достигается. Не понял. Можно другими словами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 09:48 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Gold_ Программист-ЛюбительЛюбопытно. Как использовать в указанном случае еще не понял. Но где такое мне поюобное понадобится знаю. Спасибо. На диаграмме, которая отвечает за хранение синтаксических деревьев выражений WHERE, проверочные отчеты и их запуск у меня вышло 16 таблиц. Не считая описания источников данных, полей, форм для вывода и др., связанного с этой задачей, но выделенное в отдельные схемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 10:24 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
To Программист-Любитель: схемкой на shtock@mail.ru поделитесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 15:11 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
А как ее послать ? Сфотографировать из EM не получиться - большая, на 1 экран не влезает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 15:20 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Распечатал А3 и переслал то, что получил по почте от принтера после пересканирования. Если опять распечатать А3 будет читабельно. (Перечитал сам - бред какой-то) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 16:35 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительРаспечатал А3 и переслал то, что получил по почте от принтера после пересканирования. Если опять распечатать А3 будет читабельно. Есть такая штука как PDFCreator ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 16:38 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Спасибо за ссылку. Поставил. Вывел в ПДФ и отправил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 16:54 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Забавно.Как я смотрю еще и с контролем доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 17:08 |
|
||
|
проверка указанного значения поля
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительСпасибо за ссылку. Поставил. Вывел в ПДФ и отправил. Можно и мне прислать gold@atrus.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 17:18 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34825162&tid=1544276]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 454ms |

| 0 / 0 |
