Multiple-step operation generated errors
Вообщем прицепляюсь я через ADOTable к фоксовой базе через MS VisualFox-овского провайдера, чтобы слить в нее данные.
Далее начинаю процесс их передачи. В начале все идет хорошо, но потом (после того как скинет где-то сотню записей) выдает вот такую ошибку (см. вложенный файл).
Использую BCB5 пропатченый SP1 и ADOSp1.
Если кто с таким встречался - поделитесь, как с ним бороться.
А код перекачки данных можно сюда запостить?
Конечно.
...
ADOTable1->Open();
for (int r=0; r<=ADOQuery1->RecordCount; r++)
{
ADOTable1->Append();
for (int f=0; f<ADOQuery1->FieldList->Count; f++)
{ ADOTable1->FieldByName(ADOQuery1->FieldList->Strings[f])->AsVariant=ADOQuery1->FieldByName(ADOQuery1->FieldList->Strings[f])->AsVariant;
};
ADOQuery1->Next();
}
...
Теперь комментарии:
ADOTable1 - та табличка, куда сливаются данные
В ADOQuery1 получаю данные из другой базы в виде, приемлимом для передачи в ADOTable1.
А Вот теперь начинаются интересные вещи: код вроде как бы начинает работать и передает примерно сотню записей (запрос выдает порядка 10000 зап.) а потом не с того ни с сего выдает эту выше упомянутую ошибку.
Вот я и думаю - если это мой глюк, то почему она "маленько" поработает? Если это глюк ADO (до пропатчивания у него например вообще были интересные вещи - когда закрываешь пустой датасет - он ругался на EOF) - дак для этого я его и патчил.
int i = 0
ADOTable1->Open();
for (int r=0; r<=ADOQuery1->RecordCount; r++)
{
ADOTable1->Append();
for (int f=0; f<ADOQuery1->FieldList->Count; f++)
{ ADOTable1->FieldByName(ADOQuery1->FieldList->Strings[f])->AsVariant=ADOQuery1->FieldByName(ADOQuery1->FieldList->Strings[f])->AsVariant;
};
ADOQuery1->Next();
i++;
if(i==50)
{
ADOTable1->Post();
i = 0;
}
}
То есть такое впечатление что переполняется кэш. Либо вообще делать Post() после каждого Append();
Поставил провайдера от 8-го фокса - вроде заработала и том виде, в каком было первоначально.