Форум » LetoDB, HbNetio. » Leto DB Server » Ответить

Leto DB Server

Pasha: Добавил функцию: LETO_GROUPBY(cGroup, cFields, [cFilter], [xScopeTop], [xScopeBottom]) cGroup - имя поля, по которому группируются данные; cFields - список числовых полей через запятую, которые суммируются. Символ # обозначает к-во записей в группе Функция возвращает двумерный массив строк. 1-й элемент каждой строки - значение поля cGroup, следующие элементы суммы полей, заданных в cFields, или к-во записей в группе

Ответов - 232, стр: 1 2 3 4 5 6 7 8 9 10 11 12 All

AlexMyr: Паша, вложение отправил на email с профиля, а обсуждали там про ошибки сборки под убунтой. попробуйте это http://groups.google.com/group/harbour-users/browse_thread/thread/c2ee05c7604baf2b?hl=ru# и http://groups.google.com/group/harbour-users/browse_thread/thread/8891537a9041b743?hl=ru# если не получится прочитать, то завтра с работы отправлю обсуждение.

Pasha: Да обсуждение уже и не нужно, спасибо, суть понятна, главное есть патч. Хотя почему-то у меня эти странички открываются пустые. С 3-х провайдеров пробовал.

santy: И у меня тоже пустые страницы, у разных провайдеров


AlexMyr: кеш чистили, может поможет?

Dima: У меня все нормально.

santy: У меня всё нормально в Firefox, в опере не показывает. Обновил оперу и всё стало ок.

Softlog86: Подскажите - как нужно коннектиться к LETODB на локальном компьютере ? Дома приходится работать .... Соединение со строкой "//192.168.0.101:2812/" не проходит ...

Dima: Softlog86 Почитай , должно помочь. Возможно что то не так сделал. http://zalil.ru/32839487

Softlog86: Всё вроде правильно написал : REQUEST LETO RDDSETDEFAULT( "LETO" ) IF leto_Connect( "//192.168.0.101:2812/" ) == -1 && Проверяем загруже-ли LETO-SERVER Alert("LETO-DB NOT CONNECTED " ) ENDIF USE ("//192.168.0.101:2812/DETAL.DBF") SHARED NEW <------ Генерирует страшную ошибку ! PS : Собрал LETO (LIB) из исходников под xHarbour . Может что не так ? Видимо какие-то проблемы с генерацией библиотеки . Только что обновил через CVS получился RDDLETO.LIB РАЗМЕР - 92672 . у всех такой для xHarbour ?? при линковке с новой библиотекой при вызове CONNET_LETO() выскакивает по ошибке : Неисправимая ошибка 9009: hb_xrealloc не может перераспределить память ....

Dima: А сервер запускал ?

Softlog86: Да - он работает ! В я уже проверял . - ошибку соединения не генерирует ..... а вот при вызове USE - проблема ..... Бросьте в меня RDDLETO.LIB для xHARBOUR ..... Похоже в этом дело

Softlog86: Разобрался с глюками ..... перекомпилировал . Получил :LETO DB Server 2.03 . Возможно это и есть последний релиз ... По крайней мере получается хоть что-то делать ... Вопрос ?-> Всё это находится на LETO-DB сервере : Имеется DBF и индекс к нему c несколькими Тэгами . LAN:="//192.168.0.101:2812/" <---- Это маршрут INDEX ON CODE TAG CODE TO (LAN+"JRINDEX.CDX") <--- По коду товара INDEX ON OPER TAG OPER TO (LAN+"JRINDEX.CDX") <--- По коду операции INDEX ON DATEP TAG DATEP TO (LAN+"JRINDEX.CDX") <---- По дате INDEX ON OPTCODE TAG OPTCODE TO (LAN+"JRINDEX.CDX") <---- По коду клиента эти индексы - как-бы общие для всех режимов и пользователей в CLIPPER я использовал "дополнительный-временный" индекс , но организовывал его отдельным файлом в нужный момент (просмотр) : MyBAG:=LAN+"RTMP.CDX" && OPTCODE- поле КОД КЛИЕНТА , Z - нужный в данный момент код клиента INDEX ON DATEP TAG DATX FOR (OPTCODE = Z) TO (MyBAG) UNIQUE ADDITIVE То есть на основе уже имеющегося индекса (DATEP-даты операций) достраивал по условию (OPTCODE=Z - оставить только для клиента Z) SET ORDER TO TAG DATX (Теперь у нас есть все даты (DATEP) для клиента OPTCODE=Z ) .... просмотр данных По окончании просмотра - убираем за собой DELETE TAG DATX DELETE FILE (MyBAG) Но такая конструкция отказывается работать c LETODB ..... Как я понял - к одному DBF файлу нельзя прицепить несколько CDX , да ещё и на разных дисках (LETO / локальный ) ? Хотя должно вроде повторять конструкцию из CLIPPER..... обидно ..... в мануале написано что не все RDD могут поддерживать это ....

Pasha: В харборе для временных индексов есть опция команды INDEX: temporary. Используйте ее. Но такой индекс будет доступен только для одного клиента. Так поступать крайне неэффективно. Я бы просто в таком случае добавил бы еще один постоянный индекс: OptCode+DTOS(DateP) Это было бы куда эффективнее, и, собственно, так и надо делать. Нет необходимости строить левый индекс для каждого клиента, он всегда есть. А letodb не поддерживает собственные индексы и локальные. Поддерживаются только индексы на сервере.

Pasha: А еще лучше модифицировать индексное выражение для 4-го индекса: Вместо OptCode использовать OptCode+DTOS(DateP) Если поле OptCode числовое, то Str(OptCode)+DTOS(DateP) Так убиваются все зайцы одним выстрелом.

Softlog86: Паша , спасибо ! В принципе построение дополнительного индекса было решением "на ходу" ..... а так как систему полностью перелопачиваю - буду оптимизировать и старый код .

Softlog86: Подскажите .... При вызове ORDKEYGOTO() Выскакивает ALERT : Собирал из последних (Получилась версия LETO SERVER : 2.03) ЧТо у меня не так ? Может сие лаконичное сообщение говорит о несовместимости какой ?

Pasha: В letodb никаких алертов и в помине нет, конечно. Если выскакивает такое сообщение - это либо неправильная сборка, либо где-то в программе вызывается этот Alert. Во всяком случае, вызов OrdKeyGoto(<nPos>) эквивалентен dbOrderInfo(DBOI_POSITION,,, <nPos>) с #include "dbinfo.ch", конечно Попробуйте заменить

Softlog86: Паша , спасибо Вам за регулярные подсказки и помощь ! А проблема была странная : в тексте у меня была функция-заменитель : OKEYGOTO(nPOS) IF AX_LOADED() (вызов этой функции для работы с ADS-сервером) ELSE ORDKEYGOTO(nPOS) ENDIF Return Заменил во всех вызовах на штатный ORDKEYGOTO ..... и всё стало нормально Хотелось-бы чтоб сообщения об ошибках в LETO были более вразумительные Заметил что в LETO не работает EVAL + EVERY конструкция : INDEX ON CODE TAG CODE TO (LAN+"DETAL.CDX") EVAL {|| MyMETER()} EVERY REC_INCREMENT Хотел ползунок пришпандорить при индексации .... Ну и обязательный синтаксис с TAG !!! : INDEX ON (ключ) TAG (название) TO (Индексный файл) Если без TAG - будет ошибка ! Поправьте если ошибаюсь

Pasha: Softlog86 пишет: Хотелось-бы чтб сообщения об ошибках в LETO были более вразумительные Заметил что в LETO не работает EVAL + EVERY конструкция : INDEX ON CODE TAG CODE TO (LAN+"DETAL.CDX") EVAL {|| MyMETER()} EVERY REC_INCREMENT Хотел ползунок пришпандорить при индексации .... Эти опции не поддерживаются. Чтобы сделать их поддержку, надо заметно усложнить индексацию. Сейчас алгоритм простой: клиент дает команду серверу на создание индекса, и ждет ее завершения. С этими опциями пришлось бы организовывать обмен пакетами между клиентом и сервером: в процессе индексации сервер должен отправлять клиенту промежуточный пакет, клиент выполнит свой блок кода, даст команду на продолжение индексации, и так далее. Это приведет и к снижению быстродействия. Мне бы не хотелось с этим заморачиваться. Ну и обязательный синтаксис с TAG !!! : INDEX ON (ключ) TAG (название) TO (Индексный файл) Если без TAG - будет ошибка ! Такое использование нестандартно для dbfcdx. Я добавлял поддержку такого синтаксиса, но серьезно его не проверял.

Andrey: Pasha пишет: Это приведет и к снижению быстродействия. Мне бы не хотелось с этим заморачиваться. Правильно! И не надо снижать быстродействие. Только в доку написать что НЕ поддерживается !



полная версия страницы