On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 4156
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.05.15 22:44. Заголовок: Вопросы новичка... (продолжение)


Взял последнюю версию с "Новая страница с бинарниками", установил на Win2008 Server, чуток помучился с портом...
Собрал на МиниГуи+BCC 551 - \MiniGui\batch\hbmk2.bat rddleto.hbp
Получил rddleto.lib - 131072 байт - правильный ли размер ?
И еще Warning-и лезут:
lib\.hbmk\win\bcc\rddsys.c:
source\client\letocl.c:
source\client\leto1.c:
source\client\letomgmn.c:
source\common\blowfish.c:
source\common\common_c.c:
source\common\hbip.c:
TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation
/P32 lib\rddleto.lib -+ lib\.hbmk\win\bcc\rddsys.obj -+ lib\.hbmk\win\bcc\letocl.obj -+ lib\.hbmk\win\bcc\leto1.obj -+ lib\.hbmk\win\bcc\letomgmn.obj -+ lib\.hbmk\win\bcc\blowfish.obj -+ lib\.hbmk\win\bcc\common_c.obj -+ lib\.hbmk\win\bcc\hbip.objWarning: 'rddsys' not found in library
Warning: 'letocl' not found in library
Warning: 'leto1' not found in library
Warning: 'letomgmn' not found in library
Warning: 'blowfish' not found in library
Warning: 'common_c' not found in library
Warning: 'hbip' not found in library

Так должно быть или нет ?

Вопрос сразу напрашивается с путями - как писать правильно "\" или "/" :
Local cPathServer := "//127.0.0.1:2812/"
cPathServer := cPathServer +"DATE_TEST_PATH\test.dbf"

Помню что где то обсуждали, а результат не запомнил...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 48 , стр: 1 2 3 All [только новые]


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




Пост N: 5127
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.10.16 17:57. Заголовок: Тогда код делать так..


Тогда код делать такой ?

IF Leto_Ping() 
IF !LETO_FILE(cFile)
MsgStop( "Нет файла КЛЮЧА на сервере!" )
RETURN .F.
ELSE
// передача записей на сервер
MyWriteRecnoLetoDb()
ENDIF
ELSE
MsgStop("Ошибка соединения с сервером LetoDB !")
ENDIF

А где коды ошибок для LETO_FERROR() ?

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


Пост N: 1036
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 10.10.16 18:32. Заголовок: Andrey пишет: Тогда..


Andrey пишет:

 цитата:
Тогда код делать такой ?


Пойдет.


 цитата:
А где коды ошибок для LETO_FERROR() ?


В тексте исходников :).
1000 - как раз сбой соединения.

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




Пост N: 5129
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.10.16 14:13. Заголовок: alkresin пишет: В т..


alkresin пишет:

 цитата:
В тексте исходников :).



Спасибо !

Можно ли сделать следующие:
при изменении базы на сервере - получать событие клиентам, что база изменилась ?
Желательно бы и номер изменённой записи получать.

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


Пост N: 1279
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 11.10.16 14:25. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно ли сделать следующие:
при изменении базы на сервере - получать событие клиентам, что база изменилась ?


Клиент-серверная архитектура подразумевает следующий подход: клиент запросил - сервер ответил и забыл про клиента. Сам сервер не должен никому ничего слать без запроса. Т.е., для того, чтобы клиент знал про изменение баз, он должен сам об этом побеспокоиться.

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


Пост N: 1037
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 11.10.16 14:57. Заголовок: Andrey пишет: при и..


Andrey пишет:

 цитата:
при изменении базы на сервере - получать событие клиентам, что база изменилась ?
Желательно бы и номер изменённой записи получать.


Правильно тут написали: общение с сервером всегда происходит по схеме запрос - ответ, причем запрос может послать только клиент.
Можно записывать информацию об изменениях в базе, например, в переменную LetoDB (leto_Var...() функции), это может делать как клиент, изменивший базу, так, наверное, и сервер в соответствующем триггере. Но чтобы другой клиент об этом узнал, ему надо время от времени, по таймеру например, читать эту переменную с сервера.

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




Пост N: 5131
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.10.16 00:42. Заголовок: alkresin пишет: Но ..


alkresin пишет:

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



Тогда наверное алгоритм SergKis - построение индекса на сервере по полю TimeStamp (в базе) даёт более простой результат синхронизации БД на сервере и клиенте. Я алгоритм уже попробовал. Хотелось бы понять и другие.

alkresin пишет:

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



Не представляю как это сделать. Покажите пожалуйста схему как это делать.

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


Пост N: 1039
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 12.10.16 10:07. Заголовок: Andrey пишет: Покаж..


Andrey пишет:

 цитата:
Покажите пожалуйста схему как это делать.


Схема самая простая. Есть Leto-переменные, каждая имеет свое имя, они собраны по группам, каждая группа тоже имеет свое имя. Предположим, вы решили сделать по группе для каждой базы - base1, base2, base3, ... и в каждой группе переменную modtime (modification time), куда будете записывать дату и время последнего изменения в том формате, который вам нравится.
Программа при записи данных в базу пишет одновременно и в соответствующую переменную:
leto_varSet( "base1", "modtime", xTime, LETO_VCREAT )

здесь xTime - текущие дата/время, LETO_VCREAT означает, что если переменная еще не существует, ее надо создать. Вот и все. А по таймеру читайте ее:
IF !Empty( xTime := leto_varGet( "base1","modtime" ) ) 
...
ENDIF

и предпринимайте соответствующие действия.

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



Пост N: 24
Зарегистрирован: 22.01.14
ссылка на сообщение  Отправлено: 13.10.16 14:18. Заголовок: Похожую ситуацию когда-то приходилось отрабатывать


Что-то подобное я делал(было дело!!):
...
Здесь код изменения записи пользователем и сохранение в базе
а далее отработка
....
Leto_varDel("KRS",""),;
leto_varSet( "KRS","var_cDate",DToC(Date()),LETO_VCREAT ),; // дата текущая создаем если нет переменную
leto_varSet( "KRS","var_cTime",Time(),LETO_VCREAT ),; // время текущее создаем если нет переменную
leto_varSet( "KRS","var_cCBU",cCBU,LETO_VCREAT ),; // CBU пользователя создаем если нет переменную
IIF(lSchedul,(MsgTray("Изменение купли-продажи!", "Обновление!") , SysWait(3) , MsgTray(""), Popup_Var()),nil) // всплывающее сообщение пользователю
.....
Функция Popup_Var() вызывается в таймере

//---------------------------работаем с переменными сервера-----------
//-----------------проверка для отправки сообщения пользователям
Function Popup_Var()

If !Empty(Secs( leto_varGet( "KRS","var_cTime" )))
IF (Secs(Time()) - Secs( leto_varGet( "KRS","var_cTime" ) )) > 2
MsgTray("Данные обновлены!" , "КЦ - " + leto_varGet( "KRS","var_cCBU" )) ; SysWait(5) ; MsgTray("")
leto_varDel( "KRS","" ) // удаляет всю группу с переменными
EndIf
Else
leto_varDel( "KRS","" ) // удаляет всю группу с переменными
EndIf
Return nil
...
Функция MsgTray - выдает сообщение нужным пользователям об изменениях.

Вот такой алгоритм.
Правда все на FiveWin, но это сути не меняет.




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 48 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

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