|
Проверка условия
|
|||
---|---|---|---|
#18+
в таблицу konec выводятся данные из курсора cursor1. в курсоре такие поля data_pokupki (дата),name,id,nomer,prodavec_name. Как сделать условие такое: если в таблице konec есть уже хотя бы одна такая запись, у которой поле data_pokupki (дата) пересекается со значением в курсоре, то выводить окно "Нельзя!" Опишу на примере: В таблице konec есть к примеру записи 17.06.2013 Иванов 1 8866 Воронин 19.06.2013 Иванов 1 8866 Воронин В курсоре допустим имеем: 18.06.2013 Иванов 1 8866 Сергеев 20.06.2013 Иванов 1 8866 Сергеев Чтобы если есть такое пересечение, то вывести окно с сообщением об ошибке Пытаюсь так: подправьте меня, не работает корректно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 15:21 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Про уникальные индексы прочитай. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 15:56 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
P-032, можете дать ссылку на литературу? или какой-нибудь похожий пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 15:58 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Погодите, уникальные это ведь потом нельзя туда добавить другую запись с таким же значением, а в моем случае может быть одно и тоже значение, но другие поля чтобы у записей отличались.. Можно как-то оптимизировать мой код? чтобы просматривал всю таблицу? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 16:01 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Пишу такой код, но ошибка выходит несоответствие типов Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 16:43 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
никто не знает что ли ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 16:53 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Зеленый90, А что, собственно, мы должны знать? Ты пишешь какой-то хитрый код, переливая записи из курсора в таблицу с загадочным условием "пересечений по дате", а в приведенном примере никаких пересечений нет. Наверное, не я один не понимаю, раз никто тебе посоветовать не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 17:06 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
чтобы лис не ругался вот этот бред: IF SEEK(data_pokupki ,'konec ')>=cursor1.data_pokupki нужно написать так: IF SEEK(cursor1.data_pokupki,'konec ') а уж как там чего реализовать - это без меня, у меня травы мало, - я злой зайка. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 17:33 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
IgorNG, как это нету пересечений? в таблице даты 17 и 19, а в курсоре 18.. пересечение имеется ввиду не математически или как-то еще, а просто в таблице если есть дата которая больше той что в курсоре и если поля поля prodavec_name разные, то выводить окно с сообщением ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 17:42 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Зеленый90 , вы точно ничего не попутали (хотя вас вроде уже спрашивали об этом)? Вы сами можете себе внятно объяснить, ЧТО вы делаете? Код: sql 1. 2. 3. 4. 5.
Уточнить? Код: sql 1.
будет истинно только в одном случае - если у вас prodavec_name в таблице есть часть prodavec_name в курсоре, причем в таблице минимум на один символ короче, да ещё и SET EXACT должно быть OFF. Насчёт "пересечений" и прочего... Если предположить, что курсор первоначально строится как выборка из этой таблицы, то и обратно в таблицу данные должны сливаться прямо, нечего там контролировать в момент слияния. Корректность данных в курсоре должна быть обеспечена в момент ввода/изменения в курсор... Ну и все же разберитесь со своим INSERT INTO - я сильно подозреваю, что условие на "пересечения" (вернее, на то, что cursor1.data_pokupki>max(konec.data_pokupki) ) нужно просто вписать в селект. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 20:47 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
AndreTM, В общем есть курсор cursor1, который формируется НЕ из таблицы konec. Этот курсор имеет поля: data_pokupki,name,prodavec_name,id,number. Таблица konec содержит поля:data_pokupki,name,prodavec_name,id,number. Из курсора выводятся данные в таблицу konec. всегда содержится информация только об одном покупателе, только записей может быть несколько говорящих о том что он покупал в разные дни и разные товары. Нужно выполнить такую проверку при выводе данных в таблицу, а именно: Проверять есть ли в курсоре cursor1, дата меньшая, чем в таблице для этого же покупателя и содержит ли в курсоре в поле prodavec_name значение отличное от того что в таблице konec. Т.е. если в курсоре имеется записи, говорящие о том что покупатель пришел к другому продавцу в промежуток времени который попадает в те, даты, которые уже есть в таблице, то вывести окно, иначе копировать. К примеру пусть в таблице имеем записи 17.06.2013 Иванов 1 8866 Сидоров поля:data_pokupki,name,id,number,prodavec_name соответственно 20.06.2013 Иванов 1 8866 Сидоров поля:data_pokupki,name,id,number,prodavec_name соответственно получается что покупатель Иванов пришел 17 и 20 числа в покупателю Сидоров а в курсоре имеем: 18.06.2013 Иванов 1 8866 Петров data_pokupki,name,id,number,prodavec_name соответственно 23.06.2013 Иванов 1 8866 Петров data_pokupki,name,id,number,prodavec_name соответственно покупатель Иванов пришел 18 и 23 к покупателю Петров. Видно же что дата в курсоре попадает в интервал дат в таблице и покупатель пришел к другому продавцу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2013, 21:12 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Блин... Вы хоть поняли, о чём я с вами беседую-то? Что мне ваши потребности "найти даты, проверить продавцов"... Я вам толкую про то, что вы сами не понимаете, что в условиях писали и пишете. Вы уперлись в некую логическую конструкцию, которую придумали - и долбите её, не пытаясь осмыслить, что же происходит с данными. У вас ведь не две возможности (выдать окно предупреждения/добавить все данные из курсора), у вас их больше... У вас ведь на этих данных нет понятия "промежуток времени", как бы вы не пытались доказать обратное... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2013, 01:09 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Мне тут подсказали один код, хотелось бы понять и разобрать его. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2013, 09:07 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Если я правильно понимаю, то смысл задачи сводится к следующему 1. У каждого продавца есть определенные период времени, когда он работал с неким покупателем. Скажем, продавец "Воронин" работал с покупателем "Иванов" в период с 17.06.2013 по 19.06.2013 2. Приходит некая "бумага", где сказано, что 18.06.2013 покупателя "Иванов" обслуживал продавец "Сидоров" Но мы такую "бумагу" пропустить не должны, поскольку "знаем", что в период с 17.06.2013 по 19.06.2013 с покупателем "Иванов" работал продавец "Воронин" Собственно, задача заключается в том, чтобы найти ближайшие записи с тем же самым покупателем и сравнить 3 найденных значения продавца. Сконструировать общий запрос в синтаксисе Select-SQL можно. Но я сильно сомневаюсь, что он будет работать в FoxPro. Там придется писать несколько коррелированных запросов. Для FoxPro все можно решить значительно проще обычными "навигационными" командами. Примерно так Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2013, 22:52 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
ВладимирМ, Задача вообще такая: Есть покупатели и продавцы. В курсоре cursor1 содержатся записи всегда только об одном покупателе, которого выбирают. Там может быть 2,3 или даже 10 записей с разными датами, но продавец у этого покупателя всегда в курсоре один и тот же. Допустим мы 3 записи о покупателе занесли в таблицу konec. Это записи с датами: 15,18,19 июня 2013 года. В эти дни он купил у какого-то продавца какие-то товары. Допустим теперь что этот покупатель пришел 16 июня к продавцу Сидорову и купил что-то, а потом 23 июня пришел опять к Сидорову. Пользователь в программе выбирает записи, которые покупатель ходил к продавцу Сидорову и в курсоре оказываются 2 записи 16 и 23 июня. Так вот при попытке их записать в таблицу konec должно выдаваться сообщение что нельзя делать этого. Условие проверки такое: При попытке записать такие данные проверять, есть ли хоть одна указанная дата в курсоре попадает в промежуток дат, уже имеющихся в таблице для этого же покупателя, то не давать доступ для записи. А если даты в курсоре не попадают в промежуток, то можно записывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2013, 23:37 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Зеленый90Условие проверки такое: При попытке записать такие данные проверять, есть ли хоть одна указанная дата в курсоре попадает в промежуток дат, уже имеющихся в таблице для этого же покупателя, то не давать доступ для записи. А если даты в курсоре не попадают в промежуток, то можно записывать. Это надо? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2013, 10:56 |
|
Проверка условия
|
|||
---|---|---|---|
#18+
Станислав С...кийЗеленый90Условие проверки такое: При попытке записать такие данные проверять, есть ли хоть одна указанная дата в курсоре попадает в промежуток дат, уже имеющихся в таблице для этого же покупателя, то не давать доступ для записи. А если даты в курсоре не попадают в промежуток, то можно записывать. Это надо? Код: sql 1.
А дальше сравнивать количество записей в исходном курсоре и в полученной выборке. Если количество записей не совпадает, то не давать сохранять... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2013, 11:02 |
|
|
start [/forum/topic.php?fid=41&msg=38305557&tid=1582991]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
351ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
96ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 505ms |
0 / 0 |