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




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


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

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


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




Пост N: 478
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.15 11:47. Заголовок: SergKis пишет: leto ..


SergKis пишет:
 цитата:
leto сервер делает все ok для полей типа ^ и +
- типы T, @ превращаются в =
- пустое поле типа = не заполняется значением TimeStamp


причина в разном case:
 
leto1.c(line 1950)
case HB_FT_MODTIME:
cType = '@';
break;
case HB_FT_DATETIME:
case HB_FT_DAYTIME:
cType = 'T';
break;
rdd\dbf1.c(line 3050)
case HB_FT_TIMESTAMP:
pThisField->bType = pArea->bTableType == DB_DBF_VFP ? 'T' : '@';
pField->uiLen = 8;
pThisField->bLen = ( BYTE ) pField->uiLen;
pThisField->bFieldFlags = HB_FF_BINARY;
pArea->uiRecordLen += pField->uiLen;
break;
case HB_FT_MODTIME:
pThisField->bType = '=';
pField->uiLen = 8;
pThisField->bLen = ( BYTE ) pField->uiLen;
pArea->uiRecordLen += pField->uiLen;
pArea->fModStamp = TRUE;
break;

т.е. в cdx типы T,@ - HB_FT_TIMESTAMP, тип = HB_FT_MODTIME, в leto другие


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




Пост N: 479
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.15 10:48. Заголовок: полная катавасия со ..


полная катавасия со структурой (поля типа TIMESTAMP, MODTIME):
- на клиенте подаем в dbCreate ..., {"TM", "@", 8, 0}, {"TS", "=", 8, 0},...
- на сервере имеем в HS_CREATETABLE (пришло с клиента) ..., {"TM", "T", 8, 0}, {"TS", "@", 8, 0},...
- на сервере имеем в HS_OPENTABLE (после dbStruct)..., {"TM", "@", 8, 0}, {"TS", "@", 8, 0},...
- на клиенте после dbStruct имеем ..., {"TM", "=", 8, 0}, {"TS", "=", 8, 0},...
придется остатья на старой версии (двухпотчной)

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




Пост N: 3246
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.02.15 14:44. Заголовок: SegKis пишет: смотрю..


SegKis пишет:

 цитата:
смотрю в сервере отключены триггера - это специально или нарочно ?



Конечно, не специально, и не нарочно. Эта реализация была пропущена при реорганизации кода почти 4 года назад. Поправил.

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




Пост N: 481
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.02.15 13:20. Заголовок: Pasha добавил в ser..


Pasha
добавил в server.prg:
Скрытый текст

тестовая test_dbf.prg:
Скрытый текст

т.е. триггер ставится, но работает, для PendingTrigger такой же результат.


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




Пост N: 482
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.02.15 13:24. Заголовок: PS. повторяю искажен..


PS. повторяю искаженное:
 
FOR i := 1 TO Len( aNames )
APPEND BLANK
REPLACE NAME WITH aNames[ i ], NUM WITH i+1000, ;
...


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




Пост N: 483
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.02.15 20:09. Заголовок: SergKis пишет:т.е. т..


SergKis пишет:
 цитата:
т.е. триггер ставится, но работает, для PendingTrigger такой же результат.


что то буквы съелись. Должно быть:

 цитата:
т.е. триггер ставится, но НЕ работает, для PendingTrigger такой же результат.



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 857
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.03.15 14:35. Заголовок: SergKis пишет: полн..


SergKis пишет:

 цитата:
полная катавасия со структурой (поля типа TIMESTAMP, MODTIME):
- на клиенте подаем в dbCreate ..., {"TM", "@", 8, 0}, {"TS", "=", 8, 0},...
- на сервере имеем в HS_CREATETABLE (пришло с клиента) ..., {"TM", "T", 8, 0}, {"TS", "@", 8, 0},...


А можно короткий тестовый пример, чтоб сразу откомпилировать и проверить ?

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




Пост N: 491
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.03.15 14:41. Заголовок: alkresin пишет:А мож..


alkresin пишет:
 цитата:
А можно короткий тестовый пример, чтоб сразу откомпилировать и проверить ?


Отправлено: 10.02.15 00:02. Заголовок: Режим: RddInfo( RDDI..

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




Пост N: 492
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.03.15 14:59. Заголовок: alkresin letodb..pr..


alkresin
letodb..prg добавил:
...
 
hs_createtable(...)
...
aStru := Array( nLen, 4 )
FOR i := 1 TO nLen
aStru[i,1] := GetCmdItem( cCommand, nPos + 1, @nPos )
aStru[i,2] := GetCmdItem( cCommand, nPos + 1, @nPos )
aStru[i,3] := Val( GetCmdItem( cCommand,nPos + 1,@nPos ) )
aStru[i,4] := Val( GetCmdItem( cCommand,nPos + 1,@nPos ) )
NEXT
WLog(procname()+":"+hb_valtoexp(aStru)) // добавил
...
hs_opentable(...)
... // line: ~457
aStru := dbStruct()
WLog(procname()+":"+hb_valtoexp(aStru)) // добавил
...


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




Пост N: 493
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.03.15 15:01. Заголовок: PS опять буква сълас..


PS опять буква сълась WrLog(...) добавлял

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 858
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.03.15 16:49. Заголовок: Ту небольшую путаниц..


Ту небольшую путаницу я, вроде, исправил.
Остается один неприятный момент с теми полями, которые формируются автоматически на сервере при добавлении записи. Поскольку на клиентской стороне работает буферизация, то если добавить запись и потом сразу прочитать, то она берется не с сервера. а из буфера - и значения тех полей пустые.

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




Пост N: 495
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.03.15 17:11. Заголовок: alkresin пишет:на кл..


alkresin пишет:
 цитата:
на клиентской стороне работает буферизация,...


как правило, сразу может понадобится поле "+" для заполнения в другую таблицу, в массив ключей, ...
как осуществлять доступ ? делать dbcommit, leto_commit, закрывать\открывать таблицу ?
на даты типа Timestamp и "^" запрос, как првило отложенный (могут быть в тегах индекса)

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




Пост N: 496
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.03.15 17:25. Заголовок: PS. всегда в cdx, nt..


PS. всегда в cdx, ntx, six было dbSkip(0) - перечитать\перезаполнить буфер

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




Пост N: 497
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.03.15 11:10. Заголовок: alkresin пишет:Ту не..


alkresin пишет:
 цитата:
Ту небольшую путаницу я, вроде, исправил.


Работает. Большое СПАСИБО
Вместо dbSkip(0) обновляет буфер на клиенте dbGoto(RecNo())

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




Пост N: 498
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.03.15 15:34. Заголовок: SergKis пишет:Работа..


SergKis пишет:
 цитата:
Работает


поторопился, timestamp работает, а "^" и "+" - что то не то при отображении в dbf все хорошо
? str(RecNo(), 3), NAME, str(NUM, 4), TS, VM, ID дает:
 
Rec NAME NUM TS VM ID
=== ========== ==== ===================== ==================== ==========
1 Petr 1001 05/03/15 14:26:54.731 16660054396318011 1413165115
2 Ivan 1002 05/03/15 14:26:54.731 16660054396318267 1413165115
3 Alexander 1003 05/03/15 14:26:54.731 16660054396318523 943406395
4 Pavel 1004 05/03/15 14:26:54.747 16660054396318779 3878971
5 Alexey 1005 05/03/15 14:26:54.747 16660054396319035 989870896
6 Fedor 1006 05/03/15 14:26:54.747 16660054396319291 3878912
7 Konstantin 1007 05/03/15 14:26:54.762 16660054396319547 993540925
8 Vladimir 1008 05/03/15 14:26:54.762 16660054396319803 993853499
9 Nikolay 1009 05/03/15 14:26:54.762 16660054396320059 1023425280
10 Andrey 1010 05/03/15 14:26:54.778 4264973925457342779 993853440
11 Dmitry 1011 05/03/15 14:26:54.778 4264973925457408315 993853440
12 Sergey 1012 05/03/15 14:26:54.778 4264973925457473851 993853440


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 860
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.03.15 09:53. Заголовок: А у меня все нормаль..


А у меня все нормально отображается.
Это ведь тот ваш пример, только dbSkip(0) заменено на go Recno() ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 861
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.03.15 10:05. Заголовок: Все ясно. Это я небо..


Все ясно.
Это я небольшое исправление в серверной части не выложил на CVS - думал, оно не имеет значение, а в моем рабочеи каталоге оно осталось.
Теперь выложил.

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




Пост N: 500
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.03.15 10:31. Заголовок: alkresin пишет:Тепер..


alkresin пишет:
 цитата:
Теперь выложил.


Работает. Большое СПАСИБО.

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




Пост N: 4040
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.03.15 20:57. Заголовок: Как можно отловить п..


Установил наконец то сервер на Win2012. Вроде работает. Пытаюсь дальше разбираться....
Как можно отловить перезагрузку и работоспособность сервера LetoDB ?
Т.е. при обращениях к ЛетоДБ как проверять, доступен он или нет (инет упал, сервер перегрузился и т.д.) -
как обрабатывать ошибки ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4578
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.03.15 22:11. Заголовок: Andrey пишет: Вроде..


Andrey пишет:

 цитата:
Установил наконец то сервер на Win2012. Вроде работает.


Только он глючит порой не по теме , пытались его тоже юзать , откатились на 2008.


Andrey пишет:

 цитата:
Как можно отловить перезагрузку и работоспособность сервера LetoDB ?


Не читал letodb\readme_rus.txt ?

Цитата
 
Возможно проверить доступность сервера перед открытием файлов вызовом функции
leto_Connect( cAddress ), которая вернет -1 в случае неудачной попытки:

IF leto_Connect( "//192.168.5.22:2812/mydir/" ) == -1
Alert( "Can't connect to server ..." )
ENDIF

+ пункт 7.1 Управление соединением



В LETODB в этом плане масса способов что бы проверить запущен ли (работает) LETODB по сравнению с ADS

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




Пост N: 506
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.03.15 00:10. Заголовок: alkresin, Pasha, а м..


alkresin, Pasha, а можно добавить в letodb аналог функций:
Local date, time // time идет с миллисекундами
hb_fGetDateTime(cPath+"test1"+".dbf", @date, @time)
hb_fSetDateTime(cPath+"test1"+".dbf", @date, @time)
например:
aDateTime := leto_fGetDateTime(cPath+"test1"+".dbf")
leto_fSetDateTime(cPath+"test1"+".dbf", date, time) если data и time не заданы - ставить дату времемя сервера
таким образом можно отслеживаить менялясь таблица или нет без открытия оной


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




Пост N: 3248
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.03.15 12:22. Заголовок: Andrey пишет: Как м..


Andrey пишет:

 цитата:
Как можно отловить перезагрузку и работоспособность сервера LetoDB ?
Т.е. при обращениях к ЛетоДБ как проверять, доступен он или нет (инет упал, сервер перегрузился и т.д.) -
как обрабатывать ошибки ?



Можно после вызова leto_Conntct (или без него, соединение автоматически будет установлено при первом вызове команды use) опрашивать сервер вызовом функции LETO_MGGETINFO.
Если ответ получен - значит, сервер работает, если нет - упал, тогда надо пробовать переконнектиться.
Конечно, letodb не рассчитан на нестабильное соединение. Если работать с ним в таком режиме, то надо обязательно для любых изменений БД использовать транзакции.


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




Пост N: 3249
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.03.15 12:27. Заголовок: SergKis пишет: а мо..


SergKis пишет:

 цитата:
а можно добавить в letodb аналог функций:
Local date, time // time идет с миллисекундами
hb_fGetDateTime(cPath+"test1"+".dbf", @date, @time)
hb_fSetDateTime(cPath+"test1"+".dbf", @date, @time)
например:
aDateTime := leto_fGetDateTime(cPath+"test1"+".dbf")
leto_fSetDateTime(cPath+"test1"+".dbf", date, time) если data и time не заданы - ставить дату времемя сервера
таким образом можно отслеживаить менялясь таблица или нет без открытия оной



Формат dbf предусматривает только хранение даты изменения файла, но не времени. Поэтому стандартными средствами rdd это не сделаешь. Ну а нестандартными - можно создать отдельную таблицу dbf на сервере с полями:
имя файла, дата и время изменения.
Поскольку это нестандартное решение, то включать его в базовую функциональность letodb я смысла не вижу.
Такие функции можно сделать в модуле letoudf.hrb.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4579
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.03.15 15:17. Заголовок: SergKis Можно ведь ..


SergKis
Можно ведь сделать по аналогии

Pasha пишет: (из прошлой темы)

 цитата:

В source\server\server.prg надо добавить функцию:

FUNCTION leto_VolSerial( nUserStru )
RETURN VolSerial()

линковать сервер с hbct.lib

Вызов с клиента:
leto_UDF("leto_VolSerial")

Тоже самое можно сделать с mac-адресом, надо только найти такую функцию в харборе.
Только в сырцы letodb я это включать не хочу, все-таки другая специфика.






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




Пост N: 507
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.03.15 15:18. Заголовок: Pasha пишет:Поэтому ..


Pasha пишет:
 цитата:
Поэтому стандартными средствами rdd это не сделаешь.


Вы правы, но есть стандартные средства windows, хранящие данные о времени создания файла, модификации, последненго использования (с миллисекундами) - почему не воспользоваться этим - это все без открытия файла, что несомненное преимущество по скорости в сравнении с различными таблицами. Давно использую такую методу на cdx и ntx файлах и в двух поточной старой версии letodb (с исп. триггера), конечно, есть особенности применения. Например:
если Share_Tables = 1, то можно цепляться к самой таблице (dbf), dbCommit() и dbCloseArea() меняют дату, время в файле и эти изменения видны с др. клиента.
если Share_Tables = 0, тогда надо использовать файл рядом с таблицей и расширением (например) .dtm (когда создаем dbCreate(...) сразу создаем рядом файл Leto_MemoWrite( cFileName+'.dtm', "for TimeStamp" )) и всегда, когда надо, делаем типа leto_fSetDateTime(cFileName+'.dtm'), с др. клиента читаем leto_fGetDateTime(cFileName+'.dtm') и сравниваем с запомненнным ранее значением ...
на мой взгляд эти функции относятся к файловым как leto_fErase, leto_file, ... сколько было споров о нужности функции Leto_MemoWrite ...
конечно добавить такой функционал в свою версию - это будет, я подумал может еще кому такое надо - потому и предложил



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




Пост N: 508
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.03.15 15:26. Заголовок: Dima пишет:Можно вед..


Dima пишет:
 цитата:
Можно ведь сделать по аналогии


мас адрес и VolSerial никакого отношения к таблице сервера не имеют, я говорю о работе с конкретной таблицой и ее данными

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4580
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.03.15 15:36. Заголовок: SergKis Да согласен..


SergKis
Да согласен.

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




Пост N: 4044
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.03.15 23:41. Заголовок: Pasha пишет: опраши..


Pasha пишет:

 цитата:
опрашивать сервер вызовом функции LETO_MGGETINFO.
Если ответ получен - значит, сервер работает, если нет - упал, тогда надо пробовать переконнектиться.


Спасибо, я про это и спрашивал !

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




Пост N: 4067
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.03.15 03:01. Заголовок: Всем доброй ночи......


Всем доброй ночи.... Пробовать новое получается только по ночам...
Начал пробовать LetoDB+MiniGui.
Еле запустил простой пример создания базы... По разному пробовал и без letodb.ini и с ним, сообщает об успехе коннекта, а базу создать не может:
Error DBFCDX/1004 Create error: \DATA\test866.dbf
Error DBFCDX/1004 Create error: \DATA\\127.0.0.1:2812test866.dbf
Error DBFCDX/1004 Create error: \DATA\test866.dbf
Error DBFCDX/1004 Create error: ..\DATA\test866.dbf

Решил кардинально, через letodb.ini - указав DataPath=C:\LetoDB\DATA

Установил на сервер в инете, попытался 4000 записей сразу создать, результат 8 минут и AVI-ка ожидания висит...
Ладно, фиг с ней.
Можно как то бегунок отражать на экране, допустим при создании базы ?
Это не критично, но просто для примера, понять как можно делать.
И второй вопрос, а как можно создать/открыть базу на локальном компе одновременно с LetoDB и скопировать записи с сервера, к себе на комп в локальную базу ?


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 101
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 28.03.15 03:46. Заголовок: Здравствуйте! Пытаюс..


Здравствуйте!
Пытаюсь собрать LetoDB 2.09 под Harbour 3.0.0 (Rev. 16951) на CentOS release 6.5 (Final).
Harbour 3.0.0 собрался прекрасно, никаких ошибок нет.
LetoDB вроде тоже нормально собирается, но на стадии линковки выдаёт следующую ошибку:
[root@57461-6 letodb-2.09-win]# make -f Makefile.linux  
gcc obj/linux/server.o obj/linux/common.o obj/linux/hbip.o obj/linux/common_c.o obj/linux/blowfish.o obj/linux/leto_2.o obj/linux/letofunc.o obj/linux/letolist.o obj/linux/letoacc.o obj/linux/letovars.o obj/linux/leto_lnx.o obj/linux/errint.o obj/linux/errorsys.o -obin/letodb -L/apps/harbour/lib -Wl,--start-group -lhbvm -lhbrtl -lhbcpage -lhblang -lhbrdd -lhbrtl -lhbmacro -lhbpp -lgtstd -lrddntx -lrddcdx -lrddfpt -lhbcommon -lhbsix -Wl,--end-group -lm -lpthread
/usr/bin/ld: cannot find -lhbvm
collect2: ld returned 1 exit status

С путями вроде всё нормально, файл /apps/harbour/lib/linux/gcc/libhbvm.a существует.
В чём может быть проблема?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 873
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 09:52. Заголовок: Andrey пишет: Устан..


Andrey пишет:

 цитата:
Установил на сервер в инете, попытался 4000 записей сразу создать, результат 8 минут


Естественно, это же 4000 обращений к серверу и 4000 ответов. Оформите это как транзакцию, или серию транзакций по группе записей в пакете - и количество обращений туда-сюда, а, соответственно, и затраченное время в разы уменьшится.


 цитата:
Можно как то бегунок отражать на экране, допустим при создании базы ?


Отражайте, кто вам мешает ? LetoDB тут ни при чем, он предназначен только для операций с БД и не знает, какой интерфейс у вас используется ( консоль, та или иная GUI библиотека ).

 цитата:
а как можно создать/открыть базу на локальном компе одновременно с LetoDB и скопировать записи с сервера, к себе на комп


use (cRemotePath + "db1") new via LETO
use (cLocalPath + "db2") new via DBFCDX
append from db1


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 874
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 09:56. Заголовок: SkyNET пишет: gcc ...


SkyNET пишет:

 цитата:
gcc ... -obin/letodb -L/apps/harbour/lib ...
/usr/bin/ld: cannot find -lhbvm



Путь к библиотекам прописан: /apps/harbour/lib, а они у вас, по вашим словам, в /apps/harbour/lib/linux/gcc/libhbvm.a

Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 4615
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.03.15 11:20. Заголовок: alkresin пишет: Ест..


alkresin пишет:

 цитата:
Естественно, это же 4000 обращений к серверу и 4000 ответов. Оформите это как транзакцию



Это как ?
Было к примеру.
 
For J=1 to 4000
dbappend()
Next


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




Пост N: 516
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.03.15 12:41. Заголовок: Andrey пишет: letodb..


Andrey пишет:
 цитата:
letodb.ini - указав DataPath=C:\LetoDB\DATA


мой letodb.ini :
[Main]
Port = 2812
DataPath = .
EnableFileFunc = 1
каталог DATA создаешь сам, дальше LETO_MAKEDIR( cDirName )
загрузку примерно так делаю:Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 875
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 13:03. Заголовок: Dima пишет: Это как..


Dima пишет:

 цитата:
Это как ?
Было к примеру.

For J=1 to 4000
dbappend()
Next


Например, так:
For J=1 to 40
begin transaction
for j1 := 1 to 100
dbappend()
next
end transaction
Next

Все, что между begin transaction ... end transaction отправляется на сервер одним пакетом.

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4070
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.03.15 14:02. Заголовок: SergKis пишет: загр..


SergKis пишет:

 цитата:
загрузку примерно так делаю



alkresin пишет:

 цитата:
Все, что между begin transaction ... end transaction отправляется на сервер одним пакетом.



Спасибо БОЛЬШОЕ !!!

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4616
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.03.15 14:58. Заголовок: alkresin пишет: Все..


alkresin пишет:

 цитата:
Все, что между begin transaction ... end transaction отправляется на сервер одним пакетом



А если вот так , это оптимально будет или нет ?
На других станциях юзеры не испытают проблем с этой базой ?
 
begin transaction
do While !test->(eof())
sum+=test->summa
test->(dbskip())
enddo
end transaction



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 876
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 15:25. Заголовок: Dima пишет: А если ..


Dima пишет:

 цитата:
А если вот так , это оптимально будет или нет ?


Транзакции применяются исключительно для записи данных. После begin transaction все операции добавления/изменения накапливаются в буфере и после end transaction передаются на сервер, где и исполняются - или все, или ни одна.
Операции чтения при транзакциях работают также, как и без них, так что в приведенном вами коде begin transaction, end transaction ничего не изменят.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4617
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.03.15 15:30. Заголовок: alkresin Понял. Спа..


alkresin
Понял. Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 878
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 15:45. Заголовок: Для ускорения операц..


Для ускорения операций чтения возможен другой вариант:
LETO_SETSKIPBUFFER( nSkip ) - установить размер буфера чтения. Если, например, вы установили его в 100 ( по умолчанию, кажется 10 ) - то при dbSkip(1), если следующей записи нет в буфере, считываются сразу 100 записей - и, соответственно, следующие 100 dbskip(1) не будут обращаться к серверу.
Потом лучше, наверное, опять уменьшить буфер - если читать помногу записей без надобности, это может затормозить работу.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4618
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.03.15 16:17. Заголовок: Я пробовал играться ..


Я пробовал играться с аналогом LETO_SETSKIPBUFFER , в ADS и особого ускорения не увидел.
Пробовал руками разные значения и спец функцию........

Функция такая , для определения кол-ва кэшируемых записей
 
Func LenReCash(als)
local ret:=0
local i
FOR i = 1 TO (als)->(fcount())
ret+=(als)->(FIELDSIZE(i))
NEXT

ret+=4

return int((65535/ret)/5.4)



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 879
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 17:02. Заголовок: Честно говоря, не по..


Честно говоря, не понял, как это определяет количество кэшируемых записей и что это за магические числа = 65535 и 5.4 :).
Не помню уже аналог из ADS, но для LetoDB эта функция ( leto_setskipbuffer()) реально работает, если применять ее по назначению - например, увеличить буфер при последовательном чтении dbf.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4619
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.03.15 17:17. Заголовок: alkresin пишет: Не ..


alkresin пишет:

 цитата:
Не помню уже аналог из ADS


AdsCacheRecords()

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 102
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 28.03.15 19:18. Заголовок: alkresin пишет: Пут..


alkresin пишет:

 цитата:
Путь к библиотекам прописан: /apps/harbour/lib, а они у вас, по вашим словам, в /apps/harbour/lib/linux/gcc/libhbvm.a


Спасибо, действительно, не обратил внимания.

Но теперь возникла другая ошибка:
gcc obj/linux/server.o obj/linux/common.o obj/linux/hbip.o obj/linux/common_c.o obj/linux/blowfish.o obj/linux/leto_2.o obj/linux/letofunc.o obj/linux/letolist.o obj/linux/letoacc.o obj/linux/letovars.o obj/linux/leto_lnx.o obj/linux/errint.o obj/linux/errorsys.o -obin/letodb -L/apps/harbour/lib -Wl,--start-group -lhbvm -lhbrtl -lhbcpage -lhblang -lhbrdd -lhbrtl -lhbmacro -lhbpp -lgtstd -lrddntx -lrddcdx -lrddfpt -lhbcommon -lhbsix -Wl,--end-group -lm -lpthread 
obj/linux/leto_2.o: In function `thread2':
leto_2.c:(.text+0x79d): undefined reference to `hb_vmThreadInit'
leto_2.c:(.text+0x918): undefined reference to `hb_vmThreadQuit'
collect2: ld returned 1 exit status
make: *** [bin/letodb] Error 1


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 880
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 19:38. Заголовок: SkyNET пишет: gcc ...


SkyNET пишет:

 цитата:
gcc ... -obin/letodb -L/apps/harbour/lib -Wl,--start-group -lhbvm -lhbrtl ...



Вообще-то здесь должна быть hbvmmt, а не hbvm. Какая у вас версия letodb и где вы ее взяли ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 881
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 19:50. Заголовок: alkresin пишет: Как..


alkresin пишет:

 цитата:
Какая у вас версия letodb и где вы ее взяли ?


Ясно, у нас там лежит для скачивания старая версия.

Воспользуйтесь CVS:

@echo off
SET CVSROOT=:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb
SET HOME=C:\CVS\

c:\cvs\cvs login
c:\cvs\cvs checkout -r rel-1-mt -P letodb

Или на Sourceforge вот тут: http://letodb.cvs.sourceforge.net/viewvc/letodb/letodb/?pathrev=rel-1-mt внизу страницы - Download GNU tarball

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 882
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 20:32. Заголовок: Загрузил на Sourcefo..


Загрузил на Sourceforge letodb-2.15-src.zip - самые свежие исходники.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 103
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 29.03.15 17:46. Заголовок: alkresin пишет: Ясн..


alkresin пишет:

 цитата:
Ясно, у нас там лежит для скачивания старая версия.


alkresin пишет:

 цитата:
Или на Sourceforge вот тут: http://letodb.cvs.sourceforge.net/viewvc/letodb/letodb/?pathrev=rel-1-mt внизу страницы - Download GNU tarball



Спасибо, с новой версией собралось без проблем.

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




Пост N: 4073
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.15 18:12. Заголовок: alkresin пишет: Все..


alkresin пишет:

 цитата:
Все, что между begin transaction ... end transaction отправляется на сервер одним пакетом.


Что то не компилируется... Выдает ошибку:
Harbour 3.2.0dev (r1503131756)
Copyright (c) 1999-2015, http://harbour-project.org/
demo_letodb.prg(269) Error E0030 Syntax error "syntax error at 'TRANSACTION'"
demo_letodb.prg(298) Error E0010 ENDIF does not match IF
2 errors


Может в коде неправильно ставлю ?
Скрытый текст



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


Пост N: 1039
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.03.15 20:01. Заголовок: 1. REQUEST LETO не з..


1. REQUEST LETO не забыл?
2. И может на самом деле проблема в "demo_letodb.prg(298) Error E0010 ENDIF does not match IF" ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 883
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.03.15 20:04. Заголовок: Это я уже подзабыл. ..


Это я уже подзабыл.
Правильно будет:
LETO_BEGINTRANSACTION()
...
LETO_COMMITTRANSACTION()

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


Пост N: 1040
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.03.15 20:06. Заголовок: alkresin пишет: Пра..


alkresin пишет:

 цитата:
Правильно будет:
LETO_BEGINTRANSACTION()
...
LETO_COMMITTRANSACTION()



Да, точно. )

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




Пост N: 517
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.03.15 21:04. Заголовок: Andrey а мой пример..


Andrey
а мой пример не смотрел ?
там же все есть, даже с буфером для транзакции
(его размер по умолчанию, раньше был небольшой и при широкой записи были
проблемы - буфер перевыделялся и загрузка шла долго, потом Pasha подправлял)
я всегда использую буфер

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4621
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.15 21:19. Заголовок: Andrey Заведи #comm..


Andrey
Заведи
#command BEGIN TRANSACTION => LETO_BEGINTRANSACTION()
#command END TRANSACTION => LETO_COMMITTRANSACTION()


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




Пост N: 4074
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.15 22:54. Заголовок: Dima пишет: а мой п..


Dima пишет:

 цитата:
а мой пример не смотрел ?


Смотрел, просто решил маленький пример сначала сделать, а потом уж поболее делать.

PSP пишет:

 цитата:
1. REQUEST LETO не забыл?
2. И может на самом деле проблема в "demo_letodb.prg(298) Error E0010 ENDIF does not match IF" ?


1) Стоит.
2) до этого не доходить, ошибка компиляции до этого, а эта ошибка неправильно вылазит..

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




Пост N: 4075
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.15 23:06. Заголовок: alkresin пишет: LET..


alkresin пишет:

 цитата:
LETO_BEGINTRANSACTION()
...
LETO_COMMITTRANSACTION()



Компилирует нормально, но вылетает при работе:
Error DBFCDX/1031 Синтаксическая ошибка</p><BR>
Called from LETO_COMMITTRANSACTION(0)
Called from CREATEDBF1251(290)
Called from (b)MAIN(87)
Called from _DOCONTROLEVENTPROCEDURE(1651)
Called from EVENTS(1516)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1373)
Called from MAIN(125)

Строка (290) - LETO_COMMITTRANSACTION()

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




Пост N: 4076
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.15 01:16. Заголовок: alkresin пишет: Ест..


alkresin пишет:

 цитата:
Естественно, это же 4000 обращений к серверу и 4000 ответов. Оформите это как транзакцию, или серию транзакций по группе записей в пакете - и количество обращений туда-сюда, а, соответственно, и затраченное время в разы уменьшится.


Я был не прав. Тормоза в тесте были от показа GRID'a !
Сделал правильный тест, 5000 записей (4 поля) :
1) отправка на сервер в инете (в моем городе) БЕЗ транзакций: 15 сек.
2) отправка на сервер в инете (в Москву) БЕЗ транзакций: 1 мин. 57 сек.

Просто супер... Не знаю как дальше будет, если базу увеличить...
Бегунок тоже сделал.... Только AVI-ка замирает при передаче... Не особенно красиво, хотя собираю с ключом -mt.

Кому интересно - вот пример на МиниГуи https://cloud.mail.ru/public/0a167351289f/LetoDB-demo-MiniGui.7z


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




Пост N: 518
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 08:25. Заголовок: Andey пишет: вот при..


Andey пишет:
 цитата:
вот пример на МиниГуи


1. вынеси connect до окна (если его нет, то сообщение и конец) или в oninit (тогда сначала контрлы hide или disable,
если connect есть переводи в рабочее соостояние, иначе сообщение ...).
2. в цикл загрузки ставь do events
3. если файл на сервере постоянный и с индексами, то делай OrdSetFocus(0), zap, загрузку, reindex, OrdSetFocus(1)
4. не мучай grid перезагрузкой Item-ов, используй browse (skipbuffer устанавливай в кол-во строк в browse (default 10))
5. получить длину записи области RecSize()+1, или посчитать длины из dbStruct() и +1.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 884
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 30.03.15 09:53. Заголовок: Andrey пишет: Компи..


Andrey пишет:

 цитата:
Компилирует нормально, но вылетает при работе:
Error DBFCDX/1031 Синтаксическая ошибка</p><BR>
Called from LETO_COMMITTRANSACTION(0)


Вставьте перед LETO_COMMITTRANSACTION():

SELECT TEMP1251

Уж не помню, почему это было сделано, но при committransaction текущей должна быть удаленная таблица.


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




Пост N: 519
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 10:15. Заголовок: Andrey пишет:Строка ..


Andrey пишет:
 цитата:
Строка (290) - LETO_COMMITTRANSACTION()


транзакция leto для областей rdd LETO, для др. rdd могут быть свои механизмы транзакций
...
SELECT TEMP866
SKIP
ENDDO
// здесь DBFCDX !!!
LETO_COMMITTRANSACTION()
//end transaction

alkresin пишет:
 цитата:
Вставьте перед LETO_COMMITTRANSACTION():
SELECT TEMP1251


+1

SergKis пишет:
 цитата:
// текущий alias это LETO таблица -
leto_BeginTransaction(nMaxBuf)...


просто Андрею немного внимательней надо см. примеры

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




Пост N: 4077
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.15 11:45. Заголовок: SergKis пишет: прос..


SergKis пишет:

 цитата:
просто Андрею немного внимательней надо см. примеры


Да это уж точно...
Просто внимания уже не хватает, раньше быстрей схватывал.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4622
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.03.15 13:59. Заголовок: Andrey Так может те..


Andrey
Так может тебе сюда уже ;) http://clipper.borda.ru/?1-1-0-00000427-000-140-0#060

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 07.02.13
ссылка на сообщение  Отправлено: 30.03.15 14:39. Заголовок: Dima пишет: Продолж..


Dima пишет:

 цитата:
Продолжаем тут


Как-то странно создано продолжение. А где начало?
Открываешь тему, жмёшь на стр. 2 или 3 и остальные стр. в перечислении пропадают!

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




Пост N: 4079
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.15 14:49. Заголовок: marrinass пишет: От..


Dima пишет:

 цитата:
Andrey
Так может тебе сюда уже


Согласен ! Нечего засорять ветку другими сообщениями...

marrinass пишет:

 цитата:
Открываешь тему, жмёшь на стр. 2 или 3 и остальные стр. в перечислении пропадают!


Ага, и у меня так же...

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




Пост N: 4081
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.15 15:12. Заголовок: Тест, 5000 записей (..


Тест, 5000 записей (4 поля) :
1) отправка на сервер через инете (в моем городе) БЕЗ транзакций: 13 сек.
отправка на сервер через инете (в моем городе) С транзакцией: 4 сек.

2) отправка на сервер через инете (сервер в Москве) БЕЗ транзакций: 2 мин. 01 сек.
отправка на сервер через инете (сервер в Москве) С транзакций: 3 сек.



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 217
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 30.03.15 15:21. Заголовок: Вопрос к гуру : Е..


Вопрос к гуру :
Есть - WEB-сайт . Крутится вроде на LINUX (точную версию пока не знаю) . Там есть MySQL и кой-какие базы (для сайта) работают . Хочется использовать сайт для обмена данными с программами на Harbour :
Запись информации в БД на сервер , Скачивание , выборка по параметрам , и т д . Он-лайн торговля (через клиентское приложение )

Отсюда два варианта :
1) Использовать MySQL
2) Использовать LETO_DB

По первому варианту - не могу понять в какую сторону рыть для начала ....
По второму - видимо нужно скомпилировать LETO_DB для работы в LINUX .... опять-же - трудности с этим ....
Если кто-то может дать подробную инструкцию - буду благодарен !

Сам склоняюсь к использованию LETO_DB .... :)




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




Пост N: 4083
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.15 15:28. Заголовок: Softlog86 пишет: По..


Softlog86 пишет:

 цитата:
По второму - видимо нужно скомпилировать LETO_DB для работы в LINUX .... опять-же - трудности с этим ....
Если кто-то может дать подробную инструкцию - буду благодарен !


http://dimao.blogspot.ru/p/blog-page.html

Без точной версии LINUX собрать невозможно.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 218
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 30.03.15 15:32. Заголовок: Версию узнаем .... В..


Версию узнаем .... Вопрос - кто соберет под нужную ОС ? : и поможет с запуском sm20:

Server Type :
Apache/2.2.14 (FreeBSD) PHP/5.2.12 with Suhosin-Patch mod_fcgid/2.3.5 mod_ssl/2.2.14 OpenSSL/0.9.7e-p1


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




Пост N: 520
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 16:12. Заголовок: Andrey ты просил на..


Andrey
ты просил набросать. вот что то набрал (дополняй сам):
Скрытый текст

если что спрашивай

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




Пост N: 521
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 16:21. Заголовок: Andrey вместо LOCAL..


Andrey
вместо LOCAL ... lUnique надо lUnq в FUNC Table_Create(...)

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




Пост N: 522
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 16:23. Заголовок: Dima не увидел про ..


Dima
не увидел про перенос темы, извини и перекинь мои крайние посты тоже. Спасибо

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




Пост N: 523
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 16:30. Заголовок: Softlog86 Есть - WE..


Softlog86

 цитата:
Есть - WEB-сайт


1. он Ваш или сторонний и у вас только hosting ?
2. он на CMS или как то иначе ?
3. Он-лайн торговля (через клиентское приложение ) на hb или как то иначе ?


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




Пост N: 4087
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.15 16:34. Заголовок: SergKis пишет: есл..


SergKis пишет:

 цитата:

если что спрашивай


Слишком много буковок... Пошёл разбираться.... СПАСИБО БОЛЬШОЕ !

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 219
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 30.03.15 16:56. Заголовок: 2 SergKis отвечаю :..


2 SergKis
отвечаю :
1. он Ваш или сторонний и у вас только hosting ?
-> НАШ - связь с автором сайта ЕСТЬ
2. он на CMS или как то иначе ?
-> не знаю что это такое :( спросим у автора
3. Он-лайн торговля (через клиентское приложение ) на hb или как то иначе ?
-> есть клиентское приложение на HARBOUR+MINIGUI - программа прайс-лист с возможностью заказов (плюс базы данных по кросс-кодам и тд - .DBF) собственно это приложение и хочу переделать для работы не по FTP а сразу с БД на сервере ....


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




Пост N: 525
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 17:04. Заголовок: Softlog86 Спасибо. ..


Softlog86
Спасибо. понятно, что в данном случае все в ваших руках.
и если используется cms (инструмент создания сайтов) с mysql, то из своего приложения туда тоже можно достучаться, есть rdd в hb для работы с mysql

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4625
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.03.15 17:54. Заголовок: marrinass пишет: От..


marrinass пишет:

 цитата:
Открываешь тему, жмёшь на стр. 2 или 3 и остальные стр. в перечислении пропадают!


Это косяк движка форума.

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




Пост N: 526
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 18:40. Заголовок: Dima пишет:Это косяк..


Dima пишет:
 цитата:
Это косяк движка форума


в GUI потыкал некоторые темы, там нормально.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 885
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 31.03.15 09:14. Заголовок: Softlog86 пишет: За..


Softlog86 пишет:

 цитата:
Запись информации в БД на сервер , Скачивание , выборка по параметрам , и т д . Он-лайн торговля (через клиентское приложение )
Отсюда два варианта :
1) Использовать MySQL
2) Использовать LETO_DB


Слишком мало конкретной информации, чтобы посоветовать тот или иной вариант. Вот, например, клиентское приложение для онлайн торговли - что имется ввиду, веб-магазин ?


 цитата:
По первому варианту - не могу понять в какую сторону рыть для начала ....


contrib/hbmysql - вполне работающая библиотека, я ее лет 10 назад начал использовать для некоторых мелочей.

 цитата:
По второму - видимо нужно скомпилировать LETO_DB для работы в LINUX .... опять-же - трудности с этим ....


А какие именно трудности ? Просто запускаете make_linux.sh, предварительно поставив свои пути Harbour.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 886
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 31.03.15 09:19. Заголовок: Andrey пишет: Без т..


Andrey пишет:

 цитата:
Без точной версии LINUX собрать невозможно.


Версия Linux не имеет значения. Главное - правильно указать пути к Harbour, самому компилятору, библиотекам и include.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 220
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 31.03.15 11:34. Заголовок: Если-б кто скинул го..


Если-б кто скинул готовый LITO_DB сервер для указанной системы (FreeBSD).... для пробы пера так сказать .... (пока устанивлю LINUX , пока скачаю нужные компоненты для компиляции ... нет времени ... ведь есть основная работа и она не ждёт )
Пойду тормошить разработчика сайта чтоб сказал что делать для запуска LETO на WEB_сервере .....



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 887
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 31.03.15 11:52. Заголовок: Softlog86 пишет: Ес..


Softlog86 пишет:

 цитата:
Если-б кто скинул готовый LITO_DB сервер для указанной системы (FreeBSD)


У меня нету.

 цитата:
Пойду тормошить разработчика сайта чтоб сказал что делать для запуска LETO на WEB_сервере


Для однократного запуска - просто запустить ./letodb.
Где прописать, чтобы LETO сам запускался при включении сервера - это вопрос к тем, кто знаком с FreeBSD.

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




Пост N: 529
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.03.15 13:53. Заголовок: Softlog86 пишет: для..


Softlog86 пишет:
 цитата:
для пробы пера так сказать...


для пробы (отработки методик) достаточно и localhost в win, в сети потом даже быстрее фурычит


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 221
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 31.03.15 14:24. Заголовок: Локальное лето в WIN..


Локальное лето в WINDOWS уже работает ( в других приложениях) .... Проба заключается в работе именно с хранилищем в Интернете на нашем Сайте ....


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




Пост N: 530
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.03.15 14:55. Заголовок: Softlog86 пишет:с хр..


Softlog86 пишет:
 цитата:
с хранилищем в Интернете на нашем Сайте ....


если ваш сайт cms (типа joomla) с mysql, то доступ к letodb в основмном через cgi. у нас именно такой вариант был, мы с него ушли (все работало, но при разрастании все становилось не удобным, громоздким). развите требовало загружать mysql+php, но не хотелось уходить с hb. Перешли к варианту joomla (для сайта клиента - доомоуправление, жск ... со своей инф. ) + http сервер на hb (на базе http://www.dbtopas.lt/hrb/uhttpd-0.3.zip) + letodb (Share_Tables = 1). задача квартплата работает с letodb, заполнение счетчитчиков по воде жильцами возможна с сайта и отчеты по ней на сайте. такая схема работает уже полгода в нескольких домоуправлениях. все очень стабильно, быстро. Для развития сайта (возможно даже замена какихто режимов на MiniGui) смотрим в сторону http://w2ui.com

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 222
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 31.03.15 16:59. Заголовок: Ой как сложно ... З..


Ой как сложно ...
Задача простая : У клиента установлена программа на Харборе . Работаем с DBF-файлами . Обмен (обновление локальных данных и отправка своих : заказов идёт через FTP на сайт в определенные папки )

Пользователей всего-то около трёх сотен . Работает одновременно - максимум 20-30 . И то - скачивают новые прайсы / остатки и т д .... опять-же - это по FTP . Хотелось-бы чтоб коннектились к таблицам на сайте и тащили только новую информацию а не все таблицы ....


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




Пост N: 531
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.03.15 17:05. Заголовок: Softlog86 Вы так и ..


Softlog86
Вы так и не ответили на чем Ваш сайт. Статические страницы (на ftp закидываются) или apache+mysql+php. не могу понять доступ через Chrome\Explorer к страницам вашей информации, если есть ввод на страницах - как попадает в базу ?

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




Пост N: 532
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.03.15 17:21. Заголовок: Softlog86 пишет: Обм..


Softlog86 пишет:
 цитата:
Обмен (обновление локальных данных и отправка своих : заказов идёт через FTP на сайт в определенные папки )


это задача не сайт, такой вариант у меня тоже есть: Clipper+localdbf+mysql+ftp, при переводе на hb, получилось local dbf+letodb, т.е. задача (отчеты, справочники, операт. информация - local инф.) letodb - производная база от local, hb console+MiniGui работают с letodb (могут и с local по устан.) изменения с letodb попадают на local по запросам (timer), так проще было переводить с clipper и + требования клиента о живучести (оперативная работа склад, торговые точки, ...) если летит сервер - проблем не должно быть, клиент у кассы ждать не будет.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 223
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 31.03.15 21:12. Заголовок: Уточнение : У клиент..


Уточнение :
У клиентов - EXE-модуль на HARBOUR+MINIGUI .
Локальные файлы - .DBF : Это различные таблицы - список товаров , кросс-коды , и т д .

На FTP-сервере в Интернет (физически на нашем информационном сайте ) в различных папках , к которым есть доступ по паролю находятся ZIP(внутри - таблицы DBF). Клиент выбирает пункт "ОБНОВИТЬ БАЗЫ ДАННЫХ" . Прога лезет на FTP и скачивает к себе что нужно : Раскрывает архивы , извлекает .DBF и из них переписываетв в свои локальные базы нужную информацию .
Разумеется - это всё статические данные , которые НА FTP мы забрасываем по мере необходимости .

Задача - при ОБНОВЛЕНИИ ( клиентом) - идёт подключение (через MySQL или LETO_DB ) к соответствующим таблицам в Интернете и считываем нужные данные , одновременно записывая в локальные базы (обновление или добавление ) . При этом клиент записывает и на сервер какую-то информацию (лог работы , собранные собственные данные : заявки/заказы/отчеты и т д)

Разница в том , что при таком способе нет необходимости гнать файлы ( до 2-5 Мбайт x 2-50 шт)






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




Пост N: 533
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.03.15 22:04. Заголовок: Softlog86 пишет:У кл..


Softlog86 пишет:
 цитата:
У клиентов - EXE-модуль на HARBOUR+MINIGUI .


я уже понял, что у Вас "толстый" клиент на hb и файловый сервер на ftp. т.е. та же технология, что у меня было на Clipper ...(см. пост выше) и Вам требуется перейти на letodb или mysql вместо ftp.
Если у Вас hb+MiniGui локально решают все вопросы, а ftp - хранилище zip данных, то, на мой взгляд, letodb лучше - проще.
1. Разделите dbf файлы на рабочие (local) и серверные.
2. Сделайте модуль загрузки инф. на сервер
3. Задайте пути на сервер для серверных файлов (надо учесть разницу файловых функций leto_file и file, ...)
и практически вперед ... (конечно нюансов Вашей задачи я не знаю)
пока нет версии под линукс, делайте все на win версии - чтобы время не терять

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 224
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 31.03.15 22:54. Заголовок: Да , но нужно чтоб с..


Да , но нужно чтоб сервер LETO работал на нашем виртуальном сервере (LINUX FreeBSD :наш сайт крутится там - и соответственно базы лежат которые LETO и будет обрабатывать )

По-любому нужно
1) LETO_DB Сервер для LINUX
2) в настройках сервера сделать его запуск




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




Пост N: 534
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.15 09:35. Заголовок: Softlog86 пишет:Да ,..


Softlog86 пишет:
 цитата:
Да , но нужно чтоб сервер LETO работал на нашем виртуальном сервере


Так я не возражаю, только какя польза будет, если сервер УЖЕ крутится, а задача об этом ничего не знает.
Главное, что бы задача умела работать с сервером, а где он запущен - вторично. И времени на это может уйти больше.

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




Пост N: 535
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.15 09:44. Заголовок: PS. Задачу с letodb,..


PS. Задачу с letodb, делаю, отлаживаю в local 127.0.0.1:2812, по мере готовности проверяю в локальной сети, с letodb в инет на удаленном сервере и + через мобильньный модем соединение.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 225
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 01.04.15 10:57. Заголовок: Ребята , в локально..


Ребята , в локальной сети LETO уже работает и все нужные мне действия производит . Нужно разместить Лето-сервер на LINUX-машине (Виртуальный сервер ) ... и пробовать 'достучаться' к нему по Интернету (IP):
Прилагаю скриншоты :
БАЗЫ ДАННЫХ САЙТА

ФАЙЛОВАЯ СИСТЕМА

ИНФОРМАЦИЯ О САЙТЕ





Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 889
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.04.15 11:28. Заголовок: Softlog86 пишет: Ну..


Softlog86 пишет:

 цитата:
Нужно разместить Лето-сервер на LINUX-машине (Виртуальный сервер ) ... и пробовать 'достучаться' к нему по Интернету (IP):


1) Скопируйте туда исходники Harbour
2) Откомпилируйте
3) Скопируйте исходники LetoDb
4) Откомпилируйте

Если у вас есть доступ к нему по ssh, это делается достаточно просто и быстро.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 226
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 01.04.15 11:58. Заголовок: Это виртуальный серв..


Это виртуальный сервер от VDS . Я из браузера туда захожу через какую-то консоль .....
думаю проще будет установить Линукс на свой комп и пробовать создать Лето ...:)
Что куда потом прописывать чтоб сервер стартовал на той виртуальной машине в сети (у хостера) ...- вот тут нужна помощь тех кто уже делал такое ...


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 890
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.04.15 12:59. Заголовок: Softlog86 пишет: ду..


Softlog86 пишет:

 цитата:
думаю проще будет установить Линукс на свой комп


в смысле, FreeBSD ( это не Linux, вообще-то ).


 цитата:
Что куда потом прописывать чтоб сервер стартовал на той виртуальной машине в сети (у хостера)


Т.е., сервер, все-таки, не ваш, имеется еще хостер А он согласится установить у себя LetoDb ? Обычно хостеры крайне неохотно идут на установку неизвестных им лично программ. Вот хостеры моего сайта не захотели даже fossil устанавливать - именно по той причине, что это, по их мнению, неизвестно что :) - я, правда, и не настаивал.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 227
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 01.04.15 13:21. Заголовок: Я думал что если мы ..


Я думал что если мы купили хостинг на их машине - значит можем там делать всё что захотим ,,,,, а тут вот значит какая загогулина
есть ещё и подводные камни с установщиками ....

Значит нужно пробовать работать с MySQL . К этим базам мы можем подключиться из HARBOUR ?
Что посоветуете попробовать ?
Пока буду играться с примерами из комплекта MiniGUI ....


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 891
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.04.15 13:55. Заголовок: Softlog86 пишет: Я ..


Softlog86 пишет:

 цитата:
Я думал что если мы купили хостинг на их машине - значит можем там делать всё что захотим


Если вы купили виртуальную машину, изолированную от физического сервера, то, наверное, вы можете устанавливать все, что угодно, т.к. падение этой виртуальной машины вызовет проблемы только у вас.
В любом случае, свяжитесь с хостером и выясните у него все.

 цитата:
Значит нужно пробовать работать с MySQL . К этим базам мы можем подключиться из HARBOUR ?
Что посоветуете попробовать ?


harbour/contrib/hbmysql - этого будет достаточно.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 6
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 05.04.15 16:43. Заголовок: Добавить функционал


Есть ли возможность биндить сервер к одному конкретному адресу, если нет, возможно ли добавить?
Возможно ли добавить в Leto DB функцию эквивалентную FCREATE?
Отличается ли работа Leto_FileWrite от FWRITE?


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 897
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.04.15 09:27. Заголовок: finder пишет: Есть ..


finder пишет:

 цитата:
Есть ли возможность биндить сервер к одному конкретному адресу


Поясните, что именно вы имеете ввиду.

 цитата:
Возможно ли добавить в Leto DB функцию эквивалентную FCREATE?


Leto_FileWrite() создает новый файл с указанным именем, если он не существует и поэтому может служить заменой FCreate().

 цитата:
Отличается ли работа Leto_FileWrite от FWRITE?


И да, и нет. FWrite(), как вы знаете, записывает буфер в предварительно открытый файл, начиная с текущей позиции. Leto_FileWrite() открывает файл ( или создает, если его нет ), переходит на указанную позицию (fseek), записывает буфер и закрывает файл.



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 7
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 06.04.15 11:02. Заголовок: alkresin пишет: Ест..


alkresin пишет:

 цитата:
Есть ли возможность биндить сервер к одному конкретному адресу
Поясните, что именно вы имеете ввиду.


Сейчас сервер стартует без указания IP адреса, т.е. использует все доступные IP адреса с указанным портом.
Хотелось бы иметь возможность, чтобы сервер слушал запросы только на ОДНОМ IP адресе, например 127.0.0.1 или любой другой ОДИН адрес который можно было бы указать.
Думаю это было бы более разумно для различных условий использования Leto DB.

alkresin пишет:

 цитата:
Возможно ли добавить в Leto DB функцию эквивалентную FCREATE?
Leto_FileWrite() создает новый файл с указанным именем, если он не существует и поэтому может служить заменой FCreate().

Отличается ли работа Leto_FileWrite от FWRITE?
И да, и нет. FWrite(), как вы знаете, записывает буфер в предварительно открытый файл, начиная с текущей позиции. Leto_FileWrite() открывает файл ( или создает, если его нет ), переходит на указанную позицию (fseek), записывает буфер и закрывает файл.



Теперь хоть ясно, а то было непонятно почему отсутствовала функция создания файла при наличии функции записи.
Пара уточнений:
1. Как поведет себя Leto_FileWrite без указания позиции начала записи? запишет сначала?
2. Как обрезать файл до размера соответствующего объему записываемых данных?

В случае fcreate + fwrite независимо от наличия файла создается новый файл с нужными правами доступа и в него записывается нужная порция информации.
В случае летних функций я так понимаю это должно выглядеть Leto_Ferase Leto_FileWrite ?
А в случае когда есть необходимость дописать в конец файла надо использовать Leto_FileSize чтобы узнать в какой позиции находится конец файла, ввиду отсутствия функции fseek?
Несколько непривычно получается, но теперь по крайней мере механизм понятен.


Еще вопрос, в пользовательских функциях есть возможность задать стартовую функцию типа RunOnStart которая будет автоматически запускаться разово после загрузки letoudf.hrb ?
Ну и может быть заодно RunOnStop при выгрузке/перезагрузке letoudf.hrb.


P.S.
Уточню - меня больше интересует работа под *nix системами, так вот.

Только что проверил работу Leto_FileWrite, файл создался с правами чтение/запись для всех.
В случае использования стандартных файловых функций при создании устанавливаются такие атрибуты.
/* File create flags */
FC_NORMAL - чтение/запись для всех
FC_READONLY - только чтение для всех
FC_HIDDEN - чтение/запись только для владельца
FC_SYSTEM - чтение/исполнение для всех + запись для владельца

P.P.S.
Описание не совсем корректное?
Leto_FileWrite( cFileName, nStart, cBuf ) --> lSuccess
Записывает переменную <cBuf> в файл на сервере со смещения <nStart> размером <nLen>
Кто такой <nLen> ?
Насколько корректен возврат lSuccess при условиях не записалось все или не записалось часть, подозреваю в обоих будет .F., а правильнее было бы наверное <nLen>.


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 899
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.04.15 11:48. Заголовок: finder пишет: Хотел..


finder пишет:

 цитата:
Хотелось бы иметь возможность, чтобы сервер слушал запросы только на ОДНОМ IP

Я посмотрю, что можно сделать.


 цитата:
1. Как поведет себя Leto_FileWrite без указания позиции начала записи? запишет сначала?

Да. Но лучше указать 0 ( сейчас в LETO_FILEWRITE() стоит hb_parnl(2) без проверки типа передаваемого значения ).


 цитата:
2. Как обрезать файл до размера соответствующего объему записываемых данных?


Вы сами и ответили на этот вопрос.


 цитата:
Несколько непривычно получается, но теперь по крайней мере механизм понятен.


LetoDb создавался, в общем-то, для лругих целей. Эти функции были добавлены позже по запросам пользователей и были сделаны с учетом уже сложившейся реализации программы.


 цитата:
Еще вопрос, в пользовательских функциях есть возможность задать стартовую функцию...

Это к Павлу, я сам эту часть кода еще не смотрел.


 цитата:
В случае использования стандартных файловых функций при создании устанавливаются такие атрибуты.


Соответствующая функция LetoDb не устанавливает права - просто вызывается стандартная ф-я Harbour hb_fsOpen(). Я вижу, 2-го апреля Павел добавил ф-ю leto_FileAttr() - сее поощью, наверное, можно установить нужные атрибуты.

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




Пост N: 3254
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.04.15 14:01. Заголовок: Если в модуле letoud..


Если в модуле letoudf присутствует функция с именем udf_init, она будет запущена после загрузки модуля.

Спасибо: 1 
ПрофильЦитата Ответить
moderator


Пост N: 900
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.04.15 17:06. Заголовок: alkresin пишет: ци..


alkresin пишет:

 цитата:
цитата:
Хотелось бы иметь возможность, чтобы сервер слушал запросы только на ОДНОМ IP

Я посмотрю, что можно сделать.



Добавил новый параметр в ini-файл:
ip, где можно указать этот единственный ip.


Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 8
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 07.04.15 00:04. Заголовок: Pasha пишет: Если в..


Pasha пишет:

 цитата:
Если в модуле letoudf присутствует функция с именем udf_init, она будет запущена после загрузки модуля.

ТОЧНО ) Прошу прощения - провтыкал...




alkresin пишет:

 цитата:
цитата:
Хотелось бы иметь возможность, чтобы сервер слушал запросы только на ОДНОМ IP

Я посмотрю, что можно сделать.

Добавил новый параметр в ini-файл:
ip, где можно указать этот единственный ip.



Проверил, вроде работает )
Спасибо.

Имя параметра в letodb.ini окончательное, меняться не будет?


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 9
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 07.04.15 00:21. Заголовок: Пользовательские переменные


Какие ограничения есть на имена пользовательских групп и переменных? Длина, набор символов, количество, etc...?
Доступна ли работа с ними из пользовательских функций? Возможно ли удалить группу?
В этих переменных можно хранить только CNL типы?



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 901
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 07.04.15 09:44. Заголовок: finder пишет: Имя п..


finder пишет:

 цитата:
Имя параметра в letodb.ini окончательное, меняться не будет?


Окончательное.

 цитата:
Какие ограничения есть на имена пользовательских групп и переменных? Длина, набор символов, количество, etc...?


Нет ограничений.

 цитата:
Доступна ли работа с ними из пользовательских функций?


leto_var...(), или вы о чем-то другом ?


 цитата:
Возможно ли удалить группу?


Попробуйте leto_vardel( cGroupName, "" )


 цитата:
В этих переменных можно хранить только CNL типы?


Да.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 10
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 07.04.15 10:30. Заголовок: alkresin пишет: До..


alkresin пишет:

 цитата:
Возможно ли удалить группу?

Попробуйте leto_vardel( cGroupName, "" )


С пустой строкой в имени переменной помогло, до этого пробовал указывать только имя группы




alkresin пишет:

 цитата:

Доступна ли работа с ними из пользовательских функций?

leto_var...(), или вы о чем-то другом ?



letoudf.prg

 цитата:

#include "rddleto.ch"
Function UDF_Init
LETO_VARSET( 'GroupNameTest', 'VarNameTest', 'VarContent', LETO_VCREAT )
Return NIL



hbmk2 letoudf.prg -gh
letodb stop
letodb start


letodb.log

 цитата:

04/07/15 10:20:25: Leto DB Server has been started.

Leto DB Server v.2.15 ! INIT: DataPath=/path/data, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10
04/07/15 10:20:25: Error BASE/6101 Unknown or unregistered symbol: LETO_VARSET

ERROR! SETHRBERROR - pUStru not found!!!!!!!!!!!!!!!!!!!!



Возможно я делаю что-то не так?
С пользовательскими переменными можно работать только с клиента?

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




Пост N: 554
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.04.15 11:36. Заголовок: finder readme_rus.t..


finder
readme_rus.txt в конце

 цитата:

 
Функции letoUseArea, letoOrdListAdd, letoOrdCreate, letoCloseArea,
leto_RecLock, leto_RecLock предназначены для использования в udf-функциях вместо
rdd функций: dbUseArea, OrdListAdd, OrdCreate, dbCloseArea, RLock, dbUnlock

LETO_VARSET( nUserStru, cGroupName, cVarName, xValue[, nFlags )
--> lSuccess
LETO_VARGET( nUserStru, cGroupName, cVarName ) --> xValue
LETO_VARINCR( nUserStru, cGroupName, cVarName ) --> nValue
LETO_VARDECR( nUserStru, cGroupName, cVarName ) --> nValue
LETO_VARDEL( nUserStru, cGroupName, cVarName ) --> lSuccess
LETO_VARGETLIST( nUserStru, [cGroupName, [lValue]] ) --> aList



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




Пост N: 555
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.04.15 11:42. Заголовок: PS. в пред.версии le..


PS. в пред.версии letodb (двухпоточной):
leto_varSet( NIL, cGru, cNam, cVal, LETO_VCREAT )
...
cVal := leto_varGet( NIL, cGru, cNam )

в этой версии еще не пробовал





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




Пост N: 556
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.04.15 11:47. Заголовок: finder пишет:04/07/1..


finder пишет:
 цитата:
04/07/15 10:20:25: Error BASE/6101 Unknown or unregistered symbol: LETO_VARSET


добавьте:
#include "rddleto.ch"


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 902
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 07.04.15 11:58. Заголовок: finder пишет: С пол..


finder пишет:

 цитата:
С пользовательскими переменными можно работать только с клиента?


Leto_var... функции определены и в серверной части.
Я сейчас добавил в server.prg REQUEST для них, теперь не должен ругаться.
Правда, при вызове из udf_init() выскакивает ошибка - возможно, на этот момент что-то недоинициализировано, надо проверить.

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




Пост N: 557
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.04.15 13:49. Заголовок: SergKis пишет:добавь..


SergKis пишет:
 цитата:
добавьте:
#include "rddleto.ch"


правильнее будет для работы с leto_var...:
#define LETO_VCREAT 1
#define LETO_VOWN 2
#define LETO_VDENYWR 4
#define LETO_VDENYRD 8
#define LETO_VPREVIOUS 1
т.к.
#include "rddleto.ch" содержит:
#define LETO_NTX 1
#define LETO_CDX 2
что повторяется с server.prg (line 64)
или убрать в server.prg (line 64, 65) и использовать
#include "rddleto.ch"
что лучше - это к alkresin и Pasha

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 903
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 08.04.15 09:33. Заголовок: или убрать в server...



 цитата:
или убрать в server.prg (line 64, 65) и использовать
#include "rddleto.ch"


Убрал, добавил.

alkresin пишет:

 цитата:
Правда, при вызове из udf_init() выскакивает ошибка - возможно, на этот момент что-то недоинициализировано, надо проверить.


Просмотрел код. Функции leto_..., вызываемые из udf, должны в качестве первого параметра передавать nUserStru - параметр, который получает udf ф-я, это идентификатор клиента, который выполняет udf ф-ю. Поскольку udf_init() выполняется автоматически при старте и ни одного пользователя к этому моменту не определено, то leto_... функции не могут вызываться из нее.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 11
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 08.04.15 10:36. Заголовок: alkresin пишет: Про..


alkresin пишет:

 цитата:
Просмотрел код. Функции leto_..., вызываемые из udf, должны в качестве первого параметра передавать nUserStru - параметр, который получает udf ф-я, это идентификатор клиента, который выполняет udf ф-ю. Поскольку udf_init() выполняется автоматически при старте и ни одного пользователя к этому моменту не определено, то leto_... функции не могут вызываться из нее.



Спасибо, понял, буду использовать внешний инициализатор.



Может стоит в readme что-то сделать с этим описанием, а то получается что суть <nLen> не раскрыта? Возможно стоит добавить так же, что при отсутствии файла он создается.

 цитата:
Leto_FileWrite( cFileName, nStart, cBuf ) --> lSuccess
Write <cBuf> character string to a file at the server from <nStart> offset and <nLen> length



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




Пост N: 560
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.04.15 10:41. Заголовок: alkresin пишет: ни о..


alkresin пишет:
 цитата:
ни одного пользователя к этому моменту не определено, то leto_... функции не могут вызываться из нее.


в пред.версии letodb (двухпоточной) Pasha специально делал для функций leto_var...,
с nUserStru := NIL - работа с общими переменными:
leto_varSet( NIL, cGru, cNam, cVal, LETO_VCREAT )
cVal := leto_varGet( NIL, cGru, cNam )


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 12
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 08.04.15 10:44. Заголовок: SergKis пишет: в пр..


SergKis пишет:

 цитата:
в пред.версии letodb (двухпоточной) Pasha специально делал для функций leto_var...,
с nUserStru := NIL - работа с общими переменными:
leto_varSet( NIL, cGru, cNam, cVal, LETO_VCREAT )
cVal := leto_varGet( NIL, cGru, cNam )


Я проверил после обновления, на имя функции ругаться перестало, но валится если их вызывать из udf_init()



Кстати это первый раз когда у меня получилось уронить letodb
letodb_crash.log
 цитата:
Breakdown at: 2015.04.08 10:46:06
Unrecoverable error 6005: Exception %s at address %s SIGSEGV 0x17
------------------------------------------------------------------------
User: 127.0.0.1 (null) (null)
Command: udf_rel



Код такой
letoudf.prg
 цитата:
#include "rddleto.ch"
Function UDF_Init

LETO_VARSET( NIL, 'GroupNameTest', 'VarNameTest', 'VarContent', LETO_VCREAT )

Return NIL



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




Пост N: 561
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.04.15 10:51. Заголовок: finder пишет:но вали..


finder пишет:
 цитата:
но валится если их вызывать из udf_init()


буду знать. я ф-ии использовал в триггере, поэтому было все ok.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 904
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 08.04.15 10:53. Заголовок: finder пишет: Может..


finder пишет:

 цитата:
Может стоит в readme что-то сделать с этим описанием, а то получается что суть <nLen> не раскрыта?


Да, никакого nLen нет в этой функции, используется длина cBuf.
Исправлю.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 18
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 08.04.15 19:46. Заголовок: дебуг


Есть ли где описание команды в дебуг режиме?


 цитата:
close;16;
unlock;14;02;
unlock;15;02;
goto;15;1695;par_naz;A;
rcou;15;
skip;15;-1;1695;par_naz;A;
rcou;15;
rcou;15;
rcou;15;
skip;15;1;1695;par_naz;A;
rcou;15;
rcou;15;
rcou;15;



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 905
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 09.04.15 09:32. Заголовок: nbatocanin пишет: Е..


nbatocanin пишет:

 цитата:
Есть ли где описание команды в дебуг режиме?


Нет. Посмотреть можно только по исходникам - source/client/letocl.c

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 908
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 10.04.15 10:22. Заголовок: Я немного изменил си..


Я немного изменил систему нумерации версий LetoDb - добавил туда номер сборки ( build ), чтобы можно было, не меняя все время основной номер версии, выкладывать на Sourceforge обновленные пакеты.
Выложен letodb-2.15-b2.src.zip

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4705
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.04.15 10:24. Заголовок: alkresin Раздел соз..


alkresin
Раздел создавать по LetoDB Server ?
Название такое и будет LetoDB Server ?


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 910
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 10.04.15 11:56. Заголовок: Я бы назвал "Let..


Я бы назвал "LetoDB, HbNetio и пр."
"пр." - на всякий случай :)
И в разделе GUI подзаголовок, наверное, надо переименовать "GUI в [x]Harbour"

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 13
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 12.04.15 00:17. Заголовок: Пользовательские переменные в пользовательских функциях


Пользовательские переменные в пользовательских функциях не работают.
Попытка создать переменную приводит к падению сервера.
При этом без разницы указан nUserStru или просто NIL.

letoudf.prg

 цитата:
#include "rddleto.ch"

Function VarTest( nUserStru )

LETO_VARSET( nUserStru, 'TestGroupName', 'TestVarName', 'TestVarContent', LETO_VCREAT )
//LETO_VARSET( NIL, 'TestGroupName', 'TestVarName', 'TestVarContent', LETO_VCREAT )

Return .T.




testvars.prg

 цитата:
#include "rddleto.ch"
#define LETOSERVER "//127.0.0.1:2812/"

Procedure Main(a)
local aa
REQUEST LETO
RDDSETDEFAULT("LETO")

leto_Connect( LETOSERVER )

? "aa:=LETO_UDF( LETOSERVER+'VarTest' )", aa:=LETO_UDF( LETOSERVER+'VarTest' )
? 'valtype( aa )', valtype( aa )

return
? 'hb_valtoexp( aa )', hb_valtoexp( aa )

return
? 'hb_valtoexp(LETO_VARGETLIST())', hb_valtoexp(LETO_VARGETLIST())

return
? aa:=leto_vargetlist()

return
? hb_valtoexp(leto_vargetlist())

return



Возможно это как-то победить?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 917
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 14.04.15 12:28. Заголовок: finder пишет: Возмо..


finder пишет:

 цитата:
Возможно это как-то победить?


Победил.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 14
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 14.04.15 15:07. Заголовок: УРААА!!!


УРААА!!! Заработало!
И похоже работает даже из UDF_Init
Буду тестировать в расширенном варианте.

Огромное Вам, Александр, человеческое СПАСИБО!

Небольшое уточнение, это уже будет окончательно без откатов и насовсем?


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 918
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 14.04.15 16:27. Заголовок: finder пишет: Небол..


finder пишет:

 цитата:
Небольшое уточнение, это уже будет окончательно без откатов


Конечно. Там были реальные ошибки, зачем откатывать.

 цитата:
и насовсем?


До тех пор, пока новых ошибок не наплодим

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 15
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 14.04.15 23:45. Заголовок: Эта команда leto_var..


Эта команда leto_vardel( 'GroupNone', '' ) - удаляет группу со всеми переменными? Мусор оставлять за собой такое удаление не будет?

При попытке удалить несуществующую группу переменных - сервер падает, значит ли это, что надо проверять ее наличие со стороны клиента перед удалением?
При удалении отсутствующих переменных внутри группы такого не замечено.



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 920
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.15 09:39. Заголовок: finder пишет: Эта к..


finder пишет:

 цитата:
Эта команда leto_vardel( 'GroupNone', '' ) - удаляет группу со всеми переменными?


Да.

 цитата:
При попытке удалить несуществующую группу переменных - сервер падает


Пример на стол. Мне не удалось воспроизвести падение сервера при удалении несуществующей группы.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 921
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.15 09:49. Заголовок: Впрочем, я сейчас ис..


Впрочем, я сейчас исправил возможный источник проблемы, но у меня и так почему-то работало.

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




Пост N: 572
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.15 10:48. Заголовок: alkresin подключени..


alkresin
подключение триггера в letodb не работает (в 2-х поточной версии все Ok):
letodb.ini :
...
Trigger = my_Trigger
...
 
FUNCTION my_Trigger( nEvent, nArea, nPos, xTrigVal )

dbInfo(DBI_TRIGGER, .F.)
WrLog( Procname()+" "+ hb_valtoexp({ nEvent, nArea, nPos, xTrigVal }) )
dbInfo(DBI_TRIGGER, .T.)

RETURN .T.

включение этой функции в letodb.hrb или letodb.prg не срабатывает ни разу при операциях над таблицей
это можно побороть ?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4732
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.04.15 10:55. Заголовок: SergKis А каков фун..


SergKis
А каков функционал у dbInfo(DBI_TRIGGER...... , для чего она ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 16
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 15.04.15 11:15. Заголовок: alkresin пишет: При..


alkresin пишет:

 цитата:
Пример на стол. Мне не удалось воспроизвести падение сервера при удалении несуществующей группы.



#include "rddleto.ch"
#define LETOSERVER "//127.0.0.1:2812/"

Procedure Main(a)
local cTmp:='', aa
REQUEST LETO
RDDSETDEFAULT("LETO")

leto_Connect( LETOSERVER )

? leto_vardel( 'GroupNone', '' )
? leto_vardel( 'GroupNone', '' )

return

сервер запускал без letoudf.hrb для чистоты эксперимента

результат выполнения

Breakdown at: 2015.04.15 11:11:46
Unrecoverable error 6005: Exception %s at address %s SIGSEGV (nil)
------------------------------------------------------------------------
User: 127.0.0.1 localhost testvars
Command: var


P.S. Только что пересобрал сервер. Теперь при тесте он не падает, но тестовое приложение зависает ничего не выводя т.е. как я понимаю где-то внутри функции удаления группы.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 922
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.15 12:01. Заголовок: finder пишет: Тольк..


finder пишет:

 цитата:
Только что пересобрал сервер. Теперь при тесте он не падает, но тестовое приложение зависает ничего не выводя т.е. как я понимаю где-то внутри функции удаления группы.


Исправил

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 17
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 15.04.15 13:23. Заголовок: alkresin пишет: Исп..


alkresin пишет:

 цитата:
Исправил


Спасибо, сейчас отрабатывает.

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




Пост N: 573
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.15 14:07. Заголовок: Dima пишет:А каков ф..


Dima пишет:
 цитата:
А каков функционал у dbInfo(DBI_TRIGGER...... , для чего она ?


Сейчас триггер заполняет поля :
IDNNN (N10) - идентификатор от поля + (клиент 2-х поточной версии не понимает новые поля)
IDDATEADD(C17) - дата добавления Timestamp -> в строку
IDDATEUPD (C17) - дата модификации Timestamp -> в строку
IDDATEDEL (C17) - дата удаления Timestamp -> в строку
эти поля обязательны по закондательству
и планировал на новой версии перенести с клиента ведение логов по изменению таблиц.


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 923
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.15 14:21. Заголовок: SergKis пишет: вклю..


SergKis пишет:

 цитата:
включение этой функции в letodb.hrb или letodb.prg не срабатывает ни разу при операциях над таблицей
это можно побороть ?


Можно, конечно. Только надо сначала разобраться - я не смотрел еще в ту сторону.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 924
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.15 18:17. Заголовок: По-видимому, дело в ..


По-видимому, дело в том, что новые потоки не наследуют RDDI_... установки, их надо переустанавливать для каждого вновь создаваемого потока.

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




Пост N: 575
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.15 20:10. Заголовок: alkresin пишет:По-ви..


alkresin пишет:
 цитата:
По-видимому, дело в том, что новые потоки не наследуют RDDI_... установки,


наверное, правильно, устанавливать "свой" триггер только для нужной области (с клиента), но общий, в некоторых, ситуациях лучше и лежать триггеру лучше в letodb.hrb - для клиента свой hrb и триггеры

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




Пост N: 579
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.15 08:26. Заголовок: alkresin, Pasha изви..


alkresin, Pasha
извините, что достаю ..., но
есть предложение добавить в letodb.ini режим
AutoMakeDir = [0] \ 1 - автомат. создание директорий при создании таблицы.
такой штукой пользуемся ~5 лет - очень упрощет код на клиенте
Скрытый текст


возвращаюсь к наличию в letodb аналогов функций hb_fSetDateTime, hb_fGetDateTime. потестировал:
Скрытый текст

работает хорошо, но как мне думается, наличие такого механизма в файловой части letodb (режим EnableFileFunc = 1) более правильное решение, которое позволит организовывать зеркальный letodb, получение изменений на localhost, в mysql, FTP, ... без открытия таблиц (по тэгу модификации dbgobottom, получение данного и закрытие таблицы), что упростит код на клиенте
конечно вместо 2-х функций можно соорудить одну:
leto_fDateTime(cFileName \ aFileName [, dDate \ .T. [, cTime ]])

leto_fDateTime(cFileName \ aFileName) - возвращает {dDate, cTime} или {{dDate, cTime}, ...}
leto_fDateTime(cFileName \ aFileName, .T.) - ставит файлу\файлам дату, время сервера
leto_fDateTime(cFileName \ aFileName, dDate, cTime) - - ставит файлу\файлам дату, время параметров

наличие такого механизма позволит, попробовать использовать skipbuffer(LastRec()) с прочитанным целиком справочником и отключенной очисткой skipbuffer (вместо чтения в массив или memio)

сейчас, в 2-х поточной версии letodb, работает механизм с открытием, ..., закрытием таблиц и набралось ~200 таблиц (только опрос - время) и приходится по клиенту размазывать (урезать) список, перед вых. формами весь, перед документом - связанное с этим докум., и .т.д.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 925
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.04.15 10:33. Заголовок: Вроде работают тепер..


Вроде работают теперь триггеры, но, учтите, располагаться сами функции должны в letoudf.hrb. Мне не понятно, почему вы все время говорите о letodb.hrb - файл с таким именем нигде в коде сервера не упоминается.
SergKis пишет:

 цитата:
наверное, правильно, устанавливать "свой" триггер только для нужной области (с клиента)

В смысле - для нужной таблицы ? Я тоже так думаю. Установка общего триггера довольно накладна - эта процедура вызывается при всех операциях со всеми таблицами.
А вот насчет "с клиента" - не соглашусь. Триггер должен быть определен только на сервере, в этом весь его смысл - чтобы он работал независимо от того, что написано в клиентской программе.

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




Пост N: 584
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.15 10:59. Заголовок: alkresin letodb.hrb..


alkresin
letodb.hrb - это описка, конечно letoudf.hrb

 цитата:
А вот насчет "с клиента" - не соглашусь. Триггер должен быть определен только на сервере


Здесь, мы друг друга не допоняли.
Триггер(ы) определен(ы) ТОЛЬКО на сервере в letoudf.hrb, но активировать (нужный) триггер для нужной таблицы - с клиента, я это имел ввиду говоря "с клиента"
Общий триггер, тоже полезная штука - сейчас (в 2-х поточной версии) работает общий и для всех таблиц заполняет поля обязательные (пост был выше) - нет мороки ставить\снимать для таблиц
Если выбирать, какой предпочтительней, то по моей ситуации на сегодня лучше общий - переход на новую версию безболезненный
Как разграничить алгоритмы ... ? Если в ini задан Trigger - то общий, иначе с клиента, что то типа leto_SetTrigger(...)


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




Пост N: 586
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.15 11:52. Заголовок: alkresin пишет:Вроде..


alkresin пишет:
 цитата:
Вроде работают теперь триггеры


туплю
в SIXNSX было:
 
/*
* USE command with support for TRIGGER and PASSWORD clauses
*/
#command USE <(db)> [VIA <rdd>] [ALIAS <a>] [<nw: NEW>] ;
[<ex: EXCLUSIVE>] [<sh: SHARED>] [<ro: READONLY>] ;
[CODEPAGE <cp>] [INDEX <(index1)> [, <(indexN)>]] ;
[TRIGGER <trig>] [PASSWORD <pass>] => ;
[Sx_SetTrigger( TRIGGER_PENDING, <trig>, <rdd> ); ] <-trig-> ;
[Sx_SetPass( <pass>, 1, <rdd> ); ] <-pass-> ;
dbUseArea( <.nw.>, <rdd>, <(db)>, <(a)>, ;
if(<.sh.> .or. <.ex.>, !<.ex.>, NIL), <.ro.> [, <cp>] ) ;
[; dbSetIndex( <(index1)> )] ;
[; dbSetIndex( <(indexN)> )]

как ставить ?
sele 0
HB_RddInfo( RDDI_PENDINGTRIGGER, 'my_Trigger', 'LETO' ) или
HB_RddInfo( RDDI_PENDINGTRIGGER, 'my_Trigger', 'DBFCDX' )
dbUseArea(.F., 'LETO', ...)
разъясните, пожалуйста
и в чем разница RDDI_PENDINGTRIGGER и RDDI_TRIGGER ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 926
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.04.15 12:29. Заголовок: SergKis пишет: Триг..


SergKis пишет:

 цитата:
Триггер(ы) определен(ы) ТОЛЬКО на сервере в letoudf.hrb, но активировать (нужный) триггер для нужной таблицы - с клиента, я это имел ввиду говоря "с клиента"


Насколько я понимаю предназначение триггеров, они должны работать всегда, независимо от того, активирует их или нет клиентская программа. Если вы ставите, например, триггер на добавление записи в table1 - чтобы при этом и в table2 что-то добавлялось, а в table3, например, увеличивался счетчик - то важно, чтобы это работало всегда, иначе пострадает целостность базы данных. Обеспечение целостности данных, целостности связей между таблицами, как я понимаю, одна из важнейших задач триггеров.


 цитата:
как ставить ?
sele 0
HB_RddInfo( RDDI_PENDINGTRIGGER, 'my_Trigger', 'LETO' ) или
HB_RddInfo( RDDI_PENDINGTRIGGER, 'my_Trigger', 'DBFCDX' )
dbUseArea(.F., 'LETO', ...)


О чем это вы ? Имя процедуры ведь на сервере в letodb.ini указывается.


 цитата:
и в чем разница RDDI_PENDINGTRIGGER и RDDI_TRIGGER ?


Честно говоря, понятия не имею.

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




Пост N: 588
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.15 12:58. Заголовок: alkresin пишет:О чем..


alkresin пишет:
 цитата:
О чем это вы ? Имя процедуры ведь на сервере в letodb.ini указывается.


Не увидел в текстах, где установка, потому и непонятка возникла, если как было через ini, то пошел пробовать.
Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 927
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.04.15 13:54. Заголовок: По поводу RDDI_PENDI..


По поводу RDDI_PENDINGTRIGGER. Он используется в dbf1.c следующим образом:

   if( SELF_RDDINFO( SELF_RDDNODE( &pArea->area ), RDDI_PENDINGTRIGGER, 
pOpenInfo->ulConnection, pItem ) == HB_SUCCESS )
{
if( HB_IS_STRING( pItem ) )
hb_dbfTriggerSet( pArea, pItem );
}

if( ! pArea->fTrigger )
{
if( SELF_RDDINFO( SELF_RDDNODE( &pArea->area ), RDDI_TRIGGER,
pOpenInfo->ulConnection, pItem ) == HB_SUCCESS )
{
if( HB_IS_STRING( pItem ) )
hb_dbfTriggerSet( pArea, pItem );
}
}

Т.е., при открытии таблицы сначала устанавливается он, а затем, если его не удалось установить (а это может произойти, если соответствующая функция не найдена), RDDI_TRIGGER. Мне не очень понятно, зачем это может понадобиться.

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




Пост N: 590
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.15 14:50. Заголовок: alkresin Спасибо..


alkresin
Спасибо

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 18
Зарегистрирован: 06.12.14
ссылка на сообщение  Отправлено: 06.05.15 13:04. Заголовок: Возникла пара вопрос..


Возникла пара вопросов после крайнего обновления.
Увидел что добавилась функция Udf_Exit()
Если я правильно понимаю:
Udf_Init() - вызывается как при запуске сервера так и при загрузке letoudf.hrb
Udf_Exit() - вызывается только при остановке сервера, но не при выгрузке letoudf.hrb

Есть ли возможность добавить, что-то типа Udf_Unload() - которая будет вызываться при выгрузке letoudf.hrb когда идет команда reload.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 19
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 06.06.15 16:36. Заголовок: Transaction


Я тестирую Leto_*Transaction:


 цитата:
USE (cPath + "Artikli1") ALIAS Artikli1 SHARED NEW VIA "LETO"
USE (cPath + "Artikli2") ALIAS Artikli2 SHARED NEW VIA "LETO"

FLock ()

SELECT Artikli1
Leto_BeginTransaction ()

GO TOP
WHILE !Eof()
Artikli2->(DBAppend())
Artikli2->a_naziv := Upper(a_naziv)
Artikli2->a_naziv2 := Lower(a_naziv2)
Artikli2->a_por := a_por + "ABC"
...
SKIP
END DO

Leto_CommitTransaction ()



Эта программа работает 73 секунд. Без Begin/EndTransaction работает 15 секунд. Почему это так, и может ли это быть ускорено?

Спасибо, Ненад


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4877
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.06.15 16:43. Заголовок: nbatocanin Давно я ..


nbatocanin
Давно я работал с LETO но попробуйте Leto_CommitTransaction () поставить до SKIP а
Leto_BeginTransaction () перед Artikli2->(DBAppend())

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 20
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 07.06.15 04:41. Заголовок: Dima пишет: Давно я..


Dima пишет:

 цитата:
Давно я работал с LETO но попробуйте Leto_CommitTransaction () поставить до SKIP а
Leto_BeginTransaction () перед Artikli2->(DBAppend())



Я пробовал, когда это сделать получается 790 секунд :(

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




Пост N: 4231
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.06.15 13:00. Заголовок: nbatocanin пишет: Я..


nbatocanin пишет:

 цитата:
Я пробовал, когда это сделать получается 790 секунд :(



Попробуйте тесты, которые я сделал и проверял. - https://cloud.mail.ru/public/Lr52/WR9soGyFn
TEST_DBF.hbp - терминалка сделанная SergKis. Закачивает базу на сервер супер быстро.
Сборка под МиниГуи для терминалки.

DbftoServer.hbp - загрузка dbf на сервер. Сборка под МиниГуи.
Задание вручную параметров размера буфера транзакций.


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




Пост N: 3276
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.06.15 13:35. Заголовок: nbatocanin пишет: Э..


nbatocanin пишет:

 цитата:
Эта программа работает 73 секунд. Без Begin/EndTransaction работает 15 секунд. Почему это так, и может ли это быть ускорено?

Спасибо, Ненад



Если транзакция большая, то желательно задать параметр для Leto_BeginTransaction([ nBlockLen ])
Это размер памяти в байтах для выделения и перевыделения памяти. Попробуйте задать этот параметр равным 16k, или больше
Можно разбить большую транзакцию на несколько маленьких, по количеству добавляемых записей.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 10.01.15
ссылка на сообщение  Отправлено: 08.06.15 14:38. Заголовок: leto_directory


Почему leto_directory бы не вернуться имена каталога на сервере LetoDB?
У меня есть 3 каталоги на сервере LetoDB но пример вернуться только один файл (test2.txt)
#include "rddleto.ch"

Function Main( cPath )
Local lRes, cBuf, arr, i

REQUEST LETO
RDDSETDEFAULT( "LETO" )

IF Empty( cPath )
cPath := "//127.0.0.1:2812/"
ELSE
cPath := "//" + cPath + Iif( Right(cPath,1) $ "/\", "", "/" )
ENDIF

? "Connect to " + cPath + " - "
IF ( leto_Connect( cPath ) ) == -1
nRes := leto_Connect_Err()
IF nRes == LETO_ERR_LOGIN
?? "Login failed"
ELSEIF nRes == LETO_ERR_RECV
?? "Recv Error"
ELSEIF nRes == LETO_ERR_SEND
?? "Send Error"
ELSE
?? "No connection"
ENDIF
Return Nil
ELSE
?? "Ok"
ENDIF
?

? 'leto_file( "test1.txt" ) - '
?? Iif( leto_file( cPath + "test1.txt" ), "Ok", "No" )

? 'leto_memowrite( "test1.txt", "A test N1" ) - '
?? Iif( leto_memowrite( cPath + "test1.txt", "A test N1" ), "Ok", "Failure" )

? 'leto_file( "test1.txt" ) - '
?? Iif( leto_file( cPath + "test1.txt" ), "Ok", "No" )

? 'leto_memoread( "test1.txt" ) - '
?? leto_memoread( cPath + "test1.txt" )

? 'leto_frename( "test1.txt","test2.txt" ) - '
?? Iif( leto_frename( cPath + "test1.txt","test2.txt" ) == 0, "Ok", "Failure" )

? 'leto_file( "test1.txt" ) - '
?? Iif( leto_file( cPath + "test1.txt" ), "Ok", "No" )

? 'leto_file( "test2.txt" ) - '
?? Iif( leto_file( cPath + "test2.txt" ), "Ok", "No" )

? 'leto_fileread( "test2.txt", 7, 2 ) - '
?? Iif( leto_fileread( cPath + "test2.txt", 7, 2, @cBuf ) > 0, cBuf, "Failure" )

? 'leto_filewrite( "test2.txt", 7, "N2" ) - '
?? Iif( leto_filewrite( cPath + "test2.txt", 7, "N2" ), "Ok", "Failure" )

? 'leto_memoread( "test2.txt" ) - '
?? leto_memoread( cPath + "test2.txt" )

? 'leto_filesize( "test2.txt" ) - '
?? leto_filesize( cPath + "test2.txt" )

arr := leto_directory( cPath )
? 'leto_directory(): (' + Ltrim(Str(Len(arr))) + ")"
? "Press any key to continue..."
Inkey(0)
FOR i := 1 TO Len( arr )
? arr[i,1]
NEXT
? "----------"

? 'leto_ferase( "test2.txt" ) - '
?? Iif( leto_fErase( cPath + "test2.txt" ) == 0, "Ok", "Failure" )
?

? "Press any key to finish..."
Inkey(0)

Return Nil

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




Пост N: 3277
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.06.15 15:14. Заголовок: Добавьте при вызове ..


Добавьте при вызове функции 2-й параметр:

arr := leto_directory( cPath, "D" )

и массив arr будет включать и имена каталогов.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 10.01.15
ссылка на сообщение  Отправлено: 08.06.15 19:31. Заголовок: спасибо! но опять не..


спасибо!
но опять некоторое время возвращает пустую строку, когда вы запустите программу снова это хорошо

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




Пост N: 3279
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.06.15 07:55. Заголовок: Дайте пожалуйста при..


Дайте пожалуйста пример

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 21
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.06.15 17:46. Заголовок: Pasha пишет: Pasha..


Pasha пишет:
[quote]` Pasha пишет:

 цитата:
Если транзакция большая, то желательно задать параметр для Leto_BeginTransaction([ nBlockLen ])
Это размер памяти в байтах для выделения и перевыделения памяти. Попробуйте задать этот параметр равным 16k, или больше
Можно разбить большую транзакцию на несколько маленьких, по количеству добавляемых записей.



Извините за задержку.

Я пытался изменить этот параметр, и получил небольшое улучшение (69 секунд). Менся здесь действительно не нужно транзакции, я просто хочу, чтобы ускорить группа REPLACE команды. Я думал, что транзакции это сделать.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 22
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.06.15 18:26. Заголовок: Andrey пишет: Попро..


Andrey пишет:

 цитата:
Попробуйте тесты, которые я сделал и проверял. - https://cloud.mail.ru/public/Lr52/WR9soGyFn
TEST_DBF.hbp - терминалка сделанная SergKis. Закачивает базу на сервер супер быстро.
Сборка под МиниГуи для терминалки.

DbftoServer.hbp - загрузка dbf на сервер. Сборка под МиниГуи.
Задание вручную параметров размера буфера транзакций.



Очень интересные и полезные примеры! Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 23
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.06.15 18:47. Заголовок: Unrecoverable error 6005


У меня есть проблемы с одной программе (Win 2003 Server, XP станций). 4-5 раза в день распространенная ошибка:


 цитата:
Application Internal Error - G:\Firma\App.exe
Terminated at: 2015.05.12 12:41:40
Unrecoverable error 6005: Exception error:

Exception Code:C0000005
Exception Address:00417CEB
EAX:00000001 EBX:01D21768 ECX:01440407 EDX:00000068
ESI:0022ED7C EDI:00000000 EBP:00000001
CS:EIP:001B:00417CEB SS:ESP:0023:0022ED40
DS:0023 ES:0023 FS:003B GS:0000
Flags:00010246
CS:EIP: 8B 5F 04 89 34 24 89 5C 24 04 E8 AE 23 34 00 85
SS:ESP: 01440468 0022ED54 00000000 4020063C 00001FFD 01D30CE8 00000000 00000000 01443848 00000000 0022EE1C 004A1A5C 0089B98D 00762F80 0024BC70 00000068
C stack:
EIP: EBP: Frame: OldEBP, RetAddr, Params...

Modules:

0x00400000 0x00A96000 G:\Firma\App.exe
0x7C900000 0x000B2000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x000F6000 C:\WINDOWS\system32\kernel32.dll
0x77DD0000 0x0009B000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77E70000 0x00093000 C:\WINDOWS\system32\RPCRT4.dll
0x77FE0000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x763B0000 0x00049000 C:\WINDOWS\system32\COMDLG32.DLL
0x5D090000 0x0009A000 C:\WINDOWS\system32\COMCTL32.dll
0x77F10000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x7E410000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x7C9C0000 0x00818000 C:\WINDOWS\system32\SHELL32.dll
0x77C10000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x77F60000 0x00077000 C:\WINDOWS\system32\SHLWAPI.dll
0x774E0000 0x0013E000 C:\WINDOWS\system32\OLE32.dll
0x77120000 0x0008B000 C:\WINDOWS\system32\OLEAUT32.DLL
0x77C00000 0x00008000 C:\WINDOWS\system32\VERSION.dll
0x73000000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV
0x71AB0000 0x00017000 C:\WINDOWS\system32\WS2_32.dll
0x71AA0000 0x00008000 C:\WINDOWS\system32\WS2HELP.dll
0x76390000 0x0001D000 C:\WINDOWS\system32\IMM32.DLL
0x773D0000 0x00103000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll
0x71A50000 0x0003F000 C:\WINDOWS\system32\mswsock.dll
0x662B0000 0x00058000 C:\WINDOWS\system32\hnetcfg.dll
0x71A90000 0x00008000 C:\WINDOWS\System32\wshtcpip.dll
0x5AD70000 0x00038000 C:\WINDOWS\system32\uxtheme.dll
0x74720000 0x0004C000 C:\WINDOWS\system32\MSCTF.dll
0x755C0000 0x0002E000 C:\WINDOWS\system32\msctfime.ime
0x01870000 0x002C5000 C:\WINDOWS\system32\xpsp2res.dll
0x76360000 0x00010000 C:\WINDOWS\system32\WINSTA.dll
0x5B860000 0x00055000 C:\WINDOWS\system32\NETAPI32.dll

Called from DBSEEK(0)
Called from KARZAT(0) in KAR.PRG
Called from MAIN(0) in app.prg



Ошибка не всегда то же самое, но это всегда связано с такими командами, как DbSeek, Skip.... Идентичные программа работает нормально, когда не используется Letodb.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 950
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 17.06.15 12:09. Заголовок: nbatocanin пишет: У..


nbatocanin пишет:

 цитата:
У меня есть проблемы с одной программе


А другие программы, использующие LetoDB, работают нормально ?

Может, что-то не так в сборке программы ( rddleto, например, собранная другой версией С компилятора ).
У меня много разных программ работают с LetoDb, но такого не припомню. Сервер, бывает, слетает иногда, а клиент по internel error - нет.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 24
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 17.06.15 17:03. Заголовок: Только что проверил:..


Только что проверил: это происходит в других программах (нет на одном сервере!), но не так часто (раз в десять дней). Я использую HB 3.2 и minGW компилятор. Программа очень большая (12.5MB).

Я заметил, что в варианты Share_Tables = 1 есть некоторые проблемы, которые не появляются, если использует Share_Tables = 0. Теперь я использую Share_Tables = 0, программа работает хорошо, но, возможно, потому происходят 6005 ошибки. Рассмотрим это в деталях.

Спасибо, Ненад

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4908
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.06.15 17:12. Заголовок: nbatocanin Это все ..


nbatocanin
Это все ГУГЛ Переводчик переводил ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 25
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 19.06.15 04:51. Заголовок: Dima пишет: Это все..


Dima пишет:

 цитата:
Это все ГУГЛ Переводчик переводил ?



Нет :)

Я использую Google, но исправляю перевод, когда вижу что он не хорошый. Я надеюсь что вы понимаете меня?



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




Пост N: 4380
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.15 17:11. Заголовок: Всем привет. Не соби..


Всем привет.
Не собирается новая версия сервера под linux. Не хватает библиотек.
Вот мне сделали правку Makefile.linux - поменяйте его в исходниках.
https://cloud.mail.ru/public/8Qkf/XWfgwimZJ

И еще дали отдельный файл сборки для LetoUdf.prg под linux
https://cloud.mail.ru/public/4VDz/zfDHwPDnC

Протестировал свой тест (приводил ранее https://cloud.mail.ru/public/9Cjp/YmqHq2msj )
под linux - CentOS release 6.5 (Final), работает великолепно !!!


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




Пост N: 3318
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.15 18:25. Заголовок: В makefile.linux доб..


В makefile.linux добавлена библиотека hbct. Для сборки сервера она не нужна. Она нужна при использовании функций вроде lton, ну так это уже неформат. Мало ли какие нестандартные библиотеки используются. В стандартный скрипт ее добавлять незачем.
Еще зачем-то добавлена библиотека hbpcre.
Вообще сервер лучше собирать с помощью hbmk2. makefile.linux это архаизм, сохранился с тех времен, когда letodb.hbp еще не было.

Что касается letoudf.linux, то добавлять его, чтобы продемонстрировать опцию -gh, которая для сборки hrb подразумевается сама собой, тоже вроде бы незачем.

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




Пост N: 4381
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.15 22:42. Заголовок: Pasha пишет: В стан..


Pasha пишет:

 цитата:
В стандартный скрипт ее добавлять незачем


Понятно...

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




Пост N: 3322
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.07.15 17:37. Заголовок: CVS не пашет ? 2-й д..


CVS не пашет ? 2-й день хочу загрузить кое-какие обновления, и... облом

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




Пост N: 775
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.07.15 17:52. Заголовок: У меня тоже...


У меня тоже.

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




Пост N: 3323
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.07.15 15:20. Заголовок: На сайте sf глухо, п..


На сайте sf глухо, поиск не дает результатов. Может кто знает, кому жаловаться ? Писать в спортлото ?

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




Пост N: 3324
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.07.15 17:11. Заголовок: Судя этой по статист..


Судя этой по статистике: http://sourceforge.net/projects/letodb/files/stats/timeline
загрузки с CVS есть, и сегодня, и во вторник-среду.
А у меня CVS не работает, ни через :ext:myname, ни через :pserver:anonymous. Пробовал с разных компьютеров.
Так есть доступ к CVS или нет ? Кто может подтвердить ?


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


Пост N: 1121
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 31.07.15 18:30. Заголовок: Pasha пишет: Так ес..


Pasha пишет:

 цитата:
Так есть доступ к CVS или нет ? Кто может подтвердить ?


Если я использовал правильную команду, то нет:


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




Пост N: 3326
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.08.15 23:25. Заголовок: https://www.youtube...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 28
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 02.10.15 04:44. Заголовок: ошибка


Я нашел серьезную ошибку в версии 2.16.b1:

USE Test INDEX test NEW
SET ORDER TO
GO TOP
? IndexOrd() // 1 !!!!

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




Пост N: 830
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.10.15 10:48. Заголовок: nbatocanin LetoUdf...


nbatocanin
LetoUdf.prg
 

FUNCTION UDF_Init
/*
* This function called immediately after loading letoudf.hrb, if exist
*/
SET AUTORDER TO 1
RETURN Nil
...


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




Пост N: 3346
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.10.15 13:50. Заголовок: Я нашел серьезную о..



 цитата:

Я нашел серьезную ошибку в версии 2.16.b1:

USE Test INDEX test NEW
SET ORDER TO
GO TOP
? IndexOrd() // 1 !!!!



Я не могу воспроизвести эту ошибку. В моем тесте выдается результат 0, как и должно быть

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 29
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 03.10.15 01:49. Заголовок: Это тест программа: ..


Это тест программа:


 цитата:
REQUEST LETO

PROC Main
RddSetDefault ("LETO")
cPath := "//192.168.99.10:2807/Test/"

Leto_Connect (cPath)
? LETO_GETSERVERVERSION()

USE (cPath + "ProTip") NEW
SET INDEX To (cPath + "ProTip")
GO TOP

? "ORDER", IndexOrd()

SET ORDER TO
GO TOP
? "SET ORDER TO", IndexOrd()

RETURN



При использовании v2.15:

Leto DB Server v.2.15
ORDER 1
SET ORDER TO 0

А при использовании версии 2.16b1

Leto DB Server v.2.16b1
ORDER 1
SET ORDER TO 1

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 30
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 11.10.15 19:17. Заголовок: Пожалуйста, попробуй..


Пожалуйста, попробуйте этот тест программ. Версия 2.16 не работает правильно. Я использую DBFNTX индексов.

https://drive.google.com/file/d/0BwEGIJ1QfjrKN0FOTXJ0MHFpSUE/view?usp=sharing

Server: Leto DB Server v.2.15b2
Client: 2.15b2
ORDER: 1
SET ORDER TO 1: 1
SET ORDER TO : 0
SET ORDER TO 0: 0

Server: Leto DB Server v.2.16b1
Client: 2.16b1
ORDER: 1
SET ORDER TO 1: 1
SET ORDER TO : 1
SET ORDER TO 0: 1

Спасибо,
Ненад

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 31
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 11.10.15 19:23. Заголовок: Приложение: при изме..


Приложение: при изменении клиента, все работает правильно. Кажется чтобы быть ошибка в клиенте 2.16:

Server: Leto DB Server v.2.16b1
Client: 2.15b2
ORDER: 1
SET ORDER TO 1: 1
SET ORDER TO : 0
SET ORDER TO 0: 0

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




Пост N: 3347
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.10.15 09:01. Заголовок: После последнего обн..


После последнего обновления команда set order to работает правильно ? Версия клиента 2.17

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 32
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.10.15 17:47. Заголовок: Работает, спасибо бо..


Работает, спасибо большое!!



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 33
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 17.10.15 03:42. Заголовок: Leto_Zip


Тестирование Leto_Zip. Файлы находятся в base\data\101. Когда я создаю Arhiva.zip, каждый файл в каталоге base\data\101. Есть ли можно сделать Arhiva.zip только с файлами?

Ненад

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 34
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 17.10.15 16:19. Заголовок: Я не хорошо объясняе..


Я не хорошо объясняется. Я хотел сказать, что каждый файл формата:

base/data/101/f001.dbf
base/data/101/f002.dbf
base/data/101/f003.dbf
...

и я хочу, чтобы быть:

f001.dbf
f002.dbf
f003.dbf
...


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 35
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 23.10.15 04:08. Заголовок: Leto_FileRead


Я думаю, что есть ошибка в Leto_FileRead. При запуске этой программы:

nLen := Leto_FileSize (cFile)
cBuf := Space(nLen)
n := Leto_FileRead (cFile, 0, nLen, @cBuf)

получает сообщение об ошибке:

Unrecoverable error 6005: Exception error:

Это происходит только на некоторых файлов! Например, попробуйте этот файл:

https://drive.google.com/file/d/0BwEGIJ1QfjrKYk1aQk9SVXZlYWs/view?usp=sharing

Если он читает меньше, чем nLen, все работает как надо:

nLen := Leto_FileSize (cFile)
cBuf := Space(nLen)
n := Leto_FileRead (cFile, 0, nLen-1, @cBuf)



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 36
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 28.10.15 04:22. Заголовок: Может кто-нибудь про..


Может кто-нибудь проверить это? В настоящее время это не возможно, чтобы скопировать файлы с сервера к клиенту. Я пытался использовать Leto_MemoRead, но это не будет работать, если большой файл.

спасибо, Ненад

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




Пост N: 4554
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.10.15 22:20. Заголовок: nbatocanin пишет: Я..


nbatocanin пишет:

 цитата:
Я пытался использовать Leto_MemoRead, но это не будет работать, если большой файл.


Делай частями. Размер части (буфер обмена) опредили методом проб и ошибок: 32Кб, 64КбБ 1.2Мб и так далее.
Как программа начнёт вылетать, так и используй буфер до вылета.
Сам еще не пробовал.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 37
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 29.10.15 01:35. Заголовок: Если вы думаете о фу..


Если вы думаете о функции Leto_FileRead(), я уже пробовал это. Независимо от параметров Leto_FileRead не работает всегда правильно. В некоторых случаях работает, но, очевидно, есть ошибка.

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


Пост N: 1174
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 31.10.15 14:03. Заголовок: nbatocanin пишет: М..


nbatocanin пишет:

 цитата:
Может кто-нибудь проверить это?


Да, у меня так же.

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




Пост N: 3350
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.10.15 16:43. Заголовок: Попробуйте после сег..


Попробуйте после сегодняшнего обновления

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 38
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 02.11.15 03:46. Заголовок: Первоначальные тесты..


Первоначальные тесты - работает.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 191 , стр: 1 2 3 4 5 6 7 8 9 10 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

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