C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Рантайм создавать поля в RxMemoryData?, создаются, но работать с ними невозможно
Paranoik
Отправлено: 26.06.2003, 20:37


Ученик-кочегар

Группа: Участник
Сообщений: 12



Создаю поле так:
CODE
      TFieldDef *pNewDef;
       pNewDef = MemoryTable->FieldDefs->AddFieldDef();
       pNewDef->Name = "p1";
       pNewDef->DataType = ftString;
       pNewDef->Size = 100;
Вроде все ок... Вижу даже как MemoryTable->FieldDefs->Count увеличился...
Далее пытаюсь
CODE
       MemoryTable->FieldByName("p1")->AsString = "123";


И пишет мол не найдено поле p1...
Пытался еще так
CODE

       MemoryTable->Fields->Fields[x]->AsString = "123";

Тоже бестолку...

В чем фикус?
Admin
Отправлено: 29.06.2003, 16:01


Владимир

Группа: Администратор
Сообщений: 1190



Mem — это имя компонента типа TRxMemoryData

CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Mem->FieldDefs->Clear();
TFieldDef *pNewDef = Mem->FieldDefs->AddFieldDef();

pNewDef->Name = "Dep";
pNewDef->DataType = ftString;
pNewDef->Size = 20;
pNewDef->Required = true;

pNewDef = Mem->FieldDefs->AddFieldDef();
pNewDef->Name = "Proisv";
pNewDef->DataType = ftBoolean;

Mem->Open();

Mem->Insert();
Mem->FieldByName("Dep")->AsString = "Отдел Бухгалтерия";
Mem->FieldByName("Proisv")->AsBoolean = false;
Mem->Post();
}


Все работает.

CODE

void __fastcall TForm1::Button2Click(TObject *Sender)
{
   Mem->FieldDefs->Clear();

   TFieldDef *pNewDef;
   pNewDef = Mem->FieldDefs->AddFieldDef();
   pNewDef->Name = "p1";
   pNewDef->DataType = ftString;
   pNewDef->Size = 100;

   Mem->Open();

   Mem->Insert();
   Mem->FieldByName("p1")->AsString = "123";
   Mem->Post();
}


и вот так тоже работает.

А дело может в отсутствии Mem->Insert(); Mem->Post(); ?



Отредактировано Admin — 29 Jun 2003, 16:06

Вернуться в Вопросы программирования в C++Builder