Форум: "Базы";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизЗначение поля - только определенные величины Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c