alkresin пишет:
цитата: |
Так скорее всего или точно здесь ? Если здесь, то вопрос в том, почему получается ошибка при выполнении кодоблока. А не может это быть связано с тем, что эта злосчастная RU1251 по-разному называется в Harbour и xHarbour. Если страница с этим именем не прилинкована к клиентскому приложению, то выполнение Upper может вызвать ошибку. |
|
Нет. Я определил место, клиент вываливается при выполнении
errCode = SELF_EVALBLOCK( ( AREAP ) pArea, pKeyExp );
С именем кодовой страницы это не связано, я собрал сервер для себя корректно. Да и клиент падает еще до выполнения запроса к серверу. В моем случае - при создании 2-го индекса, т.е. на
OrdCreate('\kladr\street', 'namec', 'SUBSTR(CODE,1,11)+UPPER(NAME)', {|| SUBSTR(CODE,1,11)+UPPER(NAME)})
Но в некоторых случаях создавалось 4 индекса, и на 5-м - возникала ошибка
Причем я успешно открывал таблицу kladr.dbf, создавал индекс с 32-мя тэгами и условиями for. А при индексации street возникает эта непонятная ошибка
Неясно, связано ли это с размерами таблица. Сервер ведь создает индекс, ошибка не на сервере
Вот как я открываю kladr:
Local aKl := {'kladr',, 0,;
{'code', 'SUBSTR(CODE,1,13)'},;
{'index', 'INDEX'},;
{'coder', 'UPPER(NAME)',,, 'substr(code,3,9)="000000000"'},;
{'coderr', 'SUBSTR(CODE,1,2)+UPPER(NAME)',,, 'substr(code,6,6)="000000".and.substr(code,3,3)>"000"'},;
{'codera', 'UPPER(NAME)',,, 'substr(code,6,6)="000000".and.substr(code,3,3)>"000"'},;
{'codego', 'SUBSTR(CODE,1,2)+UPPER(NAME)',,, 'substr(code,6,3)>"000".and.substr(code,9,3)="000"'},;
{'codegra', 'SUBSTR(CODE,1,5)+UPPER(NAME)',,, 'substr(code,6,3)>"000".and.substr(code,9,3)="000"'},;
{'codega', 'UPPER(NAME)',,, 'substr(code,6,3)>"000".and.substr(code,9,3)="000"'},;
{'codena', 'UPPER(NAME)',,, 'substr(code,9,3)>"000"'},;
{'codenr', 'SUBSTR(CODE,1,2)+UPPER(NAME)',,, 'substr(code,9,3)>"000"'},;
{'codenra', 'SUBSTR(CODE,1,5)+UPPER(NAME)',,, 'substr(code,9,3)>"000"'},;
{'codeng', 'SUBSTR(CODE,1,8)+UPPER(NAME)',,, 'substr(code,9,3)>"000"'},;
{'nasel1', 'UPPER(NAME)',,, 'substr(code,3,9)="001000001"'},;
{'nasel2', 'UPPER(NAME)',,, 'substr(code,3,9)="000000001"'},;
{'city1', 'UPPER(NAME)',,, 'substr(code,6,3)>"000".and.substr(code,9,3)=="000"'},;
{'city2', 'UPPER(NAME)',,, 'substr(code,3,6)="001001"'},;
{'city3', 'UPPER(NAME)',,, 'substr(code,3,6)="000000"'},;
{'city3_2', 'ALLTRIM(UPPER(NAME))+SUBSTR(CODE,1,2)',,, 'substr(code,6,6)="000001"'},;
{'regdig', 'SUBSTR(CODE,1,2)',,, 'substr(code,3,9)="000000000"'},;
{'name_2', 'ALLTRIM(UPPER(NAME))+SUBSTR(CODE,1,2)'},;
{'nasel1_2', 'ALLTRIM(UPPER(NAME))+SUBSTR(CODE,1,2)',,, 'substr(code,3,9)="001000001"'},;
{'nasel2_2', 'ALLTRIM(UPPER(NAME))+SUBSTR(CODE,1,2)',,, 'substr(code,3,9)="000000001"'},;
{'codera_2', 'ALLTRIM(UPPER(NAME))+SUBSTR(CODE,1,2)',,, 'substr(code,6,6)="000000".and.substr(code,3,3)>"000"'},;
{'city_5', 'ALLTRIM(UPPER(NAME))+SUBSTR(CODE,1,5)',,, 'substr(code,9,3)="000"'},;
{'ocato', 'ocatd'},;
{'gni', 'gninmb'},;
{'scode', 'SUBSTR(CODE,1,2)'},;
{'tcode', 'SUBSTR(CODE,1,5)'},;
{'ncode', 'SUBSTR(CODE,1,8)'},;
{'namesocr', 'UPPER(ALLTRIM(name))+" "+UPPER(ALLTRIM(socr))',,, 'substr(code,3,9)="000000000"'},;
{'name_s', 'UPPER(ALLTRIM(NAME))+" "+UPPER(ALLTRIM(socr))'},;
{'code_all', 'CODE'} }
BatOpen({aKl}, ,,,, 'RU1251')
В прдмассиве для моей функции открытия индекс описывается параметрами: имя тэга, индексное выражение, условие for (5-й элемент)