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

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

Минимальные, максимальные и значения по умолчанию [D7, IB6.x, Paradox]


EvilIJ ©   (2007-04-25 13:26:00) 

Нужно создать/изменить таблицу во время выполнения программы. Создавать умею, считывать значения Min, Max и Default тоже умею, но как их записать при создании?
За ранее, спасибо...


Loginov Dmitry   (2007-04-25 22:48:00) [1]

Был бы повод. А выпить мы всегда... :))


EvilIJ   (2007-04-25 22:46:00) [2]

Вообщето это из моей идеи :) , но Логинову респект!
Логинов со мной бухает в пятницу!


Loginov Dmitry   (2007-04-25 22:42:00) [3]

http://info.borland.com/devsupport/bde/bdeapiex/dbidorestructure.html


Desdechado   (2007-04-25 15:41:00) [4]

> я не про GDB говорю а про DB, Paradox
В названии у тебя указан IB6.0
А говорить можешь и про слона, только тигром он от этого не станет.

> в IB точно есть ограничения полей
> CHECK Expression Задает правило проверки достоверности уровня поля.
Есть, но они гораздо шире MIN и MAX, да и не только уровня поля, но и их взаимоотношений внутри таблицы, а также с другими таблицами.


EvilIJ   (2007-04-25 13:57:00) [5]


> Не помню я что-то MIN и MAX для полей в IB6.0

хехе, я не про GDB говорю а про DB, Paradox всего-навсего, а в IB точно есть и зн. по умолч. и ограничения полей
Для примера...

CHECK lExpression1
Задает правило проверки достоверности уровня поля.


EvilIJ   (2007-04-25 13:51:00) [6]

А иначе может как-нибудь? Как же тот же DatatBase Desktop их создает?
Может через Query нужно открыть созданную таблицу и скриптом как-нибудь поправить? ... Я пробовал ALTER .. не работает, умеет только добавлять или удалять, менять не позволяет...


Desdechado   (2007-04-25 13:50:00) [7]

Не помню я что-то MIN и MAX для полей в IB6.0


Johnmen   (2007-04-25 13:48:00) [8]


> но как их записать при создании?

Никак.


EvilIJ   (2007-04-25 13:45:00) [9]


> Вот как я делаю: with Table.FieldDefs.AddFieldDef do  begin
>    // Добавляем поле    Name:=NewField.aName;    DataType:
> =NewField.aType;    Size:=NewField.aSize;    Required:=NewField.
> aRequired;  end;  if NewField.aOptions<>[] then  with Table.
> IndexDefs.AddIndexDef do  begin    // Добавляем первичный
> индекс    Name := '';    Fields := NewField.aName;    Options
> := NewField.aOptions;  end;


Johnmen   (2007-04-25 13:42:00) [10]


> Я создаю таблицу со стандартным набором параметров...

Э-э-э... А где это?


EvilIJ   (2007-04-25 13:38:00) [11]

Вот как я делаю:
with Table.FieldDefs.AddFieldDef do
 begin
   // Добавляем поле
   Name:=NewField.aName;
   DataType:=NewField.aType;
   Size:=NewField.aSize;
   Required:=NewField.aRequired;
 end;
 if NewField.aOptions<>[] then
 with Table.IndexDefs.AddIndexDef do
 begin
   // Добавляем первичный индекс
   Name := '';
   Fields := NewField.aName;
   Options := NewField.aOptions;
 end;

Вот как читаю эти значения из существующей таблицы:

       IndexDef:=Table.IndexDefs.Items[j];
       if (ixPrimary in IndexDef.Options) then
       begin
         //это первичный ключ
         if IndexDef.FieldExpression=FieldsList[i] then
         begin
           aKey:=true;
           aOptions:=IndexDef.Options;
           break;
         end else aKey:=false;
       end;
     end;
     // Собираем информацию по полю
     aName:=FieldsList[i];
     aType:=Table.FieldByName(FieldsList[i]).DataType;
     aSize:=Table.FieldByName(FieldsList[i]).Size;
     aRequired:=Table.FieldByName(FieldsList[i]).Required;
     if Table.FieldByName(FieldsList[i]).DefaultExpression<>'' then
       aDefaultEx:=Table.FieldByName(FieldsList[i]).DefaultExpression else
       aDefaultEx:='';
     // для Int
     if (aType=ftSmallint) or (aType=ftInteger) or (aType=ftWord) or (aType=ftLargeint)
     then
     begin
       aMaxValue:=IntToStr(TIntegerField(Table.FieldByName(FieldsList[i])).MaxValue);
       aMinValue:=IntToStr(TIntegerField(Table.FieldByName(FieldsList[i])).MinValue);
     end;
     // для float
     if (aType=ftFloat) or (aType=ftCurrency)
     then
     begin
       aMaxValue:=FloatToStr(TFloatField(Table.FieldByName(FieldsList[i])).MaxValue);
       aMinValue:=FloatToStr(TFloatField(Table.FieldByName(FieldsList[i])).MinValue);
     end;


EvilIJ   (2007-04-25 13:36:00) [12]

Как в DataBase Desktop, для каждого поля можно задать ограничения.
Я создаю таблицу со стандартным набором параметров поля: Имя, Тип, Размер, Requared. Нужно добавить еще MinValue, MaxValue и DefaultExpression.


Johnmen   (2007-04-25 13:27:00) [13]


> но как их записать при создании?

Куда записать? В парадоксовский заголовок?


Наверх

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