V1s1ter

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору psa1974 svs123456789 Мужики, Вы только покритиковать или помочь. Если Думали уберечь человека от использования Accuracer, то сначала спросите, а может ли он его поменять на "нормальные субд ". EugeneBoss3 К сожалению точно подсказать не могу, но обратил на момень, что создаешь индекс в момент выполнения, и не известно поддерживает ли такие конструкции Accuracer. Не исключено что прежде чем писать AddIndex('NewIndex', sIndexNew, []); нужно чтобы в базе уже был индекс, в любом случае SQL еще не отменили, попробуй вместо функций сделать индекс через запросы, что-то типа: create unique index UniqueName ON atbUsers(NewIndex desc nocase, sIndexNew); И еще на приличных объемах индексы долго формируются, может их заранее создать на этапе проектирования? Добавлено: EugeneBoss3 В догонку, вот полный пример того, что Вы пытаетесь сделать, но через запросы. http://rapidshare.com/files/288715619/Indexes.rar.html Это для AbsoluteDatabase, но переделать в Accuracer - как два пальца об... Добавлено: EugeneBoss3 И еще в догонку, не поленинся посмотрел примеры Accuracer и обратил внимание, на то что вызовы IndexDefs.Add идут при закрытой таблице, а вызовы ACRTable.AddIndex при открытой. И вот что они рекомендуют: Код: with ACRTable1 do begin with IndexDefs do begin Clear; Add('PrimaryKey','CustNo',[ixPrimary]); <- Индексы до открытия Add('ByCompanyAsc','Company',[ixCaseInsensitive]); Add('ByCompanyDesc','Company',[ixDescending]); end; CreateTable; Active := true; <- Вот оно самое // add complex index AddIndex('ByAddrAscCompanyDesc','Address;Company',[ixCaseInsensitive],'Company'); <- Индексы после открытия end; end; procedure TMainForm.rbtCompanyAscClick(Sender: TObject); begin ACRTable1.IndexName := 'ByCompanyAsc'; end; procedure TMainForm.rbtCompanyDescClick(Sender: TObject); begin ACRTable1.IndexName := 'ByCompanyDesc'; end; | |