Проблеммы с CacheInsert в FIBPlus 5.3.0
Добавлено: 01 ноя 2004, 19:22
Народ потратил просто уйму времени, пытаясь вставить в кэш DataSet- а пустые записи. Пытался использовать метод FIBDataSeta CacheInsert(int *aFields,int size,Variant *Values, int size). Ниже фрагмент кода
Во время выполнения CacheInsert - вылетают ошибки Invalid Variant Operation. Если пользоваться синтаксисом CacheInsert(Variant &Value, bool DoRefresh) - всё проходит нормально. Но в этом случае значение подставляется только в первое поле. А мне надо заполнить несколько.
Выборка в исходном датасете необновляемая из ХП
Код: Выделить всё
// DS - компонент на форме типа TpFIBDataSet
Variant *StopValues = new Variant[fn];
int fn = DS->FieldCount;
for(int i=0;i<fn;i++)
{
StopValues[i]=Null();
Fields[i]=i;
if (DS->FieldByFieldNo(i+1)->DataType == ftString)
StopValues[i]="STOP";
if (DS->FieldByFieldNo(i)->FieldName == "NUM")
NumFPos = i-1;
}
try
{
int CurNum;
while (!DS->Eof)
{
CurNum = DS->FBN("NUM")->AsInteger;
if ((DS->FBN("Location")->Value==1)&&!StopPr)
{
StopValues[NumFPos]=CurNum;
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DS->CacheInsert(Fields,fn,StopValues,fn);
}
DS->Next();
}
}
__finally
{
delete [] Fields;
delete [] StopValues ;
delete [] EmptyValues ;
};
Выборка в исходном датасете необновляемая из ХП