Автор | Сообщение |
|
| постоянный участник
|
Пост 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" Помню что где то обсуждали, а результат не запомнил...
|
|
|
Ответов - 54
, стр:
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() ?
|
|
|
|
| moderator
|
Пост N: 1036
Зарегистрирован: 06.07.06
|
|
Отправлено: 10.10.16 18:32. Заголовок: Andrey пишет: Тогда..
Andrey пишет: Пойдет. цитата: | А где коды ошибок для LETO_FERROR() ? |
| В тексте исходников :). 1000 - как раз сбой соединения.
|
|
|
|
| постоянный участник
|
Пост N: 5129
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.10.16 14:13. Заголовок: alkresin пишет: В т..
alkresin пишет: Спасибо ! Можно ли сделать следующие: при изменении базы на сервере - получать событие клиентам, что база изменилась ? Желательно бы и номер изменённой записи получать.
|
|
|
|
| постоянный участник
|
Пост N: 1279
Зарегистрирован: 27.01.07
|
|
Отправлено: 11.10.16 14:25. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ли сделать следующие: при изменении базы на сервере - получать событие клиентам, что база изменилась ? |
| Клиент-серверная архитектура подразумевает следующий подход: клиент запросил - сервер ответил и забыл про клиента. Сам сервер не должен никому ничего слать без запроса. Т.е., для того, чтобы клиент знал про изменение баз, он должен сам об этом побеспокоиться.
|
|
|
|
| moderator
|
Пост N: 1037
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.10.16 14:57. Заголовок: Andrey пишет: при и..
Andrey пишет: цитата: | при изменении базы на сервере - получать событие клиентам, что база изменилась ? Желательно бы и номер изменённой записи получать. |
| Правильно тут написали: общение с сервером всегда происходит по схеме запрос - ответ, причем запрос может послать только клиент. Можно записывать информацию об изменениях в базе, например, в переменную LetoDB (leto_Var...() функции), это может делать как клиент, изменивший базу, так, наверное, и сервер в соответствующем триггере. Но чтобы другой клиент об этом узнал, ему надо время от времени, по таймеру например, читать эту переменную с сервера.
|
|
|
|
| постоянный участник
|
Пост N: 5131
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.10.16 00:42. Заголовок: alkresin пишет: Но ..
alkresin пишет: цитата: | Но чтобы другой клиент об этом узнал, ему надо время от времени, по таймеру например, читать эту переменную с сервера. |
| Тогда наверное алгоритм SergKis - построение индекса на сервере по полю TimeStamp (в базе) даёт более простой результат синхронизации БД на сервере и клиенте. Я алгоритм уже попробовал. Хотелось бы понять и другие. alkresin пишет: цитата: | Можно записывать информацию об изменениях в базе, например, в переменную LetoDB (leto_Var...() функции), это может делать как клиент, изменивший базу, так, наверное, и сервер в соответствующем триггере. |
| Не представляю как это сделать. Покажите пожалуйста схему как это делать.
|
|
|
|
| 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 и предпринимайте соответствующие действия.
|
|
|
|
| |
Пост 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, но это сути не меняет.
|
|
|
|
| |
Пост N: 1
Зарегистрирован: 11.01.24
|
|
Отправлено: 12.02.24 14:48. Заголовок: Помогите, пожалуйста, чайнику.
Первая установка letodb. Команда File не работает (файл есть, пишет .F.). Команда leto_file - тоже, т.к., по-моему, не читает letodb.ini (там разрешил файловые функции). Там путь прописан:DataPath ="/MYwrk/", а в log пишет DataPath =. Где копать?
|
|
|
|
| постоянный участник
|
Пост N: 4515
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.02.24 15:12. Заголовок: VI Вот рабочий вари..
VI Вот рабочий вариант установки Leto2011.exe (2-х поточная) и LetoDbF.exe (в ней изменены имена ini и log файлов на LetoDbF.*), совместная работа (это local работа - отладка, у клиента так же, но с адресами своими) Скрытый текст
Volume in drive D is DATA Volume Serial Number is E86E-69F5 Directory of D:\BK19\MiniGui\1_PRJ\EAlarm_1.3\INF 12.02.2024 13:53 <DIR> . 12.02.2024 13:53 <DIR> .. 20.12.2021 21:49 <DIR> BAK 19.12.2021 14:06 <DIR> BAKS 28.06.2022 11:36 <DIR> BIN 06.04.2022 16:29 <DIR> FDB 20.12.2021 22:05 <DIR> HBK 22.12.2021 15:56 <DIR> KLI 21.12.2021 18:44 902 656 leto2011.exe 06.04.2022 15:06 71 letodb.ini 21.04.2023 16:27 526 letodb.log 09.04.2021 06:25 1 450 496 letodbf.exe 21.12.2021 17:56 360 letodbf.ini 19.04.2023 20:38 1 335 letodbf.log 22.12.2021 15:49 899 072 LetoStart.exe 22.12.2021 15:51 898 048 LetoStart1.exe 19.04.2023 15:30 224 leto_users 19.04.2023 15:30 266 leto_users.cfg 19.12.2021 14:06 <DIR> LICENSE 18.04.2023 14:22 <DIR> WRK 15.02.2023 01:37 <DIR> XML 12.02.2024 13:53 0 _0.txt 05.04.2023 14:32 2 990 592 _ealarm.exe 19.12.2021 15:14 733 _ealarm.ini 16.09.2022 17:31 390 _test_ps1.bat 14 File(s) 7 144 769 bytes 11 Dir(s) 16 562 417 664 bytes free LetoDb.ini для Leto2011.exe [MAIN] Share_Tables = 1 Port = 2812 DataPath = . PathRun = . LetoDbF.ini для LetoDbF.exe [MAIN] Port = 2816 DataPath = .\ Default_Driver = CDX Share_Tables = 1 No_Save_WA = 1 Lower_Path = 0 EnableFileFunc = 1 EnableAnyExt = 1 Allow_UDF = 1 Pass_for_Login = 1 Cache_Records = 21 Debug = 0 Optimize = 1 DataBase = / Backup = /tmp/backup Mask = *.dbf,*.dbt,*.ntx Lock = 1 Seconds = 30 Wait = 1 ArcCmd = tar -cvzf /tmp/backup/leto.tar.gz /tmp/backup/* рабочее место клиента Volume in drive D is DATA Volume Serial Number is E86E-69F5 Directory of D:\BK19\MiniGui\1_PRJ\EAlarm_1.3\INF\KLI 12.02.2024 14:15 <DIR> . 12.02.2024 14:15 <DIR> .. 22.12.2021 15:59 <DIR> WRK 22.12.2021 15:56 <DIR> XML 21.12.2021 17:59 2 982 400 _ealarm.exe 22.12.2021 15:55 116 _ealarm.ini 3 File(s) 2 982 516 bytes 4 Dir(s) 16 562 417 664 bytes free ini рабочего места клиента [COM] PathXml = .\XML ; directory for excel reporting Host = 127.0.0.1 ; Port = 2816 ;
| Всегда работаю от текущего каталога, т.е. везде в путях стоят точки или .\ LetoDbF всегда добавляет DataPath к исп. именам файлов на клиенте эту добавку, попробуйте задать (внутри имя приводятся к одному разделителю, как надо). DataPath = C:\Mywrk от такого задания отказался из за копирования, так от текущего все забрал, вместе с настройками и ...
|
|
|
|
| |
Пост N: 2
Зарегистрирован: 11.01.24
|
|
Отправлено: 12.02.24 15:48. Заголовок: Спасибо за то, что попытались помочь.
Как вижу, основная проблема в том, что функции Leto_file (и другие файловые) у меня не работают, хотя в .ini разрешены. И вообще, ни одна установка, отличная от заданного значения по умолчанию, не меняется (например, CDX/NTX). Letodb.ini лежит там же, где и запускаемый letodb.exe. Впрочем, и функция File() не работает тоже (а должна ли?), причем перебраны все возможные сочетания путей.
|
|
|
|
|
| постоянный участник
|
Пост N: 4516
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.02.24 16:02. Заголовок: VI Может дело в сбо..
VI Может дело в сборке сервера, у меня никогда не было такой штуки. Посмотрите в MiniGui пример SAMPLES\Advanced\LetoDbf, там был рабочий вариант сервера
|
|
|
|
| постоянный участник
|
Пост N: 7682
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.02.24 18:32. Заголовок: VI пишет: Впрочем, ..
VI пишет: цитата: | Впрочем, и функция File() не работает тоже (а должна ли?), причем перебраны все возможные сочетания путей. |
| Всё работает. Активно им пользовался раньше, и сейчас до сих пор работает.
|
|
|
|
| |
Пост N: 3
Зарегистрирован: 11.01.24
|
|
Отправлено: 12.02.24 19:58. Заголовок: Спасибо. Буду пробовать дальше.
|
|
|
Ответов - 54
, стр:
1
2
3
All
[только новые]
|
|