Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Значение поля - только определенные величины


lookin ©   (2006-09-10 01:42:00) 

Как сделать так, чтобы в данном поле БД можно было вводить лишь определенные значения? Например, есть поле типа string, но значение этого поля может принимать лишь значения 'first', 'second' и 'three'. Следует ли копать в сторону Lookup****?

Заранее благодарю за ответ.


lookin   (2006-09-14 15:43:00) [1]

Всем спасибо, я решил обе проблемы.


Shaman_   (2006-09-13 19:18:00) [2]

ANB ©
согласен, стормозил немного :)


ANB   (2006-09-13 19:09:00) [3]


> Да нет, лучше именно на TTable.OnBeforeEdit и TTable.OnBeforeInsert

И каким образом эти события помогут ?
Проверял хоть, когда они срабатывают ?


term1t   (2006-09-13 18:51:00) [4]

может и не в ту степь, но...
ограничений никаких нельзя на поля наложить? в Оракле есть Constraint-ы..
что-от типа

Alter table Table_name add
(
constraint Constraint_name CHECK (field_name IN ('value1', 'value2'...))
)


Shaman_   (2006-09-11 17:04:00) [5]

ANB ©   (11.09.06 15:36) [11]
Да нет, лучше именно на TTable.OnBeforeEdit и TTable.OnBeforeInsert это не даст возможность указать недопустимых значений еще на этапе редактирования записи как ручного, так и через DB объекты и предотвратит нахождение временных неверных записей в наборе данных


lookin   (2006-09-11 16:57:00) [6]

[9] evvcom ©   (11.09.06 14:22)
>>можешь на 0/1 и т.д. При отображении же на клиенте (в гриде) вместо 0 и
>>1 можешь подставить свои м/ж.

Спасибо, не пришел такой вариант в голову.


ANB   (2006-09-11 15:36:00) [7]


> TTable.OnBeforeEdit
> TTable.OnBeforeInsert

Эта. Эти события генерятся в ответ на Edit или Insert. Т.е. еще до помещения значений в поля. Тут уж лучше на Post вешать.


Shaman_   (2006-09-11 15:33:00) [8]

Может я не совсем понял сабж.
Почему бы не осуществлять контроль вносимых изменений при Редактировании/Вставки записей?
TTable.OnBeforeEdit
TTable.OnBeforeInsert


evvcom   (2006-09-11 14:22:00) [9]

> [8] Shaman_ ©   (10.09.06 19:30)

Какой MySQL, если ttParadox?

> [7] lookin ©   (10.09.06 02:55)
> не исключено, что я просто смешиваю и путаю понятия

Ну так книжку почитай.

> [6] lookin ©   (10.09.06 02:55)
> я мог присваивать лишь эти значения (т.е. "м" и "ж").

В DataBase Desktop при создании/модификации таблицы есть возможность создать/изменить некоторые свойства проверки ограничений. Можешь проверять на "мы" и "жо" (first/second), а можешь на 0/1 и т.д. При отображении же на клиенте (в гриде) вместо 0 и 1 можешь подставить свои м/ж.


Shaman_   (2006-09-10 19:30:00) [10]

Если СУБД позволяет, можно использовать перечисляемый тип. Допустим enum поля в MySQL


lookin   (2006-09-10 02:55:00) [11]

Еще добавлю, что не исключено, что я просто смешиваю и путаю понятия. Потому и путано объясняю, и потому и может возникнуть мысль, что подколка...


lookin   (2006-09-10 02:55:00) [12]

[5] Германн ©   (10.09.06 02:34)

>>Подколка?
Я бы не стал так подкалывать))
Я не знаю, как влияет Table.TableType на поведение таблицы, но у меня стоит ttParadox.

Данные ввожу в связке TTable-TDataSource-TDBGrid
Совершенно конкретно все выглядит так. Я генерирую табличные данные (13 полей), из них первое = Required = номер, а все остальные - строки. Но, например, поле №2 (пол) может принимать лишь два значения - "м" и "ж". Хотелось бы сделать так, чтобы при работе с таблицей (с БД) я мог присваивать лишь эти значения (т.е. "м" и "ж"). Далее, как и говорил, при работе в DBGrid новая запись не снабжается номером (который должен быть, так как Required).

Не уверен, что внятно объяснил, готов ответить шире, лишь бы были вопросы.


Германн   (2006-09-10 02:34:00) [13]


> lookin ©   (10.09.06 02:08) [4]
>
> Толком не скажу. Стандартный TTable, тип ttParadox
>

Олег, это что? Подколка?
Разве
> тип ttParadox
не определяет всё?
Тогда уточни что есть
> чтобы в данном поле БД можно было вводить лишь определенные
> значения?
Как и в каком компоненте ты вводишь данные?


lookin   (2006-09-10 02:08:00) [14]

Толком не скажу. Стандартный TTable, тип ttParadox


Германн   (2006-09-10 02:04:00) [15]

Это вопрос про любуюБД?


lookin   (2006-09-10 01:56:00) [16]

Так или иначе - ткните носом, где смотреть. У меня интуиция не работает, где смотреть нужное...


lookin   (2006-09-10 01:49:00) [17]

И также есть вопрос по поводу поля Required. В БД первое поле (номер) является Required. Но при работе с БД, выгруженной в DBGrid, при добавлении новой записи (средствами DBGrid, иначе говоря, при нажатии DownKey при нахождении на последней существующей записи) это первое поле (номер) не заполняется. Больше того, изменения сохраняются в БД и при повторной загрузке поле "Номер" для добавленных записей не изменяется. Несмотря на Required.

Заранее спасибо.


Наверх

Титульная страница Поиск, карта сайта Написать письмо