Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ограничение ввода данных. / 21 сообщений из 21, страница 1 из 1
18.10.2003, 13:46
    #32297395
DJulia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
надо ограничить ввод данных в определённые поля, при условии что в одном из ряда таких полей есть запись- для нерадивых юзверей.

т.е если в поле А написали 123456, то в поле В, С, D и так далее никаких таких 123456 ,145789 записей быть не должно.

надеюсь на вашу помощь.
...
Рейтинг: 0 / 0
18.10.2003, 13:56
    #32297401
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
делай проверку на afterUpdate какого-то главного поля
например если введённое значение не соответствует заданным критериям то полям а,в,с и т.д можно установить св-во enabled=false

(только не забудь обратно отменять если подходят)
...
Рейтинг: 0 / 0
18.10.2003, 14:17
    #32297410
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Tatiana, если в данное поле введено значение, то нельзя ему делать Enabled=False, потому что будет невозможно исправить.

Вопрос, разрешается ли задать одинаковые значения временно, на одну секунду, на момент исправления. Например, я занес значения, а потом два из них хочу поменять местами, и мне для этого надо в поле А занести значение из поля Б, а потом в Б прежнее из А. Если такое разрешается, то надо проверять в BeforeUpdate всей формы (и если что-то не сходится, то Cancel=True). А если запрещено, то в BeforeUpdate каждого поля.
...
Рейтинг: 0 / 0
18.10.2003, 15:02
    #32297422
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Саныч, частично я согласна
такое решение я привела как пример:
например если введённое значение не соответствует

мне не совсем понятно что означает " надо ограничить ввод данных в определённые поля, при условии что в одном из ряда таких полей есть запись"
т, е не сказано чётко что требуется сделать
1)может она хочет проверять если в поле1 что-то есть и в зависимости от этого что-то в поле2-поле10 запретить ввод
2) проверять если в поле1 что-то есть проверять каждое поле2-поле10 на корректность значений закрывая доступ к полю пока не заполнены предыдущие
3) если не заполнено или не корректное значение в поле1 то закрыть доступ/ввод значений в поле2-поле10

я думаю что и ты можешь привести мне не меньше 3 вариантов как-ты понял что хочет автор вопроса

т.е автор должен уточнить что она подразумевает под фразой надо ограничить ввод данных в определённые поля
...
Рейтинг: 0 / 0
18.10.2003, 15:34
    #32297436
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Похоже, что я действительно невнимательно прочитал вопрос. Я подумал, что запрещено вводить одинаковые значения в два поля. Сейчас перечитал еще раз и понял, что все написано однозначно: все поля кроме одного обязаны быть пустыми. Но тогда остается в силе мой совет: если разрешено нарушать это ограничение на период редактирования записи, то проверяем в BeforeUpdate всей записи (и если что-то не так, то кричим), а если запрещено, то в BeforeUpdate каждого поля.
...
Рейтинг: 0 / 0
18.10.2003, 15:59
    #32297453
DJulia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
именно это я и хочу сделать -

)может она хочет проверять если в поле1 что-то есть и в зависимости от этого что-то в поле2-поле10 запретить ввод
...
Рейтинг: 0 / 0
18.10.2003, 16:56
    #32297478
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Тогда права Татьяна. Тогда можно поставить на AfterUpdate каждого поля:

If IsNull(этополе) Then
всеполя.Enabled = True
Else
всеполякромеэтого.Enabled = False
этополе.Enabled = True
End If

А кроме того, на OnCurrent формы надо поставить (чтобы поля запирались нужным образом до первого редактирования):

For Each ...
очередноеполе.Enabled = Not IsNull(оноже)
Next
...
Рейтинг: 0 / 0
18.10.2003, 23:19
    #32297609
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Моя ошибка. На OnCurrent надо так:

If IsNull(всеполя) Then
всеполя.Enabled = True
Else
For Each ...
очередноеполе.Enabled = Not IsNull(оноже)
Next
End If
...
Рейтинг: 0 / 0
19.10.2003, 12:06
    #32297678
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Саныч, по моему ты опять неправ
именно это я и хочу сделать -
может она хочет проверять если в поле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). Такую ситуацию надо отлавливать и или лечить автоматом, или спрашивать у пользователя что делать.
...
Рейтинг: 0 / 0
19.10.2003, 20:57
    #32297801
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Щас буду отмазываться.

1 и 2. Я различаю две ситуации: либо все поля пусты (и тогда надо их все открыть), либо одно заполнено (и тогда открытым должно быть только оно).

3. Так и сделано.

4. Ну, пусть будет так.

5. Возможно. Хотя такая ситуация возникнуть не должна. По моей программе в таком случае все заполненные поля будут доступны для редактирования.
...
Рейтинг: 0 / 0
19.10.2003, 21:04
    #32297802
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Саныч, да ты не отмазывайся
Ты дал правильное решение, но не той задачи
...
Рейтинг: 0 / 0
19.10.2003, 21:09
    #32297803
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Дык у нас с тобой разница только в подходе к случаю, когда все поля пусты. Я в этом случае открываю их все и даю возможность заполнить любое из них (и после АфтерАпдейта все кроме этого поля закроются), а ты в этом же случае закрываешь их все и лишаешь юзера возможности редактировать что бы то ни было.
...
Рейтинг: 0 / 0
19.10.2003, 21:10
    #32297804
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Кстати, ту задачу, которую ты решал (т.е. непустое значение может быть только в одном поле, неважно каком), можно сделать принципиально по другому. Все поля всегда открыты, на AfterUpdate любого поля если новое значение - не Null, то сбрасываем в Null все остальные поля. В принципе постановке задачи удовлетворяет ( "если в поле А написали 123456, то в поле В, С, D и так далее никаких таких 123456 ,145789 записей быть не должно" - вот их и не будет)
...
Рейтинг: 0 / 0
19.10.2003, 21:13
    #32297805
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Да, можно и через так, но я бы добавил запрашивание подтверждения.
...
Рейтинг: 0 / 0
19.10.2003, 21:22
    #32297807
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Это зависит от того, насколько неудобным надо сделать для пользователя изменение данных.

Можно ведь и по твоему - удалил данные из одного поля, забил данные в нужное.
Можно по моему без подтверждения - забил данные, понял что ошибся и начал вспоминать "А что же там было то?"
Можно по моему, но с подтверждением - забил данные в нужное поле, на автомате нажал "Да", начал матерится и вспоминать "А что жа там было то?"

Это уже надо выбирать между удобством ввода и ценностью редактируемых даных.
...
Рейтинг: 0 / 0
19.10.2003, 21:23
    #32297808
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
А на мое 21:09?
...
Рейтинг: 0 / 0
20.10.2003, 00:41
    #32297837
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
И еще один вариант решения. Вместо ряда полей, среди которых все кроме одного остаются пусты, гораздо лучше завести всего два поля, чтобы в одном сидело значение, а в другом его смысл. Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
как было    как лучше

А Б В Г       знач. смысл
 7               7      А
   5             5      Б
   9             9      Б
       2         2      Г
...
Рейтинг: 0 / 0
20.10.2003, 01:04
    #32297841
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
а на твое 21:09 (извиняй, сразу не заметил) - неправду говоришь
Я в этом случае открываю их все и даю возможность заполнить любое из них (и после АфтерАпдейта все кроме этого поля закроются), а ты в этом же случае закрываешь их все
Ни откуда такое заявление не следует

Вот если заполнено поле1 и еще какое-нибудь (в моем решение от 12:06), тогда все поля закрыты. да и вообще это невозможная ситуация, ее быть не должно. Просто в моем случае ее не поправить никак. Поэтому там собстно п.5 и присутствует.

на твое 00:41
оно может и правильней, но ни фига не влазит в реляционную структуру.
...
Рейтинг: 0 / 0
20.10.2003, 01:06
    #32297842
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
А может и влазит. Надо уже по задаче смотреть.
...
Рейтинг: 0 / 0
20.10.2003, 01:21
    #32297845
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
> Ни откуда такое заявление не следует

Тогда расскажи, в чем разница между нашими мировоззрениями на эту задачу.

> но ни фига не влазит в реляционную структуру.

Я не знаю, кто такой реляционная структура, но это же классический случай применения перекрестного запроса. По моей системе храним данные, а если надо их представить в виде 4 полей, то делаем перекрестный запрос. Это в какую-то структуру влазит? Кстати, автоматом получается, что значение только в одном поле.

А если понадобится разрешить значение в больше чем одном поле, то просто начинаем добавлять записи с разными значениями поля "Смысл".
...
Рейтинг: 0 / 0
20.10.2003, 01:55
    #32297850
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение ввода данных.
Тогда расскажи, в чем разница между нашими мировоззрениями на эту задачу.
В моем мировозрении Поле1 выделено по сравнению с полями 2-10. Если в нем что-то есть - в других ничего нет (что было сказано в условии задачи). Если в нем ничего нет - хз, раз ничего не сказано, то в других может быть все что угодно.
В твоем - поля равноценны, но данные только в одном.
И хрен его знает что подразумевала автор вопроса

По поводу "влазит-не влазит" и "входит и выходит"
Что такое перекрестный запрос я знаю. И что такое вертикальная структура хранения - тоже.
Представь что у тебя значения в полях - ссылки на другие сущности. Если какие-нибудь джойны ты еще сумеешь построить, то ссылочную целостность уже никак (если ссылки на разные таблицы)
А еще представь, что значения разных типов. Как ты их будешь хранить? В поле Memo?
Кучу разных сущностей запихнуть в один столбец - это даже первой нормальной формы не получается никак. Тип поля описывается значением другого поля - теоретики баз данных в гробу бы перевернулись
И ни условий на значения, ни значений по умолчанию, ни осмысленных индексов.
Хотя быть может (в зависимости от смысла данных) вертикальная структура здесь и применима. Я же говорю - по задаче надо смотреть.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ограничение ввода данных. / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]