On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 11:33. Заголовок: Индексация Summer87+Harbour


Пытаюсь подключить harbour к программе расчета зарплаты, которая написана давно и нормально работает. Начала с самого главного - открытие таблиц, индексация и проверка корректности индексов. Компиляцию прошла успешно, но программа не работает. Такое впечатление, что не работает set index.
Ломается в блоке:
select &namebd
ind1=path+namebd
ind2=path+namebd+'1'
set index to &ind1,&ind2
//контроль корректности индексов
kolind=2 &&количество инд.файлов
//этот блок выполняется только j=1
for j=1 to kolind
sind=iif(j=1,namebd,namebd+str(j-1,1)
set order to (j)
tind=indexkey(j)
&&дальше не выполняется для j=2, потому что tind- пусто
next
Что я делаю не так?



Спасибо: 0 
Ответов - 11 [только новые]





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 15:54. Заголовок: Re:


Люди, так что harbour не допускает подключение нескольких индексных файлов
в SET INDEX? Может, все-таки кто-нибудь подскажет выход. Или на такие вопросы здесь не отвечают?

Спасибо: 0 
модератор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 16:26. Заголовок: Re:


lena пишет:
цитата
так что harbour не допускает подключение нескольких индексных файлов
в SET INDEX?


Лена! По-видимому дело в использовании макросов при подключении индексных файлов
Попробуй заменить макро &ind на (ind) - обрати внимание на СКОБКИ

Следующий пример работает нормально на Харборе:

function main
Local i:=0, block
Field Last, First

Use test
Index On Left( Last,8 )+Left( First,8 ) To test1
Index On Left( Last,8 ) To test2
Index On Last To test3
Set Index To test1, test2, test3

set order to 1
? indexkey()
inkey(0)
Go Top
Do While !Eof()
? ++i, Last, First
skip
Enddo

? "------------"
inkey(0)
skip -1

Do While !Bof()
? i--, Last, First
skip -1
Enddo

i := 0
set order to 2
? indexkey()
inkey(0)
Go Top
Do While !Eof()
? ++i, Last, First
skip
Enddo

? "------------"
inkey(0)
skip -1

Do While !Bof()
? i--, Last, First
skip -1
Enddo

i := 0
set order to 3
? indexkey()
inkey(0)
Go Top
Do While !Eof()
? ++i, Last, First
skip
Enddo

? "------------"
inkey(0)
skip -1

Do While !Bof()
? i--, Last, First
skip -1
Enddo

Use

return Nil

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 16:50. Заголовок: Re:


Большое спасибо. Дело в том, что я в своем примере написала '&' не потому, что ошиблась, а потому что так в программе, которую написала фирма по заказу предприятия, и которая работает уже не один год. У меня нет оснований не доверять тому, что столько лет работало. Я думала, что harbour поймет. Придется много переделывать, здесь понатыкано этих "&" море.

Спасибо: 0 





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 16:53. Заголовок: а так?


select ( namebd )
set index to ( ind1 ), ( ind2 )

Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 16:56. Заголовок: совет - забыть про Harbour и пользовать xHarbour (-)




Спасибо: 0 
Профиль
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 17:10. Заголовок: Re:


странно, я прогнал этот кусочек и он отработал

может сама проверка дает какое-то последействие ? что в ней ?


Спасибо: 0 
Профиль
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 17:12. Заголовок: Re:


Харбор понимает амперсанд, проблем быть не должно
я правда описал переменные как private


Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 17:15. Заголовок: Re:


SergeJa пишет:
цитата
select ( namebd )
set index to ( ind1 ), ( ind2 )

Да, в таком виде все у меня заработало. А вот в Clippere в таком виде компиляция проходит, но не работает. - обратная ситуация.
SergeJa, мы тут еще до конца не определились harbour or xharbour. Я всего неделю назад начала всем этим заниматься. Пока я вижу, что просто перекомпилировать и запустить не получится.

Спасибо: 0 



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.01.06 17:32. Заголовок: Re:


Pasha пишет:
цитата
странно, я прогнал этот кусочек и он отработал

может сама проверка дает какое-то последействие ? что в ней ?


for jnind=1 to lmind
if jnind=1
sind=imabd
else
sind=imabd+str(jnind-1,1)
endif
set order to (jnind)
go bottom
tind=indexkey(jnind)
tind2=&tind
seek tind2
if .not.found()
OTKDBFI()
else
tind3=&tind
if tind2<>tind3
OTKDBFI()
endif
endif
next
procedure OTKDBFI
private winpodsk
if jnind=1
sind=imabd
else
sind=imabd+str(jnind-1,1)
endif
winpodsk=savescreen(24,0,24,79)
PODSKAZKA('Ждите !^ Индексация '+imabd+' - '+nazbd+';'+sind+'^;')
smind=mind[jnind]
gind=gdebd+sind
CLEARMEM()
jimaindf=gind+'.ntx'
if file(jimaindf)
erase &jimaindf
endif
index on &smind to &gind
restscreen(24,0,24,79,winpodsk)
return
Вот реальный кусок.

Спасибо: 0 
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.01.06 15:20. Заголовок: Re:


У меня и этот пример отработал

xHarbour, правда не релиз июня прошлого года, а недавняя сборка
Может с harbour проблема ? или с релизом xHarbour ?

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.01.06 15:44. Заголовок: Re:


После недели работы сваливать грехи на Harbour не могу.

Спасибо: 0 
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 171
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет