On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
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"

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

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


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




Пост N: 4899
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.16 12:13. Заголовок: Спасибо БОЛЬШОЕ всем..


Спасибо БОЛЬШОЕ всем за разъяснения !

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3431
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.05.16 13:15. Заголовок: В скрипте rddleto.hb..


В скрипте rddleto.hbp надо сделать некоторые изменения:

Строки

# static lib
-hblib
# shared lib, dll or so
#-hbdynvm
#-shared

Заменить на


# static lib
#-hblib
# shared lib, dll or so
-hbdynvm
-shared

Возможно, изменить имя библиотеки, это команда

-olib/${hb_plat}/${hb_comp}/rddleto

Для использования dll в программе надо при сборке указать соответствующую lib

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




Пост N: 4900
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.16 14:12. Заголовок: Pasha, СПАСИБО ! :s..


Pasha, СПАСИБО !
Меня отговорили от dll-ки !

Спасибо: 0 
Профиль
nbatocanin



Пост N: 68
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 07.05.16 16:54. Заголовок: Попробуем Leto_Clien..


Попробуем Leto_CliendID(). Это функция в letoudf.hrb:

FUNCTION Test
LOCAL nUserStru := leto_ClientID()
RETURN nUserStru

При запуске сервера, получаем:

Leto DB Server v.2.17b1 ! INIT: DataPath=d:\base, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=50
05/07/16 15:48:16: Error BASE/6101 Unknown or unregistered symbol: LETO_CLIENTID

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

Почему?

Спасибо: 0 
Профиль
nbatocanin



Пост N: 69
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 08.05.16 04:04. Заголовок: Как использовать фун..


Как использовать функцию LetoOrdCreate? Я написал в клиенте это:

Leto_UDF("LetoOrdCreate", "IN001", "Upper(a_naziv)")

Но сервер выдает сообщение об ошибке:

Error DBFNTX/1003 Open error: d:\base\xapp\36\in001.ntx



Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3432
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.05.16 09:25. Заголовок: nbatocanin пишет: П..


nbatocanin пишет:

 цитата:
Попробуем Leto_CliendID(). Это функция в letoudf.hrb:

FUNCTION Test
LOCAL nUserStru := leto_ClientID()
RETURN nUserStru

При запуске сервера, получаем:

Leto DB Server v.2.17b1 ! INIT: DataPath=d:\base, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=50
05/07/16 15:48:16: Error BASE/6101 Unknown or unregistered symbol: LETO_CLIENTID

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

Почему?



Я добавил request для этой функции. Попробуйте сейчас.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3433
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.05.16 09:28. Заголовок: nbatocanin пишет: К..


nbatocanin пишет:

 цитата:
Как использовать функцию LetoOrdCreate? Я написал в клиенте это:

Leto_UDF("LetoOrdCreate", "IN001", "Upper(a_naziv)")

Но сервер выдает сообщение об ошибке:

Error DBFNTX/1003 Open error: d:\base\xapp\36\in001.ntx



Эта функция предназначена для вызова на сервере.
С клиента используйте стандартную команду INDEX ON / функцию ordCreate

Спасибо: 0 
Профиль
nbatocanin



Пост N: 70
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 08.05.16 16:03. Заголовок: Эта функция предназн..



 цитата:
Эта функция предназначена для вызова на сервере.
С клиента используйте стандартную команду INDEX ON / функцию ordCreate



Надо изменить readme.txt:


 цитата:
9. Server-side functions

These functions can be run from the client by function leto_udf, and also from the functions defined in a file letoudf.hrb.



Сделал функцию в letoudf.hrb:


FUNCTION Udf_ParSort (nUserStru, cExp) 
LOCAL cLetoPar, cFile

cFile := "002"
cLetoPar := Leto_Alias (nUserStru, "Partneri")

SELECT (cLetoPar)

LetoOrdCreate (nUserStru, cFile, cExp)
LetoOrdListAdd (nUserStru, cFile)

RETURN cFile


Но функция не работает, сервер регистрирует ошибку:

Error DBFNTX/1003 Open error: d:\base\xapp\36\002.ntx





Спасибо: 0 
Профиль
nbatocanin



Пост N: 71
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 08.05.16 16:05. Заголовок: Я добавил request дл..



 цитата:
Я добавил request для этой функции. Попробуйте сейчас.



работает, спасибо!

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3436
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.05.16 21:21. Заголовок: nbatocanin пишет: С..


nbatocanin пишет:

 цитата:
Сделал функцию в letoudf.hrb:


FUNCTION Udf_ParSort (nUserStru, cExp)
LOCAL cLetoPar, cFile

cFile := "002"
cLetoPar := Leto_Alias (nUserStru, "Partneri")

SELECT (cLetoPar)

LetoOrdCreate (nUserStru, cFile, cExp)
LetoOrdListAdd (nUserStru, cFile)

RETURN cFile



Но функция не работает, сервер регистрирует ошибку:

Error DBFNTX/1003 Open error: d:\base\xapp\36\002.ntx



Попробуйте после сегодняшнего обновления

Спасибо: 0 
Профиль
nbatocanin



Пост N: 73
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.05.16 02:42. Заголовок: Сейчас функция LetoO..


Сейчас функция LetoOrdCreate работает (должен быть написать дополнительный параметр cTag):

LetoOrdCreate (nUserStru, cFile, cExp, cTag)

Но как я могу использовать этот индекс? LetoOrdListAdd не активирует этот индекс. Я попробовал OrdSetFocus, SET INDEX... безуспешно.


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3437
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.05.16 10:28. Заголовок: letoOrdListAdd актив..


letoOrdListAdd активирует (формирует соответствующие структуры данных) этот индекс на сервере, но клиент об этом ничего не знает. Чтобы активировать его и на клиенте, изменить функцию letoOrdListAdd, чтобы она передавала информацию об открытом индексе клиенту, и сделать на клиенте обработку этой информации. Это требует небольшой доработки letodb.
Можно обойтись и без такой схемы, просто создавая и открывая индекс стандартными средствами rdd с клиента до вызова udf-функции.
Кстати, почему вы выбрали такую схему создания индекса в udf-функции, а не непосредственно с клиента ?


Спасибо: 0 
Профиль
nbatocanin



Пост N: 74
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.05.16 17:37. Заголовок: У меня есть таблица ..


У меня есть таблица (tbrowse) с колоннами:


A: p_id
B: p_naziv
C: SumPar(p_id)

Функция SumPar(p_id) для каждого p_id:

FUNC SumPar (p_id) 
SELECT Table2
s := 0
SEEK p_id
WHILE p_id == s_doc
s += s_val
SKIP
END DO
SELECT Partner
RETURN s


Я хочу, чтобы отсортировать столбец C. Когда не используется LetoDB может написать:

cExp := "SumPar(p_id)"
INDEX ON &cExp TO (cTmp)

Но с LetoDB, это невозможно.


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




Пост N: 4921
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.05.16 18:00. Заголовок: nbatocanin пишет: Н..


nbatocanin пишет:

 цитата:
Но с LetoDB, это невозможно.



Возможно !
Нужно добавить функцию "SumPar(p_id)" в LetoDB и пересобрать сервер, т.е. эта функция будет уже на сервере.
Или сделать отдельную функцию UDF.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3438
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.05.16 18:07. Заголовок: nbatocanin пишет: У..


nbatocanin пишет:

 цитата:
У меня есть таблица (tbrowse) с колоннами:
...



Такую задачу можно решить самыми стандартными средствами, не задействуя механизм udf
Надо создать постоянный индекс для table2 по полю s_doc
В качестве 3-й колонки для tbrowse использовать выражение:

table2->(leto_Sum('s_val',, table1->p_id))


Спасибо: 0 
Профиль
nbatocanin



Пост N: 75
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.05.16 18:46. Заголовок: Такую задачу можно р..



 цитата:
Такую задачу можно решить самыми стандартными средствами, не задействуя механизм udf
Надо создать постоянный индекс для table2 по полю s_doc
В качестве 3-й колонки для tbrowse использовать выражение:

table2->(leto_Sum('s_val',, table1->p_id))



Можно ли сортировать (INDEX ON) по данной колонке?

Мне нужно индексирование по функциям потому что у меня есть и другие функции. Эти функции не существуют в Letodb.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3439
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.05.16 18:59. Заголовок: nbatocanin пишет: М..


nbatocanin пишет:

 цитата:
Можно ли сортировать (INDEX ON) по данной колонке?



Если создан индекс по полю s_doc. то естественно, записи будут упорядочены (отсортированы) по этому полю.


 цитата:
Мне нужно индексирование по функциям потому что у меня есть и другие функции. Эти функции не существуют в Letodb.



Это, насколько я понимаю, уже другой вопрос. Свои пользовательские функции можно самому добавить в source\server\server.prg перед сборкой сервера.
Это касается простых функций. Если функции при этом выполняют какие-то выборки из других рабочих областей, вопрос конечно сложнее.


Спасибо: 0 
Профиль
nbatocanin



Пост N: 76
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 13.05.16 02:37. Заголовок: Я не объяснил правил..


Я не объяснил правильно, извините. Tbrowse имеет несколько функций, например:

A: p_id
B: p_naziv
C: SumPar(p_id)
D: KomName(p_id)

FUNC KomName (p_id) 
SELECT Komerc
SEEK p_id
cName := Komerc->k_name
SELECT Partner
RETURN cName


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

A    B           C       D 
----------------------------
1 AB Comm 200 A6
2 D-Trd 1300 B1
3 XY Trade 500 A1


Пользователь выбирает колонку C:

A    B           C       D 
----------------------------
2 D-Trd 1300 B1
3 XY Trade 500 A1
1 AB Comm 200 A6


выбирает колонку D:

A    B           C       D 
----------------------------
3 XY Trade 500 A1
1 AB Comm 200 A6
2 D-Trd 1300 B1


Поэтому мне нужен индекс по функции. Когда не используется LetoDB, решение очень простое:

cExp := "SumPar(p_id)"
INDEX ON &cExp TO (cTmp)



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




Пост N: 982
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.16 16:18. Заголовок: nbatocanin пишет:Ког..


nbatocanin пишет:
 цитата:
Когда не используется LetoDB, решение очень простое


Не сложным будет, если делать запрос к базе, например в массив, тогда по умолчанию получите все колонки с сортировкой в tsb, как в примере minigui\samples\advanced\tsb_array_2\demo.prg (dblclick на header колонки). При такой технологии, не важно будет с какой базой работаете dbf\sql\ads\leto\...

Спасибо: 0 
Профиль
nbatocanin



Пост N: 77
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 13.05.16 16:51. Заголовок: К сожалению, я не ис..


К сожалению, я не использую MiniGUI. Кроме того, эти таблицы могут быть очень большими (50.000+), не знаю как быстро это решение работает.

Но, если я не найти другое решение, буду скопировать всю таблицу в DBFNTX, где работает INDEX по функциям. Это не хорошее решение, но не имеют другую идею.

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 17
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет