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




Пост N: 2728
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 9)


Продолжаем тут

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


sashaBG
постоянный участник




Пост N: 142
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 26.02.14 21:51. Заголовок: У меня отработало правильно


У меня отработало правильно как у тебя Паша

но у меня LetoDB версии /* $Id: Changelog,v 1.350.2.133 2013/11/22 10:09:31 ptsarenko Exp $ */


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




Пост N: 3123
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.02.14 22:27. Заголовок: Жалуются на проблему..


Жалуются на проблему в LetoDB c CVS. У меня и с последней версией тест отрабатывает нормально. В чем проблема, и почему ее не удается воспроизвести - пока непонятно.

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 143
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 26.02.14 23:17. Заголовок: Хорошо попробую CVS версию


Хорошо попробую CVS версию
У меня дома есть два компа попробую и через сеть

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 144
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 26.02.14 23:36. Заголовок: Сработало опять


Слил последнее из CVS .
Скомпилировал тест указывая на адрес моего рутера , затащил тест на одном сервере к которому имею remote доступ
и зпустил тест от туда .
Все сработало


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




Пост N: 3124
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.02.14 09:27. Заголовок: Похоже, надо внести ..


Похоже, надо внести изменение в протокол для выполнение команд блокировки.
Тест ниже демонстрирует, что dbfcdx при выполнении rlock/flock/dbrlock
перечитывает запись. Необходимо запустить 2 экземпляра программы.
Такое же поведение показывает и Ads
Думается, что в letodb вместе с результатом команд блокировки надо передавать и текущую запись.

proc main
Field f1

request dbfcdx
rddSetDefault( "DBFCDX" )

cls
if ! File("test.dbf")
dbCreate("test", {{"C1", "C", 10, 0}, {"F1", "N", 10, 0}})
endif
use test new shared
if RecCount() == 0
dbAppend()
endif
? F1
while inkey(0) # 27
? 'Before lock', F1
if rlock() // dbRlock(RecNo()), or flock()
? 'After lock', F1
F1 ++
dbUnlock()
dbCommit()
? 'After commit', F1
endif
enddo
use
retu


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



Пост N: 27
Зарегистрирован: 22.03.06
ссылка на сообщение  Отправлено: 27.02.14 09:40. Заголовок: Pasha пишет: Просьб..


Pasha пишет:

 цитата:
Просьба собрать и запустить такой тест:


У меня не gpf а штатная ошибка dos error 32.
Запускаю сервер и тест на одном компе - win7.
Сервер - с cvs последний, клиент - предпоследний.
И сервер и клиент с доработками, поэтому может быть и нет gpf.

Ошибка возникает из-за повторного вызова
dbCreate(cPath + "test.dbf", {{"C1", "C", 10, 0}, {"N1", "N", 10, 0}})
т.к. leto_File(cPath + "test.dbf") == .f. (не находит ранее созданный файл)


Ошибка возникает в двух случаях (из-за настроек в letodb.ini) :
- если EnableFileFunc = 0 (что логично);
- если не задан DataPath, или задан типа DataPath = /

Причина думаю где-то в функции
(letodb\source\server\letofunc.c line 3275 ) void leto_filef( PUSERSTRU pUStru, const char* szData )

Проверил из под дебагера

В строке 3304 hb_snprintf( szData1, 16, "+%s;", ( hb_spFile( szFile, NULL ) )? "T" : "F" );
при вызове hb_spFile
если не задан DataPath или DataPath = / и возникает ошибка
szFile == "test.dbf\000..."

а если задан то (например DataPath =\_leto.tst)
szFile == "\_leto.tst\test.dbf\000..."
и функция hb_spFile возвращает T - все ок.

Похоже, при не заданном пути, файл ищется где-то в текущем каталоге а не там где файл.

Надеюсь мой тест поможет разобраться.

Спасибо за работу!





Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 145
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 21.03.14 12:00. Заголовок: ФУНКЦИЯ leto_groupby ДЛЯ DBFCDX


Паша
Мне очень нравится функция leto_groupby , хотелось бы ее использовать и под DBFCDX но не смог "Выковырять" из изходниках LetoDB
Очень быстро работает :)


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




Пост N: 3131
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.03.14 13:29. Заголовок: Я, кстати, так и дел..


Я, кстати, так и делаю. У меня есть локальный вариант для GroupBy, и я для dbfcdx его и использую.
Как раз в самой функции выполняется эта проверка. Функция оптимизирована, часть кода написана на С, так что работает быстро.
Мне пришлось убрать/заменить некоторые свои функции, чтобы собрать эту функцию. Именно этот вариант я не проверял, но надеюсь, что он рабочий:

http://gfile.ru/a4Je0

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 146
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 21.03.14 14:39. Заголовок: Спасибо Попробую


Спасибо Попробую !

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 147
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 24.03.14 01:49. Заголовок: Leto_GroupBy


Паша а как можно сделать Группу составную
например:
aDvig := LETO_GROUPBY('sme+ska', 'debit,kredit')
срабарывает (массив загружается) но потом при следующем обращении к серверу
или зависает программа или сервер падает
в логе letodb_1.log вот ето:

24.03.2014 00:32:15: Error BASE/1004 No exported method: EVAL
Arguments: ( [ 1] = Type: U)


a в letodb_crash.log :
в конце
------------------------------------------------------------------------
User: 127.0.0.1 SAVOVS ccw.Exe
Command: open


следующая команда у меня открывает другой файл на сервере


а так:
aDvig := LETO_GROUPBY('sme', 'debit,kredit')
работает но мне нужна составная группа

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 148
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 26.03.14 10:42. Заголовок: dbGroupBy


Паша вот такой тест отработал как надо

procedure main()

REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
Set AUTOPEN ON

use dvig new
set order to "sme+ska"

aGroup:=dbGroupBy(, , {||sme+ska}, "debit,kredit")
?Len(aGroup)
DBCloseArea()
return

а без блока возвращает пустой массив

я в _groupby.prg сделал такую замену
//xKey := if((nPos := FieldPos(cGroup)) # 0, nPos, cGroup)
xKey := if((nPos := FieldPos(cGroup)) # 0, nPos, GetBlock(cGroup))


так работает и когда группа единичная 'sme' когда составна я тоже 'sme+ska'

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




Пост N: 3135
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.03.14 11:41. Заголовок: Если в качестве филь..


Если в качестве фильтра передавать блок кода, то отрабатывает локальный вариант, а не leto_GroupBy
А при повторном вызове leto_GroupBy действительно не срабатывает. Разбираюсь, причина пока непонятна.

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




Пост N: 3137
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.03.14 15:35. Заголовок: Разобрался, вечером ..


Разобрался, вечером выложу исправление

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 149
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 27.03.14 10:44. Заголовок: PERFECT !


Работает Супер Быстро!
Задачка была обработать 2,5 млн записей для отчета , старый алгоритм работал 20 мин. а спомощию leto_groupby и dbgroupby
всего 16 секунд

Спасибо Паша !

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 292
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.04.14 07:47. Заголовок: Pasha Попробовал в L..


Pasha
Попробовал в Leto в работе новые поля типа + и ^ (сборка сервера с RddInfo( RDDI_TABLETYPE, DB_DBF_VFP )).
Сервер понимает и заполняет эти поля ok!, а клиент нет. После dbStruct() эти поля типа 'U'.
Это лечится ?
Версия hb 2.0, Leto /* $Id: readme_rus.txt,v 1.12 2011/04/19 16:04:58 ptsarenko Exp $ */


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




Пост N: 3147
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.04.14 10:47. Заголовок: Сделал, вечером скин..


Сделал, вечером скину на CVS

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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 01.05.14 20:19. Заголовок: Меня зовут Срджьан Я..


Меня зовут Срджьан
Я новичок в использовании LetoDB.
В чем разница между dbSeek и LetoDBSeek?

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




Пост N: 3149
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.05.14 20:24. Заголовок: dbSeek - это вызов о..


dbSeek - это вызов операции seek для харбора, один из методов rdd LETO
LetoDBSeek - это реализация вызова операции seek на языке С. С помощью LetoDBSeek можно разрабатывать клиенты для LetoDB для других языков программирования, не только для харбора. Функция харбора dbSeek как раз выполняет операцию seek через вызов LetoDBSeek

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



Пост N: 2
Зарегистрирован: 01.05.14
ссылка на сообщение  Отправлено: 02.05.14 09:15. Заголовок: Я пошел олл старую п..


Я пошел олл старую программу Clipper с водителем SIX3 на день letoDB. Все прекрасно работает, но у меня есть одна проблема, когда клиент покидает программу с Alt-C других покупателей иногда блока (нужно остановить программу с Ctrl-Alt-Del).
Я добавил следующий код:

#define K_ALTC 302
SETCANCEL(.F.)
SET KEY K_ALTC TO AltC()

EXIT PROCEDURE ZavrsiRad()
CLOSE ALL
leto_disconnect()
RETURN

PROCEDURE AltC()
CLOSE ALL
leto_disconnect()
QUIT
RETURN

Что вы думаете?

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



Пост N: 3
Зарегистрирован: 01.05.14
ссылка на сообщение  Отправлено: 02.05.14 09:54. Заголовок: Есть ли это программ..


Есть ли это программный код:
#xtranslate Sx_SetScope(<a>,<b>) => ordScope( <a>,<b> )
#xtranslate Sx_SetScope(<a>,) => ordScope( <a>, )
#xtranslate Sx_ClrScope() => (ordScope(0,),ordScope(1,))

n := Sifre->( LastRec() )
a1 := Array( n )
a2 := Array( n )
aFill( a1, 0 )
aFill( a2, 0 )
RobMat->( OrdSetFocus( 'Datum' ) )
RobMat->( Sx_SetScope( 0, dOd ), Sx_SetScope( 1, dDo ), dbGoTop() )
WHILE !RobMat->( EOF() )
IF LEFT(RobMat->Dokument,1)=='H' .AND. RobMat->Sifra<>0 .AND. RobMat->Radnik==nVoz .AND. RobMat->Magacin == 1
a2[ RobMat->Sifra ] += RobMat->Ulaz
a1[ RobMat->Sifra ] += RobMat->Izlaz
END
RobMat->( dbSkip() )
END

с следующий код программы:
RobMat->( OrdSetFocus( 'Datum' ) )
a:=RobMat->( LETO_GROUPBY("Sifra", "Ulaz, Izlaz", "LEFT(Dokument,1)=='H' .AND. Sifra<>0 .AND. Radnik=="+ALLTRIM(STR(nVoz,5,0))+" .AND. Magacin == 1", dOd, dDo) )

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 683
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет