![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с значениями по умолчанию в таблицах Paradox [D3, D5, dBase, FoxPro, Paradox]
VladTen © (2002-12-26 08:23:00)Подскажите пожалуйста, как добавить или изменить в таблице Paradox у поля ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ, МИНИМАЛЬНОЕ, И МАКСИМАЛЬНОЕ ЗНАЧЕНИЕкоторое он может принимать. (Которые можно выставить в "DataBase Desktop").
Севостьянов Игорь (2002-12-27 10:46:00) [1]Н-да... Отвык я от BDE и Paradox...
VAleksey © (27.12.02 06:24)дело говорит
procedure fDbiDoRestructure(Tbl: TTable; Field: TField; MinVal, MaxVal, DefVal: pLongint; Required: Boolean);
var
hDb: hDbiDb;
TblDesc: CRTblDesc;
VChk: pVChkDesc;
Dir: string;
NumVChks: Word;
OpType: CROpType;
begin
NumVChks := 0;
SetLength(Dir, dbiMaxNameLen + 1);
Check(DbiGetDirectory(Tbl.DBHandle, False, PChar(Dir)));
SetLength(Dir, StrLen(PChar(Dir)));
VChk := AllocMem(sizeof(VChkDesc));
try
FillChar(TblDesc, sizeof(CRTblDesc), #0);
VChk.iFldNum := Field.Index + 1;
Tbl.DisableControls;
Tbl.Close;
Check(DbiOpenDatabase(nil, nil, dbiReadWrite, dbiOpenExcl, nil, 0, nil, nil,
hDb));
Check(DbiSetDirectory(hDb, PChar(Dir)));
with VChk^ do begin
bRequired := Required;
if (MinVal <> nil) then begin
Inc(NumVChks);
bHasMinVal := True;
move(MinVal^, aMinVal, sizeof(MinVal^));
end
else
bHasMinVal := False;
if (MaxVal <> nil) then begin
Inc(NumVChks);
bHasMaxVal := True;
move(MaxVal^, aMaxVal, sizeof(MaxVal^));
end
else
bHasMaxVal := False;
if (DefVal <> nil) then begin
Inc(NumVChks);
bHasDefVal := True;
move(DefVal^, aDefVal, sizeof(DefVal^));
end
else
bHasDefVal := False;
end;
TblDesc.iValChkCount := NumVChks;
TblDesc.pVChkDesc := VChk;
OpType := crADD;
TblDesc.pecrValChkOp := @OpType;
StrPCopy(TblDesc.szTblName, Tbl.TableName);
StrCopy(TblDesc.szTblType, szParadox);
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
finally
Check(DbiCloseDatabase(hDb));
FreeMem(VChk, sizeof(VChkDesc));
Tbl.EnableControls;
Tbl.Open;
end;
end;
VAleksey (2002-12-27 06:24:00) [2]Ну какой же совет - то дать ? :(
в проекте ставь Uses BDE;
Смотри функцию dbiDoRestructure
PS
Описание функции в файле BDE32.hlp
VladTen (2002-12-27 03:23:00) [3]А еще кто нибудь сможет дать дельный совет???
Севостьянов Игорь (2002-12-26 11:09:00) [4]Насколько я помню с помощью Local SQL невозможно такое сделать, а вот в TField default value можно установить так:
TField.DefaultExpression
Specifies an SQL expression that is assigned to the field if the user does not provide a value.
property DefaultExpression: String;
Description
Set DefaultExpression to provide a default value for a field. DefaultExpression can be any valid SQL value expression that does not refer to field values. If the expression contains literals other than numeric values, they must appear in quotes. For example, a default value of noon for a time field would be
"12:00:00"
including the quotes around the literal value.
Geka (2002-12-26 09:28:00) [5]Я сейчас с Оракл работаю, там все можно. Но я вроде пробовала и в парадоксе. Посмотри документацию по SQL. Там есть
alter table add(constraint <имя ограничения>)
alter table drop()
посмосри такие ключевые слова как check, constraint
VladTen (2002-12-26 09:18:00) [6]Вообще-то мне нужно все это программно добиться.
А если честно, то через "alter table" мне кажется можно только добавлять поля в базу (иного предназначения я просто никогда нигде не встречал).
Geka (2002-12-26 08:59:00) [7]Я опечаталась конечно modify(возможно в парадокс это и не работает, но я вроде(мне так казалось) делала). Попробуй через Database Desktop, в комплекте delphi.
VladTen (2002-12-26 08:39:00) [8]Что-то я и так и сяк, и mogify заменил на modify. (Ну никак ничего не получается).
Geka (2002-12-26 08:28:00) [9]alter table mogify(FIELD_NAME default 0)
Почитай про это...