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

Вниз

Минимальные, максимальные и значения по умолчанию   Найти похожие ветки 

 
EvilIJ ©   (2007-04-25 13:26) [0]

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


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


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

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


 
EvilIJ ©   (2007-04-25 13:36) [2]

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


 
EvilIJ ©   (2007-04-25 13:38) [3]

Вот как я делаю:
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;


 
Johnmen ©   (2007-04-25 13:42) [4]


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

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


 
EvilIJ ©   (2007-04-25 13:45) [5]


> Вот как я делаю: 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:48) [6]


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

Никак.


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

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


 
EvilIJ ©   (2007-04-25 13:51) [8]

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


 
EvilIJ ©   (2007-04-25 13:57) [9]


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

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

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


 
Desdechado ©   (2007-04-25 15:41) [10]

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

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


 
Loginov Dmitry ©   (2007-04-25 22:42) [11]

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


 
EvilIJ ©   (2007-04-25 22:46) [12]

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


 
Loginov Dmitry ©   (2007-04-25 22:48) [13]

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



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

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

Наверх




Память: 0.5 MB
Время: 0.03 c
1-1181074659
-Mouse-
2007-06-06 00:17
2007.08.12
Проблема с определением формулы математической задачи.


2-1184326542
Romikremind
2007-07-13 15:35
2007.08.12
Проблемы с русским языком


2-1184427323
Bbbbb...
2007-07-14 19:35
2007.08.12
TButton, inherited, Enabled


2-1184854326
kyro
2007-07-19 18:12
2007.08.12
Можно ли в дбшрид дважды загрузить данные


2-1184756653
ouchs
2007-07-18 15:04
2007.08.12
uses для функции PostVirtualKeyEvent