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

Вниз

Определить Null или Not Null Поле в БД   Найти похожие ветки 

 
Кевларвестов Семен   (2007-07-12 15:29) [0]

Доброго дня!
Не подскажите, можно ли как-то в Delphi определить является поле БД Null или Not Null?


 
Rip_1982 ©   (2007-07-12 15:32) [1]

Конкретизируй! Тебе надо узнать есть ли такое поле, или узнать есть ли там данные?


 
Ega23 ©   (2007-07-12 15:32) [2]

Тебе наличие constraint? Если да, то в общем случае - нельзя.


 
Сергей М. ©   (2007-07-12 15:33) [3]


> поле БД


В БД нет полей.
Поля есть в записи.
Записи есть НД.
НД представлен, например, объектом TDataSet.
Объект TDataSet имеет св-во-коллекцию Fields.
Каждый элемент этой коллекции имеет св-во Value - его и необходимо/достаточно сравнивать с Null


 
Ega23 ©   (2007-07-12 15:34) [4]


> В БД нет полей.


вообще-то есть...  :)


 
Сергей М. ©   (2007-07-12 15:36) [5]


> вообще-то есть


Где ?)

Открой для меня, если не трудно, эту америку)


 
Игорь Шевченко ©   (2007-07-12 15:36) [6]


> Не подскажите, можно ли как-то в Delphi определить является
> поле БД Null или Not Null?


Свойство TField.Required установлено в true если поле Not Null и в False, если Null


 
Rip_1982 ©   (2007-07-12 15:37) [7]

Во превых в БД есть поля! Запись - это структура данных! Поле - это составляющая структуры! Во вторых если у тебя тип поля строковой у по умолчанию его значение = "-" (для примера) то ты не можешь его сравнить с null!


 
Сергей М. ©   (2007-07-12 15:38) [8]

Кто про что)

Один про данные, другой про метаданные)

А автор и в ус не дует)


 
Сергей М. ©   (2007-07-12 15:39) [9]


> Поле - это составляющая структуры


Структуры чего ?


 
Rip_1982 ©   (2007-07-12 15:54) [10]

Структуры данных. Создай БД своего типа и поймешь! БД - это по сути структированный файл!


 
Сергей М. ©   (2007-07-12 15:58) [11]


> БД - это по сути структированный файл


Опа !
Открытие, достойное колумбового)

Снимаю пред тобой шляпу, о великий открыватель)


 
Rip_1982 ©   (2007-07-12 16:00) [12]


> Сергей М

Не умничай. Если имеешь друое мнение - обоснуй!


 
Ega23 ©   (2007-07-12 16:01) [13]


> БД - это по сути структированный файл!


Красиво.


 
Rip_1982 ©   (2007-07-12 16:02) [14]


> Красиво.

А что это по твоему?


 
Сергей М. ©   (2007-07-12 16:06) [15]


> Rip_1982 ©   (12.07.07 16:00) [12]


Изволь)

"База данных (БД) — централизованное хранилище данных, обеспечивающее хранение, доступ, первичную обработку и поиск информации"

(с) Википедия

У меня нет ни малейших поводов не согласиться с такой формулировкой)

А у тебя, видимо, есть).. Вот и обоснуй)


 
Сергей М. ©   (2007-07-12 16:10) [16]


> Rip_1982


Только при обосновании не забудь, что речь идет о "вобщем-то" (см. [4]), а не о "в частности")


 
Rip_1982 ©   (2007-07-12 16:14) [17]


> Сергей М.

Это ты в книжке прочитал? :)
Хранение, доступ, поиск и первичную обработку данных осуществляет СУБД!
А данные (И ОПИСАНИЕ ПОЛЕЙ) храняться в файлах имеющих определенную структуру, зависящую от типа БД.


 
Сергей М. ©   (2007-07-12 16:24) [18]


> Это ты в книжке прочитал?


В какой еще книжке ? Википедия, см. выше)


> данные (И ОПИСАНИЕ ПОЛЕЙ) храняться в файлах имеющих определенную
> структуру, зависящую от типа БД


А у меня нет никаких данных)

У меня, к примеру, в контейнере хранятся метаданные одной-единственной созданной мной селективной ХП, и эта ХП формирует мне НД "на лету")


 
Сергей М. ©   (2007-07-12 16:28) [19]


> Хранение.. осуществляет СУБД


Хранение как раз осуществляет именно БД, точнее контейнер в ее составе.


 
Rip_1982 ©   (2007-07-12 16:28) [20]


> Сергей М. ©   (12.07.07 16:24) [18]

Если нет данных, накой тебе БД? :)


 
Сергей М. ©   (2007-07-12 16:35) [21]


> Rip_1982 ©   (12.07.07 16:28) [20]



> Если нет данных, накой тебе БД?


Ты чем слушаешь-то ?)

Я ж говорю - у меня есть ХП, она мне и формирует НД прямо "на ходу")

Ы ?


 
Rip_1982 ©   (2007-07-12 16:38) [22]


> А у меня нет никаких данных)

Это же твои слова! :)
С чего ты взал что у него такой же расклад?


 
Rip_1982 ©   (2007-07-12 16:40) [23]

У тебя в НД сколько полей?


 
Игорь Шевченко ©   (2007-07-12 16:45) [24]

Может вам в чат ?


 
Rip_1982 ©   (2007-07-12 16:50) [25]

Удалено модератором
Примечание: Хорошо, не хочешь в чат и не надо, но не удивляйся


 
Сергей М. ©   (2007-07-12 16:51) [26]


> У тебя в НД сколько полей?


Да сколько бы их ни было !

Какое отношение в дан.случае этот НД имеет к таблице как объекту БД (каковой и в помине не существует) и тем более к какой-то там "структурированности" файла-контейнера этой БД ?

Поле есть у НД.
Поле есть у таблицы.

А у БД в общем случае никаких полей нет.

С определенной степенью ассоциации можно говорить лишь о частном случае, когда контейнер БД состоит из одного файла, хранящего данные и метаданные одного-единственного объекта этой БД - таблицы.

Так вот и непонятно, что таки интересует автора - то ли констрейнты в составе метаданных, то ли сами значения данных)

И давай уже не умничай, ок ?)


 
Rip_1982 ©   (2007-07-12 16:53) [27]

Удалено модератором


 
Сергей М. ©   (2007-07-12 16:53) [28]


> Игорь Шевченко ©   (12.07.07 16:45) [24]


Ты, Игорь, нас лучше в "Потрепаловку" упеки)

Самое там и место нам)


 
Сергей М. ©   (2007-07-12 16:55) [29]


> Rip_1982 ©   (12.07.07 16:53) [27]


> Но ты тоже


А я что ?)

Я токмо пытался расставить извилины автора на свои места)


 
Johnmen ©   (2007-07-12 16:57) [30]


> Но ты тоже

А он первый начал! (с)
А ты, а ты...  (с)


 
Rip_1982 ©   (2007-07-12 16:57) [31]

Удалено модератором


 
Rip_1982 ©   (2007-07-12 16:59) [32]

Удалено модератором


 
Сергей М. ©   (2007-07-12 17:02) [33]


> Johnmen ©   (12.07.07 16:57) [30]


Типо "А вот и не подеретесь !", да, Женя ?)


> Rip_1982 ©   (12.07.07 16:57) [31]
> Автору кажется все равно


Судя по отсутствию рефлексов, ему похоже не то что "все равно" - ему монопенисуально)


 
Сергей М. ©   (2007-07-12 17:05) [34]


> Rip_1982 ©   (12.07.07 16:59) [32]
> БД Interbase может состоять из 1-го файла и включать несколько
> таблиц!


А то мы не знаем)

Причем, оная вправе содержать ни одной пользовательской таблицы.

Ты там.. это.. с восклицаниями в конце "откровений" подрегулируй у себя, хорошо ?)


 
Rip_1982 ©   (2007-07-12 17:07) [35]

Удалено модератором


 
Сергей М. ©   (2007-07-12 17:10) [36]

Удалено модератором


 
Rip_1982 ©   (2007-07-12 17:12) [37]

Удалено модератором


 
Сергей М. ©   (2007-07-12 17:13) [38]


> Это ты о чем?


Ну как о чем ?

Об, imho, явно неумеренном употреблении тобой символа !)


 
Rip_1982 ©   (2007-07-12 17:14) [39]

Сори, привычка. Буду исправляться. :)


 
Сергей М. ©   (2007-07-12 17:15) [40]


> Rip_1982 ©   (12.07.07 17:14) [39]


засим откланиваюсь и ... ждем-с автора шедевра )


 
Johnmen ©   (2007-07-12 17:26) [41]

Вообще-то меня вот это напрягло
> Rip_1982 ©   (12.07.07 15:37) [7]
> Во превых в БД есть поля!
можно пример?
Или это типа "вещество состоит из протонов"?


 
Rip_1982 ©   (2007-07-12 17:29) [42]

Удалено модератором


 
Johnmen ©   (2007-07-12 17:37) [43]


> Rip_1982 ©   (12.07.07 17:29) [42]

Оба-на...
А это о чём :
> Rip_1982 ©   (12.07.07 15:54) [10]
> БД - это по сути  структированный файл!

и
>Rip_1982 ©   (12.07.07 16:59) [32]
>БД Interbase может состоять из 1-го файла и включать несколько таблиц!

?


 
Rip_1982 ©   (2007-07-12 17:39) [44]

Удалено модератором


 
StriderMan ©   (2007-07-12 17:40) [45]

.IsNull?


 
Johnmen ©   (2007-07-12 17:44) [46]


> Rip_1982 ©   (12.07.07 17:39) [44]

Мне не понятно твоё представление о том, что есть
1. БД
2. Таблица
3. Поле
и твоё понимание их содержания.
И что означает фраза "в файлах БД хранятся описания полей" с т.з. логической структуры?


 
Rip_1982 ©   (2007-07-12 17:51) [47]

Удалено модератором


 
iXT ©   (2007-07-12 17:57) [48]

Ну что вы напали на человека. Ну отправьте его в библиотеку книжки читать и все тут.


> Rip_1982 ©
>
>

Тот кто думает что он знает все, просто не догадывается о том как много есть того, о чем он даже не подозревает :) О-как


 
Val ©   (2007-07-12 17:57) [49]

в фоксе, насколько мне помнится, каждая таблица называлась БД.
с другой стороны, если поля есть в таблицах бд, то они есть и в бд, поскольку сами таблицы находятся в бд.
соотв. фразу за уши можно притянуть :)


 
Val ©   (2007-07-12 17:58) [50]

но..давайте лучше о..бабах...


 
Johnmen ©   (2007-07-12 17:58) [51]


> Rip_1982 ©   (12.07.07 17:51) [47]

Как этот пример коррелирует с
> Rip_1982 ©   (12.07.07 15:54) [10]
> БД - это по сути  структированный файл!

И что по поводу [46]?


 
Rip_1982 ©   (2007-07-12 18:06) [52]

Удалено модератором


 
Val ©   (2007-07-12 18:07) [53]

может, забили...


 
iXT ©   (2007-07-12 18:08) [54]


> Я в теории не силен, не спорю, но уже не одна БД разработанная
> мной используется на предприятиях и т.д. И до сих пор никто
> не жаловался.

Вот ведь, где беда. А я то думаю откуда они берутся!


 
Rip_1982 ©   (2007-07-12 18:09) [55]

Удалено модератором


 
Panel   (2007-07-12 18:19) [56]

Вот ведь, где беда. А я то думаю откуда они берутся!

"Свет! Выключите свет! Они лезут на свет!" (С)

И до сих пор никто не жаловался.

Врешь.


 
Кевларвестов Семен   (2007-07-13 12:14) [57]

В общем есть некая база на SQL server и есть ее описание. И нужно контролировать чтоб база соответствовала этому описанию. Создание/удаление таблиц/полей есть. Теперь захотелось мне чтоб она еще отслеживала изменения типа и NULL/ NOT NULL поля в базе. Изменения типа получается обнаруживать а вот с этим NULL/ NOT NULL  - нет.


> Свойство TField.Required установлено в true если поле Not
> Null и в False, если Null


Видимо я как то неправильно чего то делаю, ибо у меня это свойство всегда false
TADoTable.FieldByName(strFieldDBName).Required.
Может тут какой рефреш надо сделать или коннект? Но ведь тип то поля получается правильный...


 
Игорь Шевченко ©   (2007-07-13 12:16) [58]


> В общем есть некая база на SQL server и есть ее описание.
>  И нужно контролировать чтоб база соответствовала этому
> описанию


Изучай таблицы метаданных SQL-сервера и их формат. Там точно есть.


 
ЮЮ ©   (2007-07-13 12:31) [59]

SELECT * FROM INFORMATION_SCHEMA.COLUMNS ORDER BY TABLE_NAME
там и IS_NULLABLE поле есть.

З.Ы. только смысл всего не очень ясен. Т.е. если структуры таблицы на сервере вдруг поменяют, то твоя программа с лёту  будет правильно фунционировать? Поймет что делать с вдруг возникшими атрибутами, забудет напрочь о ранее существовавших?

Почему просто со сменой структуры таблиц не родправить и компоненты в приложении.
З.Ы. Лучше, конечно, просто удалиь, пока в дизайне (TADoTable) :)

TField.Required и MULL/NOT NULL не на все 100% коррелируют. Первое - на клиенте, второе - на сервере. Вряд ли для пвтоинкрементноко ключевого (первичного) поля в таблице требуется Required на клиенте


 
Кевларвестов Семен   (2007-07-13 13:11) [60]

Структуры таблиц на сервере менять никто не будет ибо она должна соответстовать тому что написано в XML описании, по которому моя программа ее и создает. Т.е. меняется описание - меняется структура данных, а не наоборот.  А TAdoTable я использую для досутпа к типу полей, вот думал что и Null / Not null оттуда можно выковырять.

Заново создавать я могу, добавлять/удалять поля/таблицы. Хотелось бы еще менять тип и вот этот null/ not null ну или хотя бы информировать об этом.
(Т.к. насколько я понял изменить тип у таблицы с данными просто Alter Column не получится)


 
Сергей М. ©   (2007-07-13 13:15) [61]


> нужно контролировать чтоб база соответствовала этому описанию


О как дело-то повернулось)


 
Кевларвестов Семен   (2007-07-13 13:28) [62]

да... выдыруг.... откуда ни возьмись... такие дела


 
Сергей М. ©   (2007-07-13 13:30) [63]


> Кевларвестов Семен   (13.07.07 13:28) [62]


А скажи на милость, с какого перепугу база может перестать соответствовать этому описанию, если никто кроме тебя (как ее администратора, очевидно ?) не вправе и не может изменить ее метаданные ?


 
Кевларвестов Семен   (2007-07-13 13:34) [64]

...если изменили ее описание в XML файле...


 
MsGuns ©   (2007-07-13 14:04) [65]

>Сергей М. ©   (12.07.07 15:36) [5]
>>ообще-то есть
>Где ?) Открой для меня, если не трудно, эту америку)

Ну если говорить не о "полях", а о колонках (так методологически точнее), то что-то похожее имеется и называется "доменом" ;)

>Сергей М. ©   (12.07.07 16:06) [15]
>"База данных (БД) — централизованное хранилище данных, >обеспечивающее хранение, доступ, первичную обработку и поиск >информации"
>У меня нет ни малейших поводов не согласиться с такой формулировкой)

А у меня есть. По крайней мере усомниться. Не нравится мне в этой формулировке слово "централизованное"


 
Johnmen ©   (2007-07-13 14:58) [66]


> MsGuns ©   (13.07.07 14:04) [65]

Ну уж если говорить совсем методологически точно, то в БД НИЧЕГО, кроме таблиц, нету...


 
Сергей М. ©   (2007-07-13 15:02) [67]


> Кевларвестов Семен   (13.07.07 13:34) [64]
>
> ...если изменили ее описание в XML файле...


Кто изменил-то ? Кроме тебя ?


 
Кевларвестов Семен   (2007-07-13 15:42) [68]

Ну а хотя б и я, хотя народу тут много, все могут.
В любом случае, кто б ее, родимую, не менял, было б крайне мило если б база синхронизировалась с этим метаописанием.


 
Сергей М. ©   (2007-07-13 15:49) [69]


> народу тут много, все могут


Бардаком отдает это изрядно)


 
Кевларвестов Семен   (2007-07-13 15:52) [70]

нет! этого требует технологический процесс.


 
pasha_golub ©   (2007-07-13 16:24) [71]

Семен, приведи пример.

Файл описания До, После, Структура БД До и После.

А то шото из тебя тянут, а вытянуть не могуть. По ходу дела, вон, человека обидели. Весь красный тут, понимаешь...


 
isasa ©   (2007-07-13 16:25) [72]

Оппа, как подрались.
А вопрощающий, по моему ждал ответа типа

if VarIsNull(<datasetname>[<FieldName>]) then ...


 
Johnmen ©   (2007-07-13 17:10) [73]


> pasha_golub ©   (13.07.07 16:24) [71]
> Семен, приведи пример.

Судя по мылу - Антон :)))


 
Кевларвестов Семен   (2007-07-13 20:40) [74]

ну гм Антон, но в целях конспирации - Семён.

по поводу файла описания ло и после.
Есть xml ник типа
<tables>
   <table name="Table1">
      <fields>
         <field name="field1" type="fldtString" is_null=false/>
         <field name="field2" type="fldtFloat" is_null=true/>
      </fields>
     </table>
</tables>


По нажатию на некоторую кнопку (TToolButton) в приложении, оно берет и создает базу согласно этому описанию.

Однако, если нажать на другую кнопку (TToolButton) этого приложения, оно должно не создавать базу снова, а лишь изменить ее согласно опсианию. Мало ли вдруг будет нужно добавить <field name="field3" type="fldtBool" is_null=true/>? Для производственных целей.

Или к примеру было <field name="field2" type="fldtFloat" is_null=true/>, стало <field name="field2" type="fldtInt" is_null=false/> это безобразие безусловно тоже должно быть соотствествующим образом обработано. Дык вот изменение типа поля мне получается отловить, ну и пусть не изменить его, но хоть поругаться, а вот изменение нульности нотнульнсти нет. Вот такие вот пироги.



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

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

Наверх




Память: 0.66 MB
Время: 0.031 c
15-1184301344
(AD)acid
2007-07-13 08:35
2007.08.12
Выбор коммуникатора


2-1184235621
Kolan
2007-07-12 14:20
2007.08.12
Помогите разобраться с компоненктами для доступа к базам&amp;#133


2-1184435002
Sonic90
2007-07-14 21:43
2007.08.12
Кнопка формы на панели задач


2-1184152074
Vasyl
2007-07-11 15:07
2007.08.12
Поиск


15-1184214406
Riply
2007-07-12 08:26
2007.08.12
Владпута, Едрос.