Автор | Сообщение |
Dima
|
| |
Пост N: 2728
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 9)
Продолжаем тут
|
|
|
Ответов - 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 $ */
|
|
|
Pasha
|
| Администратор
|
Пост N: 3123
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.02.14 22:27. Заголовок: Жалуются на проблему..
Жалуются на проблему в LetoDB c CVS. У меня и с последней версией тест отрабатывает нормально. В чем проблема, и почему ее не удается воспроизвести - пока непонятно.
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 143
Зарегистрирован: 15.09.05
|
|
Отправлено: 26.02.14 23:17. Заголовок: Хорошо попробую CVS версию
Хорошо попробую CVS версию У меня дома есть два компа попробую и через сеть
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 144
Зарегистрирован: 15.09.05
|
|
Отправлено: 26.02.14 23:36. Заголовок: Сработало опять
Слил последнее из CVS . Скомпилировал тест указывая на адрес моего рутера , затащил тест на одном сервере к которому имею remote доступ и зпустил тест от туда . Все сработало
|
|
|
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
|
|
|
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 - все ок. Похоже, при не заданном пути, файл ищется где-то в текущем каталоге а не там где файл. Надеюсь мой тест поможет разобраться. Спасибо за работу!
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 145
Зарегистрирован: 15.09.05
|
|
Отправлено: 21.03.14 12:00. Заголовок: ФУНКЦИЯ leto_groupby ДЛЯ DBFCDX
Паша Мне очень нравится функция leto_groupby , хотелось бы ее использовать и под DBFCDX но не смог "Выковырять" из изходниках LetoDB Очень быстро работает :)
|
|
|
Pasha
|
| Администратор
|
Пост N: 3131
Зарегистрирован: 23.05.05
|
|
Отправлено: 21.03.14 13:29. Заголовок: Я, кстати, так и дел..
Я, кстати, так и делаю. У меня есть локальный вариант для GroupBy, и я для dbfcdx его и использую. Как раз в самой функции выполняется эта проверка. Функция оптимизирована, часть кода написана на С, так что работает быстро. Мне пришлось убрать/заменить некоторые свои функции, чтобы собрать эту функцию. Именно этот вариант я не проверял, но надеюсь, что он рабочий: http://gfile.ru/a4Je0
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 146
Зарегистрирован: 15.09.05
|
|
Отправлено: 21.03.14 14:39. Заголовок: Спасибо Попробую
Спасибо Попробую !
|
|
|
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') работает но мне нужна составная группа
|
|
|
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'
|
|
|
|
Pasha
|
| Администратор
|
Пост N: 3135
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.14 11:41. Заголовок: Если в качестве филь..
Если в качестве фильтра передавать блок кода, то отрабатывает локальный вариант, а не leto_GroupBy А при повторном вызове leto_GroupBy действительно не срабатывает. Разбираюсь, причина пока непонятна.
|
|
|
Pasha
|
| Администратор
|
Пост N: 3137
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.14 15:35. Заголовок: Разобрался, вечером ..
Разобрался, вечером выложу исправление
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 149
Зарегистрирован: 15.09.05
|
|
Отправлено: 27.03.14 10:44. Заголовок: PERFECT !
Работает Супер Быстро! Задачка была обработать 2,5 млн записей для отчета , старый алгоритм работал 20 мин. а спомощию leto_groupby и dbgroupby всего 16 секунд Спасибо Паша !
|
|
|
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 $ */
|
|
|
Pasha
|
| Администратор
|
Пост N: 3147
Зарегистрирован: 23.05.05
|
|
Отправлено: 28.04.14 10:47. Заголовок: Сделал, вечером скин..
Сделал, вечером скину на CVS
|
|
|
Srdjan
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 01.05.14 20:19. Заголовок: Меня зовут Срджьан Я..
Меня зовут Срджьан Я новичок в использовании LetoDB. В чем разница между dbSeek и LetoDBSeek?
|
|
|
Pasha
|
| Администратор
|
Пост N: 3149
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.05.14 20:24. Заголовок: dbSeek - это вызов о..
dbSeek - это вызов операции seek для харбора, один из методов rdd LETO LetoDBSeek - это реализация вызова операции seek на языке С. С помощью LetoDBSeek можно разрабатывать клиенты для LetoDB для других языков программирования, не только для харбора. Функция харбора dbSeek как раз выполняет операцию seek через вызов LetoDBSeek
|
|
|
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 Что вы думаете?
|
|
|
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) )
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|