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

Вниз

Добавление поля в таблицу Paradox в режиме выполнения   Найти похожие ветки 

 
Игорь П   (2005-05-29 01:02) [0]

Как правильно выполнить добавление нового поля в существующую таблицу Paradox в режиме выполнения программы?
Хотелось бы, чтобы поле вставилось, а не добавилось, т.е. при просмотре таблицы, допустим, в Datebase Desktop, порядковый ноиер поля был, например, 5 из 8 полей.
Заранее спасибо.


 
Anatoly Podgoretsky ©   (2005-05-29 11:08) [1]

dbiDoRestructure


 
Kuzya   (2005-05-29 11:48) [2]

ИМХО Через обычное добовление и последующию сортировку при помощи
TQuery


 
Игорь П   (2005-05-29 20:34) [3]

Извините за невежество, но я не знаю как использовать функцию dbiDoRestructure. В своём Delphi6 я в help не смог найти её описание.
Хотелось бы, если об этом в данном форуме рассказывать слишком долго, узнать ссылки в I-Net, где можно про неё почитать.


 
Desdechado ©   (2005-05-29 20:58) [4]

bde32.hlp


 
Shuric ©   (2005-05-29 21:21) [5]

ALTER TABLE
UPDATE
DROP

Набор для садомазо :)


 
CyberStorm ©   (2005-05-30 17:32) [6]


procedure AddField(Table: TTable; NewField: ChangeRec);
var
 Props: CURProps;
 hDb: hDBIDb;
 TableDesc: CRTblDesc;
 pFlds: pFLDDesc;
 pOp: pCROpType;
 B: byte;

begin
 if Table.Active = False then
   raise EDatabaseError.Create("таблица должны быть открыта для изменения структуры!!!");
 if Table.Exclusive = False then
   raise EDatabaseError.Create("Таблица должна быть открыта в эксклюзивном режиме!!!");

 Check(DbiSetProp(hDBIObj(Table.Handle), curxltMODE, integer(xltNONE)));
 Check(DbiGetCursorProps(Table.Handle, Props));
 pFlds := AllocMem((Table.FieldCount + 1) * sizeof(FLDDesc));
 FillChar(pFlds^, (Table.FieldCount + 1) * sizeof(FLDDesc), 0);
 Check(DbiGetFieldDescs(Table.handle, pFlds));

 for B := 1 to Table.FieldCount do begin
   pFlds^.iFldNum := B;
   Inc(pFlds, 1);
 end;
 try
   StrCopy(pFlds^.szName, NewField.szName);
   pFlds^.iFldType := NewField.iType;
   pFlds^.iSubType := NewField.iSubType;
   pFlds^.iUnits1  := NewField.iLength;
   pFlds^.iUnits2  := NewField.iPrecision;
   pFlds^.iFldNum  := Table.FieldCount + 1;
 finally
   Dec(pFlds, Table.FieldCount);
 end;

 pOp := AllocMem((Table.FieldCount + 1) * sizeof(CROpType));
 Inc(pOp, Table.FieldCount);
 pOp^ := crADD;
 Dec(pOp, Table.FieldCount);

 FillChar(TableDesc, sizeof(TableDesc), 0);
 Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
 StrPCopy(TableDesc.szTblName, Table.TableName);
 StrPCopy(TableDesc.szTblType, Props.szTableType);
 TableDesc.iFldCount := Table.FieldCount + 1;
 Tabledesc.pfldDesc := pFlds;
 TableDesc.pecrFldOp := pOp;
 Table.Close;
 try
   Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, FALSE));
 finally
   FreeMem(pFlds);
   FreeMem(pOp);
   Table.Open;
 end;
end;


 
CyberStorm ©   (2005-05-30 17:33) [7]

Совсем забыл :)


 ChangeRec = record
   szName: DBINAME;
   iType: Word;
   iSubType: Word;
   iLength: Word;
   iPrecision: Byte;
   end;
{ для iType действуют следующие константы

Paradox physical types dBASE and FoxPro physical types

fldPDXCHAR fldDBCHAR
fldPDXNUM fldDBNUM
fldPDXMONEY fldDBMEMO
fldPDXDATE fldDBBOOL
fldPDXSHORT fldDBDATE
fldPDXMEMO fldDBFLOAT
fldPDXBINARYBLOB fldDBLOCK (dBASE only)
fldPDXFMTMEMO fldDBBINARY (dBASE only)
fldPDXOLEBLOB fldDBOLEBLOB
fldPDXGRAPHIC fldDBBYTES
fldPDXBLOB fldDBLONG (dBASE 7.0 table format only)
fldPDXLONG fldDBDATETIME (dBASE 7.0 table format only)
fldPDXTIME fldDBDOUBLE (dBASE 7.0 table format only)
fldPDXDATETIME fldDBAUTINC (dBASE 7.0 table format only)

fldPDXBOOL
fldPDXAUTOINC
fldPDXBYTES
fldPDXBCD
}



 
Игорь П   (2005-05-30 22:25) [8]

Большое спасибо за помощь



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

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

Наверх




Память: 0.48 MB
Время: 0.05 c
11-1101836172
Nils
2004-11-30 20:36
2005.07.11
Нужен компонент по типу как список файлов в WinRARe


9-1112437928
DARKir
2005-04-02 14:32
2005.07.11
Привязка к клавишам


1-1119509721
r9000
2005-06-23 10:55
2005.07.11
Вопрос по word-у


1-1118612839
Вин2
2005-06-13 01:47
2005.07.11
Как добавить к TPanel свойства OnKeyPress, OnKeyUp, OnKeyDown ?


3-1116933870
alex_***
2005-05-24 15:24
2005.07.11
MS SQL server