Автор | Сообщение |
|
| |
Пост N: 2411
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.06.12 09:39. Заголовок: Как такое может быть ?
В бровсе пользователь заполняет колонку с количеством. В случае если это штучный товар , программа не дает ввести дробное количество. Но иногда находятся люди которые эту проверку обходят загадочным образом. В начале я не поверил. Но скачав вчерашнюю базу сам в этом убедился , увидев дробные кол-ва там где их быть не должно. Вот такой примерно код cls n:=0 @ 10,10 get n picture "999999.999" valid test(n) read ? n wait ************** Func test(n) local ret:=.t. if right(transform(n,"999999.999"),4)#".000" alert("BAD") ret:=.f. endif return ret
|
|
|
Новых ответов нет
[см. все]
|
|
|
| постоянный участник
|
Пост N: 2238
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.06.12 09:53. Заголовок: Dima пишет: Но иног..
Dima пишет: цитата: | Но иногда находятся люди которые эту проверку обходят загадочным образом. |
| Да эти юзера кого хошь достанут. И у меня такое бывает.... Даже не пытался разбираться у себя.
|
|
|
|
| Администратор
|
Пост N: 2386
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.06.12 11:16. Заголовок: Dima пишет: Но иног..
Dima пишет: цитата: | Но иногда находятся люди которые эту проверку обходят загадочным образом. |
| Мне этот фокус показывали еще в 90-е годы. Хитрые юзера просекли, что, если нажать alt+c, то программа закроется, и сумма в поле сохранится. Правда, это сработает, если редактируется не промежуточная переменная, а непосредственно поле.
|
|
|
|
| |
Пост N: 2412
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.06.12 11:18. Заголовок: Pasha пишет: Правда..
Pasha пишет: цитата: | Правда, это сработает, если редактируется не промежуточная переменная, а непосредственно поле. |
| Да у меня редактируется поле , но так же и объявлено Setcancel(.f.)
|
|
|
|
| |
Пост N: 2413
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.06.12 11:48. Заголовок: Pasha Ты навел меня..
Pasha Ты навел меня на мысль ;) Кажется понял в чем дело. У меня в программе если зайти в нее с мастер паролем , у юзера появляется возможность выбросить другого юзера из программы. После того как инициирован выброс , "жертва" получает: Dbcommitall() close all quit И в этом случае в таком поле может оказаться дробное кол-во , если юзер ввел именно дробное кол-во , но VALID еще не сработал.
|
|
|
|
| Администратор
|
Пост N: 2387
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.06.12 11:49. Заголовок: Есть еще волшебная к..
Есть еще волшебная кнопка reset
|
|
|
|
| |
Пост N: 232
Зарегистрирован: 11.10.11
|
|
Отправлено: 14.06.12 15:45. Заголовок: На мой взгляд в прог..
На мой взгляд в программе имеется неправильный дизайн. Если вы не хотите, чтобы была дробная часть, то и не надо вообще предоставлять шаблон ввода, позволяющий вводить дробные числа. То есть в зависимости от некоторых заранее определенных условий вы должны предоставлять пользователю тот или иной шаблон ввода данных, который не позволит ему нарушить эти условия.
|
|
|
|
| |
Пост N: 2414
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.06.12 15:48. Заголовок: Сыроежка пишет: То ..
Сыроежка пишет: цитата: | То есть в зависимости от некоторых заранее определенных условий вы должны предоставлять пользователю тот или иной шаблон ввода данных, который не позволит ему нарушить эти условия. |
| Уже переделал.
|
|
|
|