|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Есть форма, на ней два эдита, куда пользователь вводит начало диапазона и конец (mdiapin1,mdiapin2) Нажимаем кнопку сохранить, в ней код...проверяем вхождение диапазона и если прошло то устанавливаем zflag=.t. и собссна релизим форму и дальше идет запись введенного диапазона в базу. LOCATE FOR (thisform.mdiapin1.Value >= txpacks.diapin1 AND thisform.mdiapin1.Value <= txpacks.diapin2) OR (thisform.mdiapin2.Value >= txpacks.diapin1 AND thisform.mdiapin2.Value <= txpacks.diapin2) IF FOUND() lcMessage = "Введенный диапазон имеет пересечение" MESSAGEBOX(lcMessage,0+48,'Ошибка') zflag=.f. SET FILTER TO &gcOldFilter ELSE zflag=.t. SET FILTER TO &gcOldFilter thisform.Release ENDIF Ну проблема в том что если ввести mdiapin1 меньше самого минимального значения в базе, а mdiapin2 больше самого максимального, то проверка пройдет...хотя получается, что этот диапазон будет накладываться на существующий и перекрывать его. Мучал и between, но суть та же. Не знаю как понятнее объяснить...может подскажете как правильно организовать такую проверку и разрешить дальнейшую запись по zflag=.t. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 02:05 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Сергей П.Ст.Не знаю как понятнее объяснитьДля начала объясните, вхождение какого диапазона в какой вы проверяете. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 06:42 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Сергей П.Ст.Не знаю как понятнее объяснить... Типа сами догадайтесь - вы же тут телепаты Основная проблема именно в том что ты не можешь четко сформулировать задачу, но пытаешься ее решать. Прежде чем писать код - надо четко сформулировать задачу, которую он должен решать. Как понимаю тебе надо проверить что введенный диапазон в пределах имеющегося в таблице, тогда надо вычислять минимум и максимум таблицы, а затем с ними сравнивать введенные значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 06:52 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Наоборот... мне надо не дать пользователю ввести диапазон который уже имеется. Допустим кто-то уже ввел серии 1000-2000 3000-7000 Пользователь при попытке ввести диапазон 900-1500 должон получить отлуп. Это работает кодом который написал.. .но если пользователь попытается ввести диапазон 700-8000 то этот код не сработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 07:47 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Допустим есть: 1000-2000 3000-7000 8000-9000 допустимо ввести 2500-7500 ? или 2100-2900? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 07:51 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
неа... ибо уже идет пересечение ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 08:03 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Сергей П.Ст.неа... ибо уже идет пересечение 2100-2900 тоже нельзя? Этот диапазон не пересекается с существующими. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 08:08 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
ой все... туплю.. дадада... его можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 08:14 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Ты проверяешь что добавляемый диапазон не попадает в существующие. Надо добавить проверку что существующие не попадают в добавляемый. Так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 08:18 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Ммм... спаааасибо, пойду осиливать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 08:22 |
|
Как проверить вхождение
|
|||
---|---|---|---|
#18+
Еще учти что на большой таблице этот код будет сильно тормозить, т.к. LOCATE будет сканировать всю таблицу при отсутствии пересечений. Пока сделай с LOCATE и начинай думать как ускорить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 08:31 |
|
|
start [/forum/topic.php?fid=41&msg=38768612&tid=1582524]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 152ms |
0 / 0 |