Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.049 c
15-1184329607
Zagaevskiy
2007-07-13 16:26
2007.08.12
Проводник


15-1184656512
VID
2007-07-17 11:15
2007.08.12
Кто из Питера? Вопрос о съеме квартиры


2-1184249071
GeLLeR
2007-07-12 18:04
2007.08.12
Микрофон


3-1177918062
lavrenty
2007-04-30 11:27
2007.08.12
ClientDataSet: перезагрузка данных


2-1184741167
RJ
2007-07-18 10:46
2007.08.12
в QuickReport из DBGrig





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский