TADOTable的Seek方法不能用(带源码--这都不明白我还自称高手呢)加入CSDN以来第一次提问
houzh 2001-08-09 02:45:37 我的数据表建了索引的,调用时老是出错
raised exception class EOleException with message"对象或提供者不能执行所需的操作"。我的CBuilder 和ADO都打了补丁升过级了
代码如下:
void __fastcall TScheduleEditor::ImportVideoListClick(TObject *Sender)
{
TServerItem*svr=(TServerItem*)(mgrTree->Selected->Data);
int i;
if(svr->Connected==false)return;
AnsiString files;
svr->GetVideoList(files);
char*p=files.c_str();
for(i=0;i<files.Length();i++)
if(p[i]==';')p[i]='\n';
TStringList *sl=new TStringList;
TADOTable*dat=dbData->Films;
sl->Text=files;
try{
for(i=0;i<sl->Count;i++){
unsigned long length ,/*in second;*/ bitrate/*BPS*/;
TDateTime du=0;
AnsiString s;
int pid=svr->ServerID*100000+i;
//char*p=sl->Strings[i].c_str(); //commented at 2001-7-24
svr->GetVideoInfo(sl->Strings[i],length,bitrate);
if(length<100)continue;
if(dat->Seek(pid,soFirstEQ)) dat->Edit();
else{
dat->Append();
dat->FieldValues["FilmID"]=pid;
}
du=(double)length/(24*3600);
dat->FieldValues["FilmName"]=sl->Strings[i];
dat->FieldValues["Duration"]=du;
dat->FieldValues["AtServer"]=svr->ServerID;
monitor->printf(logInfo,"%s Added To Video Databasen",sl->Strings[i].c_str());
//s=TimeToStr(du); p=strchr(p,','); *p='_';//commented at 2001-7-24
SendCommand("D_ADD_CONTENT(%d;%s;%ld;%d;%s)",pid-1,
sl->Strings[i].c_str(),length,0,svr->Address.c_str());
dat->Post();
}
}__finally{
delete sl;
}