![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Минимальные, максимальные и значения по умолчанию [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]
> но как их записать при создании?
Куда записать? В парадоксовский заголовок?