Автор | Сообщение |
Andrey
|
| постоянный участник
|
Пост 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" Помню что где то обсуждали, а результат не запомнил...
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Dima
|
| |
Пост N: 5515
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.03.16 22:24. Заголовок: Andrey пишет: Т.е. ..
Andrey пишет: цитата: | Т.е. как сделать, чтобы новый коннект был другим ? |
| Наверное это просто не большая не доработка Leto и которую Павел сможет исправить.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4780
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.03.16 22:27. Заголовок: Dima пишет: Наверно..
Dima пишет: цитата: | Наверное это просто не большая не доработка Leto и которую Павел сможет исправить. |
| А в ADS как делается ?
|
|
|
Dima
|
| |
Пост N: 5516
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.03.16 23:49. Заголовок: Andrey пишет: А в A..
Andrey пишет: Там юзается AdsConnect() , затем AdsConnection()для получения хендла , но я не чекал разный ли он , но проверить можно.
|
|
|
Pasha
|
| Администратор
|
Пост N: 3407
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.03.16 08:09. Заголовок: nConnection - это но..
nConnection - это номер соединения только на одном клиенте, то есть в рамках одного приложения. Чтобы получить номер клиента на сервере, надо сделать вызов: RddInfo( RDDI_CLIENTID,,, [nConnection] )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4781
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.16 14:23. Заголовок: Pasha пишет: то ест..
Pasha пишет: цитата: | то есть в рамках одного приложения. |
| Я запускал сразу несколько разных тестовых программ к 2 серверам, везде nConnection = 1. Только соединение делал простое, только путь и всё. nConnection := LETO_CONNECT( cPathServer )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4782
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.16 14:27. Заголовок: Pasha пишет: Чтобы ..
Pasha пишет: цитата: | Чтобы получить номер клиента на сервере, надо сделать вызов: RddInfo( RDDI_CLIENTID,,, [nConnection] ) |
| А как потом у себя в программе закрыть только нужное соединение, не закрывая другого ? LETO_DISCONNECT(nConnection)
|
|
|
Pasha
|
| Администратор
|
Пост N: 3408
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.03.16 14:52. Заголовок: Я запускал сразу нес..
цитата: | Я запускал сразу несколько разных тестовых программ к 2 серверам, везде nConnection = 1. Только соединение делал простое, только путь и всё. nConnection := LETO_CONNECT( cPathServer ) |
| Одна клиентская программа ничего не знает про то, к каким серверам коннектились другие, поэтому в каждой программе nConnection нумеруются с единицы. Точно так же сервер не знает, к каким еще серверам был коннект у его клиентов. Поэтому есть номера соединений на клиенте - это nConnection, и номера клиентов на сервере - это RDDI_CLIENTID А для закрытия соединения - да, надо использовать nConnection Но можно еще и указывать адрес сервера: LETO_DISCONNECT( [ cConnString | nConnection ] ) --> nil
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4784
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.16 15:34. Заголовок: Pasha пишет: А для ..
Pasha пишет: цитата: | А для закрытия соединения - да, надо использовать nConnection Но можно еще и указывать адрес сервера: LETO_DISCONNECT( [ cConnString | nConnection ] ) --> nil |
| Если в одной программе адрес и пути одинаковы, то несколько nConnection не получиться ? Как тогда можно организовать в одной программе ОДНОВРЕМЕННО из клиента допустим следующее: 1) показ базы TEST с сервера 2) обработку базы TEST (добавление записей, ну по мелочи что-то)
|
|
|
Pasha
|
| Администратор
|
Пост N: 3410
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.03.16 16:30. Заголовок: Зачем с одной програ..
Зачем с одной программы делать несколько коннектов к одному и тому же серверу letodb ? leto_connect() работает следующим образом: При первом вызове соединение устанавливается, и возвращается его номер 1. При повторном вызове с такой же строкой коннекта определяется, что такой коннект уже есть, новый коннект не устанавливается, и возвращается тот же номер коннекта, т.е. 1.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4786
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.16 17:18. Заголовок: Pasha пишет: При по..
Pasha пишет: цитата: | При повторном вызове с такой же строкой коннекта определяется, что такой коннект уже есть, новый коннект не устанавливается, и возвращается тот же номер коннекта, т.е. 1. |
| Чуток понял - как коннект выполняется... А как тогда решить разрывать коннект или нет ? Использовать Public переменную для определения, есть ли открытая база или нет ?
|
|
|
PSP
|
| постоянный участник
|
Пост N: 1193
Зарегистрирован: 27.01.07
|
|
Отправлено: 14.03.16 19:03. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как тогда решить разрывать коннект или нет ? |
| А зачем его разрывать?
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4788
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.16 20:48. Заголовок: PSP пишет: А зачем ..
PSP пишет: Ну не хотелось бы его держать постоянно открытым... Хотя наверно и можно. Не знаю, не делал таких программ, вот и спрашиваю как делать. При запуске коннектиться к базе и держать постоянно открытым соединение ?
|
|
|
PSP
|
| постоянный участник
|
Пост N: 1194
Зарегистрирован: 27.01.07
|
|
Отправлено: 14.03.16 21:19. Заголовок: Andrey пишет: Ну не..
Andrey пишет: цитата: | Ну не хотелось бы его держать постоянно открытым... Хотя наверно и можно. Не знаю, не делал таких программ, вот и спрашиваю как делать. При запуске коннектиться к базе и держать постоянно открытым соединение ? |
| Постоянно будет открыто только tcp-соединение. Файлы базы данных можешь закрывать, если хочешь. К ним это соединение не имеет отношения.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4789
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.03.16 02:17. Заголовок: PSP пишет: Постоянн..
PSP пишет: цитата: | Постоянно будет открыто только tcp-соединение. |
| А какие ресурсы в программе задействует открытие tcp-соединения ? Что положительного и отрицательного в постоянно открытом tcp-соединение ? Или при входе в программу делать один коннект и не заморачиваться ? А как быть если программа использует доступ к двум разным серверам, один на Linux, а второй на Win2008 ? Не одновременный доступ, второй сервер используется периодически - раз в месяц. Чем дальше в лес, тем больше вопросов...
|
|
|
Softlog86
|
| |
Пост N: 286
Зарегистрирован: 03.12.08
|
|
Отправлено: 15.03.16 10:39. Заголовок: Протоколу TCP не важ..
Протоколу TCP не важно какой сервер ....
|
|
|
PSP
|
| постоянный участник
|
Пост N: 1195
Зарегистрирован: 27.01.07
|
|
Отправлено: 15.03.16 12:56. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А какие ресурсы в программе задействует открытие tcp-соединения ? |
| Никакие. Соединение устанавливает операционная система. Программа просто им пользуется, как и остальными ресурсами компьютера. цитата: | Что положительного и отрицательного в постоянно открытом tcp-соединение ? |
| Ничего отрицательного в этом нет. К примеру, браузер в процессе работы может открывать сотни(!!!) соединений с разными ресурсами, чтобы отобразить корректно html-страницу. цитата: | Или при входе в программу делать один коннект и не заморачиваться ? |
| Вот именно. цитата: | А как быть если программа использует доступ к двум разным серверам, один на Linux, а второй на Win2008 ? Не одновременный доступ, второй сервер используется периодически - раз в месяц. |
| Два разных сервера, - два соединения.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4790
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.03.16 19:43. Заголовок: PSP СПАСИБО ! :sm36..
PSP СПАСИБО !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4793
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.03.16 16:37. Заголовок: Вопрос по событиям в..
Вопрос по событиям в LetoDB. Есть ли возможность подписаться на событие добавления/редактирования/удаления записи в LetoDb ?
|
|
|
Pasha
|
| Администратор
|
Пост N: 3412
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.03.16 08:15. Заголовок: Можно установить гло..
Можно установить глобальный триггер: letodb.ini есть параметры: Trigger = <cFuncName> - Глобальная функция letodb RDDI_TRIGGER PendingTrigger = <cFuncName>- Глобальная функция letodb RDDI_PENDINGTRIGGER EnableSetTrigger = 0 - если 1, разрешает изменять установки триггера с помощью dbInfo( DBI_TRIGGER, ... ) Можно с клиента сделать вызов для рабочей области: dbInfo(DBI_TRIGGER, ...) и передали серверу имя функции - триггера. Саму функцию надо реализовать в модуле letiudf.prg Как работает триггер см.описание Sx_SetTrigger Особенность letodb в том, что триггер выполняется на сервере.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4797
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.03.16 12:06. Заголовок: Pasha пишет: Как ра..
Pasha пишет: цитата: | Как работает триггер см.описание Sx_SetTrigger |
| А где его взять ?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|