L33t |
Отправлено: 25.06.2006, 17:32 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 1
|
C++ Builder 6. WinXP SP1. VCL.
Требуется создать 31 поле с названиями "DayN" (N = 1..31) в датасете WorkersDataSet.
Что делаю я:
CODE |
WorkersDataSet->Close();
for (int i=1; i<32; i++) {
TStringField *T = new TStringField(WorkersDataSet);
T->FieldName = "Day"+IntToStr(i);
T->Name = WorkersDataSet->Name + T->FieldName;
T->Index = WorkersDataSet->FieldCount;
T->DataSet = WorkersDataSet;
WorkersDataSet->Fields->Add(T);
delete T;
}
WorkersDataSet->Open(); |
Билдер при компиляции выдает следующее сообщение:
QUOTE | ---------------------------
Debugger Exception Notification
---------------------------
Project CarPark.exe raised exception class EDatabaseError with message 'WorkersDataSet: Duplicate field name 'Day2''. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
| |
|
AVC |
Отправлено: 27.06.2006, 10:35 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
CODE |
for (int i=1; i<32; i++) {
TStringField *T = new TStringField(WorkersDataSet);
T->FieldName = "Day"+IntToStr(i);
T->Name = WorkersDataSet->Name + T->FieldName;
T->Index = WorkersDataSet->FieldCount;
T->DataSet = WorkersDataSet;
T->Calculated = true;
// WorkersDataSet->Fields->Add(T);
// delete T;
}
|
При повторном использовании не забывайте удалять созданные компоненты. |
|
olegenty |
Отправлено: 27.06.2006, 11:23 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
не забудь перед Open() сделать так:
CODE |
WorkersDataSet->FieldDefs->UpDate();
|
|
|