Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверка наличия поля в таблице. [D7, XP]


Страницы:   1 2

vegarulez ©   (2011-11-09 23:34:00) 

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

использую *.mdb + zquery

проверяю наличия поля в таблице через

    Zquery1.SQL.Text:='Select xml_2 from cfg where 1';
    Zquery1.Open;
    if not (Zquery1.FieldCount>0) then
     Begin
       ...  
     End;


но вот беда если поля в таблице нет то запрос вываливается в эксцепшн (
как более правильно проверять такие вещи и создавать поля если их нет.


Медвежонок Пятачок   (2011-11-10 00:37:00) [21]

очередная ветка из ничего постов на сто


vegarulez   (2011-11-10 00:36:00) [22]

sniknik ©   (10.11.11 00:33) [8]

>>ищи, может и в твоих "+ zquery"

забыл уточнить использую ZEOSDBO


Медвежонок Пятачок   (2011-11-10 00:35:00) [23]

а типа получив исключение ты лично встанешь в тупик и не поймешь от чего он произошел


sniknik   (2011-11-10 00:33:00) [24]

> а типа получив эксепшен ты все еще не понял, что поля нет
а типа эксепт гарантирует что он от отсутствия поля... а не от коннекта например.

> как это сделать правильно.
в ADO есть получение списка/полей, или более подробной инфы через OpenSchema.
ищи, может и в твоих "+ zquery" подобное тоже есть... ну или претензию разработчику.


Медвежонок Пятачок   (2011-11-10 00:29:00) [25]

или если боишся исключений

TDataSet.FieldDefs.Update;
TDataSet.FieldDefs.Find();


Медвежонок Пятачок   (2011-11-10 00:25:00) [26]

а типа получив эксепшен ты все еще не понял, что поля нет


vegarulez   (2011-11-10 00:13:00) [27]

Inovet ©   (10.11.11 00:11) [4]
собственно  чтобы alter сделать - надо узнать сперва есть ли фиелд в табличке. собственно поэтому и сабж. как это сделать правильно.


Inovet   (2011-11-10 00:11:00) [28]

> [2] vegarulez   (10.11.11 00:01)
> Поверь мне нужно динамически приводить базы в одно состояние
> на разных тачках в зависимости от обновлений.

Хранить версию схемиы, и накатывать апдейты по очереди. Апдейты на DDL
alter table add field;
alter index;
и т.п.


Медвежонок Пятачок   (2011-11-10 00:04:00) [29]

но вот беда если поля в таблице нет то запрос вываливается в эксцепшн (

это не беда, а сигнал.
поля нет.


vegarulez   (2011-11-10 00:01:00) [30]

Поверь мне нужно динамически приводить базы в одно состояние на разных тачках в зависимости от обновлений. Поэтому нужен такой подход - проверять эти поля в форм криэйте и создавать их перед запуском программы если их нет.


И. Павел   (2011-11-09 23:48:00) [31]


> vegarulez   (09.11.11 23:34)

Можно делать SELECT * WHERE 1 = 0 и смотреть список полей, их типы и т.д.

Хотя наверняка можно через системные таблицы вытащить, но способ выше универсальнее :)

PS: Ситуации, когда действительно оправдано динамически создавать и удалять поля в таблицах очень редкие. В большинстве случаев можно обойтись без такого усложнения.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо