On-line: Pasha, гостей 2. Всего: 3 [подробнее..]
АвторСообщение
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 [только новые]


SergKis



Пост N: 983
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.16 17:13. Заголовок: nbatocanin пишет: я ..


nbatocanin пишет:
 цитата:
я не использую MiniGUI


MiniGUI это, как пример, подключенного блока кода сортировки (туда\обратно) массива по dblclick на колонку, организовать такое у себя, мне думается не очень сложно.

 цитата:
буду скопировать всю таблицу


можно копировать узкую запись (не все колонки, а нужные для сортировки) а потом показывать все колонки по ссылке (recno)

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




Пост N: 4922
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.05.16 17:39. Заголовок: nbatocanin пишет: П..


nbatocanin пишет:

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

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



Да делай что предлагают ! Это же просто:

Pasha пишет:

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



nbatocanin пишет:

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



Для этой функции можно сделать по другому:
FUNC KomName (cAlias,p_id)
Local nSel := SELECT()
//SELECT Komerc
Select(cAlias)
SEEK p_id
cName := Komerc->k_name
SELECT(nSel)
RETURN cName


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



Пост N: 78
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 13.05.16 17:41. Заголовок: можно копировать узк..



 цитата:
можно копировать узкую запись (не все колонки, а нужные для сортировки) а потом показывать все колонки по ссылке (recno)



Я уже пытался это решениеи, оно работает:

SELECT (::cTmp)
ZAP

SELECT (::cAlias) 
Order ("")
GO TOP

WHILE !Eof()
x := &cExp
(::cTmp)->(DBAppend())
(::cTmp)->t_rec := RecNo()
(::cTmp)->t_val := x
SKIP
END DO
SELECT (::cTmp)
SET RELATION TO t_rec INTO (::cAlias)
GO TOP


Но, с этим решением возникает проблема фильтров других рабочих зон. Например:

SET FILTER TO Upper(Partner->p_naziv) == "XY TRADE"



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




Пост N: 4923
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.05.16 17:46. Заголовок: nbatocanin пишет: К..


nbatocanin пишет:

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



Это очень маленькие базы для LetoDB. Я тестировал на 5 млн. записей и приводил свои тесты:
Скрытый текст

Пример здесь - https://cloud.mail.ru/public/DPUw/QtKxEiyro

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




Пост N: 5650
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.05.16 17:52. Заголовок: Andrey пишет: Для э..


Andrey пишет:

 цитата:
Для этой функции можно сделать по другому:
FUNC KomName (cAlias,p_id)
Local nSel := SELECT()
//SELECT Komerc
Select(cAlias)
SEEK p_id
cName := Komerc->k_name
SELECT(nSel)
RETURN cName



Можно же проще однако.
Плохая практика указывать явно Select а затем делать Seek (ИМХО)
 
FUNC KomName (cAlias,p_id)
Local ret:=""
if (cAlias)->(Dbseek( p_id ))
ret := (cAlias)->k_name
endif
RETURN ret



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


Пост N: 965
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.05.16 20:35. Заголовок: Dima пишет: Можно ж..


Dima пишет:

 цитата:
Можно же проще однако.


можно еще
 
cRet := if( (cAlias)->(Dbseek( p_id )), (cAlias)->k_name ,'' )

или
 
cRet := (cAlias)->( if( Dbseek( p_id ), F->k_name ,'' ))



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




Пост N: 5651
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.05.16 20:48. Заголовок: Haz пишет: можно ещ..


Haz пишет:

 цитата:
можно еще


Можно :) Я чисто написал что бы ясно было товарищу из Болгарии и товарищу с Дмитрова.

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


Пост N: 966
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.05.16 20:53. Заголовок: Dima пишет: Я чисто..


Dima пишет:

 цитата:
Я чисто написал что бы ясно было


тоже кстати не люблю явное указание SELECT не знаю почему но всегда использую (cAlias)->
может потому что не нужно помнить в какой рабочей области живем сейчас

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




Пост N: 5652
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.05.16 21:22. Заголовок: Haz пишет: может по..


Haz пишет:

 цитата:
может потому что не нужно помнить в какой рабочей области живем сейчас


Аналогично !

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



Пост N: 79
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 13.05.16 23:47. Заголовок: Функция KomName не в..


Функция KomName не важна, я писал только в качестве примера. Мне нужна функция, которая может быть использована в INDEX ON.

Pasha пишет:

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



Как это работает? Я изменил server.prg и добавил простую функцию TEST которая возвращает "Abc" (добавил ту же функцию на клиенте). Это работает.

Но, как Паша написал, когда я пытаюсь получить доступ к базе данных, сервер отвечает с ошибкой:

Breakdown at: 2016.05.13 22:42:19
Unrecoverable error 6005: Exception error:%s


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



Пост N: 80
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 15.05.16 16:32. Заголовок: Вот как я решил проб..


Вот как я решил проблему (упрощенно):

- создал p_tmp (C5) в таблице Partneri.
- Создан TMP на станции через драйвер DBFNTX. Эта таблица имеет два поля: t_val (C40), t_rec (N10), INDEX ON t_val. Программа вычисляет значение выражения для каждой строки, затем
написал результат у tabelu TMP.

SELECT ("Partneri") 
GO TOP
WHILE !Eof()
Tmp->(DBAppend())
Tmp->t_rec := RecNo()
Tmp->t_val := Upper(&cExp)
SKIP
END DO

SELECT Tmp
GO TOP
n := 1
WHILE !Eof()
Partneri->(DBGoto(Tmp->t_rec))
Partneri->p_tmp := HB_NumToHex (n++,5)
SKIP
END DO

SELECT Partneri
INDEX ON p_tmp TAG "TmpPar" TO (cTmp)


Я заметил, что есть ошибкa в команде INDEX ON (DBFNTX):

INDEX ON p_tmp TO (cTmp)

Команда работает, если cTmp = "test". Но если cTmp = "//192.168.99.10:2807/App/test", то команда не работает.

INDEX ON p_tmp TAG "test" TO (cTmp)

Всегда работает.

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




Пост N: 4928
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.05.16 00:26. Заголовок: nbatocanin пишет: К..


nbatocanin пишет:

 цитата:
Команда работает, если cTmp = "test". Но если cTmp = "//192.168.99.10:2807/App/test", то команда не работает.



Попробуй делать индексный файл без пути к нему.
Просто cTmp := "test"
Для индексов не нужно указывать путь "//192.168.99.10:2807/App/".
Я не указываю пути к индексу.


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



Пост N: 81
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 16.05.16 02:01. Заголовок: Попробуй делать инде..



 цитата:
Попробуй делать индексный файл без пути к нему.
Просто cTmp := "test"
Для индексов не нужно указывать путь "//192.168.99.10:2807/App/".
Я не указываю.



Так работать, но мне нужно указывать путь, индекс находится в другом директорию.

INDEX ON TAG "xy"...

всегда работает.

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




Пост N: 4929
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.05.16 11:18. Заголовок: nbatocanin пишет: Т..


nbatocanin пишет:

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


Этот вопрос уже к разработчикам Leto.

Хотя зачем делать индексы в другой директории ?
Это же не локальная или не сетевая программа...
Небольшое ограничение Leto. Привыкнуть просто и всё !

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



Пост N: 82
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 16.05.16 13:48. Заголовок: Это временный индекс..


Это временный индекс, я не хочу мешать с другими данными.

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




Пост N: 4930
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.05.16 15:34. Заголовок: nbatocanin пишет: Э..


nbatocanin пишет:

 цитата:
Это временный индекс, я не хочу мешать с другими данными.



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

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


Пост N: 968
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.05.16 15:42. Заголовок: Andrey пишет: Я уда..


Andrey пишет:

 цитата:
Я удаляю при выходе из своей программы.


Лучше удалять при входе, так гарантированно удалится весь мусор если даже прога слетела аварийно.
или двойная проверка - при выходе и при входе

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




Пост N: 5657
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.05.16 15:53. Заголовок: Лучше делать MEM: ба..


Лучше делать MEM: базу для этих случаев .


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



Пост N: 83
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 16.05.16 16:13. Заголовок: Лучше делать MEM: ба..



 цитата:
Лучше делать MEM: базу для этих случаев .



MEM таблицы имеют ограничение около 500-600,000. Кроме того, мне нужен Letodb индекс. Я думаю, что это невозможно.

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




Пост N: 5659
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.05.16 16:20. Заголовок: nbatocanin пишет: К..


nbatocanin пишет:

 цитата:
Кроме того, мне нужен Letodb индекс


Тогда да , MEM не подходит.
Насчет ограничения MEM .... стресс тест я ему не устраивал , пока все работает ровно.
А откуда такая инфа про ограничение в около 500-600,000 (я так понял записей) ?

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