cannot use calculated fields
Posted: Mon 28 Nov 2016 16:38
unidac 6.4.16, c++ builder XE10 pro, win32 vcl
TUniQuery QDict: select id from table, no fields at design time.
A TUniDataSource and TCRDBGrid are linked to this query.
Code:
I get:
Debugger shows I do not enter QDictCalcFields.
Why why why? What's missing? I think this was OK with 6.4.15.
TUniQuery QDict: select id from table, no fields at design time.
A TUniDataSource and TCRDBGrid are linked to this query.
Code:
Code: Select all
TField *QDictBTSConf, *QDictGacConf, *QDictID;
...
void __fastcall TFJobDetail::QDictBeforeOpen(TDataSet *DataSet)
{
int i;
if (DataSet->FieldDefs->Count==0)
DataSet->FieldDefs->Update();
if (DataSet->FieldCount==0) {
for (i=0; i<DataSet->FieldDefs->Count; i++)
DataSet->FieldDefs->Items[i]->CreateField(DataSet);
}
// {now create the calculated fields}
AddField(DataSet,"BTSCONF");
AddField(DataSet,"GACCONF");
}
void AddField(TDataSet *ds, AnsiString sField)
{
TField *f;
f= new TField ( ds );
f->FieldName= sField;
f->Calculated = true;
f->Visible = true;
ds->Fields->Add ( f );
}
void __fastcall TFJobDetail::QDictCalcFields(TDataSet *DataSet)
{
if (QDictID==NULL) {
QDictID=QDict->FieldByName("ID");
QDictBTSConf=QDict->FieldByName("BTSCONF");
QDictGacConf=QDict->FieldByName("GACCONF");
}
QDictBTSConf->AsInteger=1;
QDictGacConf->AsInteger=2;
}
void __fastcall TFJobDetail::SBSearchClick(TObject *Sender)
{
QDict->Open();
}
...
on open (against oracle and against postgres).QDict: Field 'BTSCONF' cannot be a calculated or lookup field.
Debugger shows I do not enter QDictCalcFields.
Why why why? What's missing? I think this was OK with 6.4.15.