Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

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

 
lookin ©   (2006-09-10 01:42) [0]

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

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


 
lookin ©   (2006-09-10 01:49) [1]

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

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


 
lookin ©   (2006-09-10 01:56) [2]

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


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

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


 
lookin ©   (2006-09-10 02:08) [4]

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


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


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

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


 
lookin ©   (2006-09-10 02:55) [6]

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

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

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

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


 
lookin ©   (2006-09-10 02:55) [7]

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


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

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


 
evvcom ©   (2006-09-11 14:22) [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-11 15:33) [10]

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


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


> TTable.OnBeforeEdit
> TTable.OnBeforeInsert

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


 
lookin ©   (2006-09-11 16:57) [12]

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

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


 
Shaman_ ©   (2006-09-11 17:04) [13]

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


 
term1t ©   (2006-09-13 18:51) [14]

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

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


 
ANB ©   (2006-09-13 19:09) [15]


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

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


 
Shaman_ ©   (2006-09-13 19:18) [16]

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


 
lookin ©   (2006-09-14 15:43) [17]

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



Страницы: 1 вся ветка

Текущий архив: 2006.11.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.05 c
2-1161786196
Kos135
2006-10-25 18:23
2006.11.12
Создание компонента Delphi по шелчку мыши


15-1161497227
*Стажер*
2006-10-22 10:07
2006.11.12
"Защита от дураков"


2-1162137894
vvh
2006-10-29 19:04
2006.11.12
Создание встроенного языка


15-1161818872
RAM
2006-10-26 03:27
2006.11.12
Ассоциации с цифрами Помогите прогуглить ?


2-1162109729
Серый
2006-10-29 11:15
2006.11.12
Поле Memo