Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.042 c
9-1138866264
Nic
2006-02-02 10:44
2006.11.12
Как проверить установлена DirectX в системе и если нет, то...


2-1161927953
ГореПрограммер
2006-10-27 09:45
2006.11.12
Колличество элементов динамического массива


15-1161653886
partizan
2006-10-24 05:38
2006.11.12
Встроенный ассемблер


11-1138000587
Barloggg
2006-01-23 10:16
2006.11.12
История. MMTimer!!!


15-1161867385
TIF
2006-10-26 16:56
2006.11.12
Про реестр





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский