|
|
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
надо ограничить ввод данных в определённые поля, при условии что в одном из ряда таких полей есть запись- для нерадивых юзверей. т.е если в поле А написали 123456, то в поле В, С, D и так далее никаких таких 123456 ,145789 записей быть не должно. надеюсь на вашу помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2003, 13:46 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
делай проверку на afterUpdate какого-то главного поля например если введённое значение не соответствует заданным критериям то полям а,в,с и т.д можно установить св-во enabled=false (только не забудь обратно отменять если подходят) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2003, 13:56 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Tatiana, если в данное поле введено значение, то нельзя ему делать Enabled=False, потому что будет невозможно исправить. Вопрос, разрешается ли задать одинаковые значения временно, на одну секунду, на момент исправления. Например, я занес значения, а потом два из них хочу поменять местами, и мне для этого надо в поле А занести значение из поля Б, а потом в Б прежнее из А. Если такое разрешается, то надо проверять в BeforeUpdate всей формы (и если что-то не сходится, то Cancel=True). А если запрещено, то в BeforeUpdate каждого поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2003, 14:17 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Саныч, частично я согласна такое решение я привела как пример: например если введённое значение не соответствует мне не совсем понятно что означает " надо ограничить ввод данных в определённые поля, при условии что в одном из ряда таких полей есть запись" т, е не сказано чётко что требуется сделать 1)может она хочет проверять если в поле1 что-то есть и в зависимости от этого что-то в поле2-поле10 запретить ввод 2) проверять если в поле1 что-то есть проверять каждое поле2-поле10 на корректность значений закрывая доступ к полю пока не заполнены предыдущие 3) если не заполнено или не корректное значение в поле1 то закрыть доступ/ввод значений в поле2-поле10 я думаю что и ты можешь привести мне не меньше 3 вариантов как-ты понял что хочет автор вопроса т.е автор должен уточнить что она подразумевает под фразой надо ограничить ввод данных в определённые поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2003, 15:02 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Похоже, что я действительно невнимательно прочитал вопрос. Я подумал, что запрещено вводить одинаковые значения в два поля. Сейчас перечитал еще раз и понял, что все написано однозначно: все поля кроме одного обязаны быть пустыми. Но тогда остается в силе мой совет: если разрешено нарушать это ограничение на период редактирования записи, то проверяем в BeforeUpdate всей записи (и если что-то не так, то кричим), а если запрещено, то в BeforeUpdate каждого поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2003, 15:34 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
именно это я и хочу сделать - )может она хочет проверять если в поле1 что-то есть и в зависимости от этого что-то в поле2-поле10 запретить ввод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2003, 15:59 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Тогда права Татьяна. Тогда можно поставить на AfterUpdate каждого поля: If IsNull(этополе) Then всеполя.Enabled = True Else всеполякромеэтого.Enabled = False этополе.Enabled = True End If А кроме того, на OnCurrent формы надо поставить (чтобы поля запирались нужным образом до первого редактирования): For Each ... очередноеполе.Enabled = Not IsNull(оноже) Next ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2003, 16:56 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Моя ошибка. На OnCurrent надо так: If IsNull(всеполя) Then всеполя.Enabled = True Else For Each ... очередноеполе.Enabled = Not IsNull(оноже) Next End If ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2003, 23:19 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Саныч, по моему ты опять неправ именно это я и хочу сделать - может она хочет проверять если в поле1 что-то есть и в зависимости от этого что-то в поле2-поле10 запретить ввод Тогда надо 1. На событии Current в зависимости от наличия/отсутствия значения в Поле1 запрещать/разрешать ввод данных в Поле2-Поле10 2. На AfterUpdate Поля1 - делать то же, что и в п.1 3. Кроме того, на AfterUpdate Поля2-Поля10 разрешать/запрещать редактирование Поля1 в зависимости от того, есть ли значения хотя бы в одном из полей Поле2-Поле10 4. На каждом AfterUpdate каждого поля я бы сделал принудительное сохранение записи (Me.Dirty = False). Просто так, на всякий случай. 5. Совсем несясно что делать, если к нам пришла запись, в которой заполнены и Поле1, и какие-либо другие поля (2-10). С одной стороны Поле2-10 нередактируемы (непустое значение в Поле1), с другой стороны Поле1 тоже не редактируемо (непустые значения в Поле2-10). Такую ситуацию надо отлавливать и или лечить автоматом, или спрашивать у пользователя что делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 12:06 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Щас буду отмазываться. 1 и 2. Я различаю две ситуации: либо все поля пусты (и тогда надо их все открыть), либо одно заполнено (и тогда открытым должно быть только оно). 3. Так и сделано. 4. Ну, пусть будет так. 5. Возможно. Хотя такая ситуация возникнуть не должна. По моей программе в таком случае все заполненные поля будут доступны для редактирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 20:57 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Саныч, да ты не отмазывайся Ты дал правильное решение, но не той задачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 21:04 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Дык у нас с тобой разница только в подходе к случаю, когда все поля пусты. Я в этом случае открываю их все и даю возможность заполнить любое из них (и после АфтерАпдейта все кроме этого поля закроются), а ты в этом же случае закрываешь их все и лишаешь юзера возможности редактировать что бы то ни было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 21:09 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Кстати, ту задачу, которую ты решал (т.е. непустое значение может быть только в одном поле, неважно каком), можно сделать принципиально по другому. Все поля всегда открыты, на AfterUpdate любого поля если новое значение - не Null, то сбрасываем в Null все остальные поля. В принципе постановке задачи удовлетворяет ( "если в поле А написали 123456, то в поле В, С, D и так далее никаких таких 123456 ,145789 записей быть не должно" - вот их и не будет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 21:10 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Да, можно и через так, но я бы добавил запрашивание подтверждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 21:13 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Это зависит от того, насколько неудобным надо сделать для пользователя изменение данных. Можно ведь и по твоему - удалил данные из одного поля, забил данные в нужное. Можно по моему без подтверждения - забил данные, понял что ошибся и начал вспоминать "А что же там было то?" Можно по моему, но с подтверждением - забил данные в нужное поле, на автомате нажал "Да", начал матерится и вспоминать "А что жа там было то?" Это уже надо выбирать между удобством ввода и ценностью редактируемых даных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 21:22 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
А на мое 21:09? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 21:23 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
И еще один вариант решения. Вместо ряда полей, среди которых все кроме одного остаются пусты, гораздо лучше завести всего два поля, чтобы в одном сидело значение, а в другом его смысл. Например: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2003, 00:41 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
а на твое 21:09 (извиняй, сразу не заметил) - неправду говоришь Я в этом случае открываю их все и даю возможность заполнить любое из них (и после АфтерАпдейта все кроме этого поля закроются), а ты в этом же случае закрываешь их все Ни откуда такое заявление не следует Вот если заполнено поле1 и еще какое-нибудь (в моем решение от 12:06), тогда все поля закрыты. да и вообще это невозможная ситуация, ее быть не должно. Просто в моем случае ее не поправить никак. Поэтому там собстно п.5 и присутствует. на твое 00:41 оно может и правильней, но ни фига не влазит в реляционную структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2003, 01:04 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
А может и влазит. Надо уже по задаче смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2003, 01:06 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
> Ни откуда такое заявление не следует Тогда расскажи, в чем разница между нашими мировоззрениями на эту задачу. > но ни фига не влазит в реляционную структуру. Я не знаю, кто такой реляционная структура, но это же классический случай применения перекрестного запроса. По моей системе храним данные, а если надо их представить в виде 4 полей, то делаем перекрестный запрос. Это в какую-то структуру влазит? Кстати, автоматом получается, что значение только в одном поле. А если понадобится разрешить значение в больше чем одном поле, то просто начинаем добавлять записи с разными значениями поля "Смысл". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2003, 01:21 |
|
||
|
ограничение ввода данных.
|
|||
|---|---|---|---|
|
#18+
Тогда расскажи, в чем разница между нашими мировоззрениями на эту задачу. В моем мировозрении Поле1 выделено по сравнению с полями 2-10. Если в нем что-то есть - в других ничего нет (что было сказано в условии задачи). Если в нем ничего нет - хз, раз ничего не сказано, то в других может быть все что угодно. В твоем - поля равноценны, но данные только в одном. И хрен его знает что подразумевала автор вопроса По поводу "влазит-не влазит" и "входит и выходит" Что такое перекрестный запрос я знаю. И что такое вертикальная структура хранения - тоже. Представь что у тебя значения в полях - ссылки на другие сущности. Если какие-нибудь джойны ты еще сумеешь построить, то ссылочную целостность уже никак (если ссылки на разные таблицы) А еще представь, что значения разных типов. Как ты их будешь хранить? В поле Memo? Кучу разных сущностей запихнуть в один столбец - это даже первой нормальной формы не получается никак. Тип поля описывается значением другого поля - теоретики баз данных в гробу бы перевернулись И ни условий на значения, ни значений по умолчанию, ни осмысленных индексов. Хотя быть может (в зависимости от смысла данных) вертикальная структура здесь и применима. Я же говорю - по задаче надо смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2003, 01:55 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32297436&tid=1678786]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 431ms |

| 0 / 0 |
