Главная страница
    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.04 c
4-1151394771
Lagrima_JN
2006-06-27 11:52
2006.11.12
Эмуляция "клика" на компоненте формы.


15-1161626515
Layner
2006-10-23 22:01
2006.11.12
А кто знает, как троллейбусы перекл. с ветки на ветку?


2-1162129071
AlexanderMS
2006-10-29 16:37
2006.11.12
Hint к строке состояния (StatusBar).


2-1161669390
Sergey_b
2006-10-24 09:56
2006.11.12
Перетаскивание


2-1162064129
Yya
2006-10-28 23:35
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский