не могу добавить/изменить поле в ADODataset или Колонку в DBGridEh
ситуация такая - SQLServer + ADOStoredProc (либо ADOQuery) + DBGridEh.
на SQL запрос полность сформировать не могу (слишком сложные вычисления), гораздо проще добавить или изменить одно из полей уже на клиенте. но вот беда
пишу
Код:
//добавляем столбец
DBGridEh1->Columns->RebuildColumns();
DBGridEh1->Columns->Add();
int colcount = DBGridEh1->Columns->Count;
DBGridEh1->Columns->operator [](colcount-1)->Title->Caption = "блаблабла";
adoquery1->First();
DBGridEh1->ReadOnly = false;
for (int i=0; i<=adoquery1->RecordCount; i++)
{
DBGridEh1->Columns->operator [](colcount-1)->Field->Value ="3";
либо так
DBGridEh1->Columns->operator [](colcount-1)->DisplayText() = "3";
либо так
DBGridEh1->Columns->operator [](colcount-1)->Field->Text = "3";
dm_ado->gr_oplata->Next();
}
и все три строчки вызывают исключение
DBGridEh1->Columns->RebuildColumns();
DBGridEh1->Columns->Add();
int colcount = DBGridEh1->Columns->Count;
DBGridEh1->Columns->operator [](colcount-1)->Title->Caption = "блаблабла";
adoquery1->First();
DBGridEh1->ReadOnly = false;
for (int i=0; i<=adoquery1->RecordCount; i++)
{
DBGridEh1->Columns->operator [](colcount-1)->Field->Value ="3";
либо так
DBGridEh1->Columns->operator [](colcount-1)->DisplayText() = "3";
либо так
DBGridEh1->Columns->operator [](colcount-1)->Field->Text = "3";
dm_ado->gr_oplata->Next();
}
и все три строчки вызывают исключение
пытаюсь добавить лишнее поле в запросе (изначально в sql)и потом изменить - получаю ошибку:
"Невозможно модифицировать поле"
пытаюсь добавить поле динамически
Код:
TField *newf = new TField;
dm_ado->gr_oplata->Fields->Add(newf);
dm_ado->gr_oplata->Fields->Add(newf);
получаю:
"E2285 Could not find a match for 'TField::TField()'" в хелпере сказано
Do not create TField instances. TField is intended only as a base class, and should not be directly instantiated. The constructor for descendant classes is usually called by the dataset when it is opened.
After calling the parent class’s constructor, TField initializes the Visible property to true.
однако как этим воспользоваться не понял :(
подскажите какие ошибки допустил или в какое направление было верное!!!
Код:
TField *fld;
fld=(TIntegerField*) new TIntegerField(adoquery1);
fld->Name = "semestr2";
fld->SetFieldType(ftInteger);
adoquery1->Fields->Add(fld);
adoquery1->FieldDefList->Update();
adoquery1->FieldList->Update();
fld=(TIntegerField*) new TIntegerField(adoquery1);
fld->Name = "semestr2";
fld->SetFieldType(ftInteger);
adoquery1->Fields->Add(fld);
adoquery1->FieldDefList->Update();
adoquery1->FieldList->Update();
установкa datatype тоже не помогает. Подскажите что не так!!! :(