Форум: "Прочее";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
ВнизОпределить 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
Видимо я как то неправильно чего то делаю, ибо у меня это свойство всегда falseTADoTable.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;
Скачать: [xml.tar.bz2];
Память: 0.63 MB
Время: 0.047 c