On-line: Мирослав, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
администратор




Пост N: 2943
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.04.13 15:03. Заголовок: Cписок алиасов


Как получить список всех открытых баз данных ?
Либо в виде алиасов либо номеров рабочих областей.
Можно конечно сделать самопал , но вдруг что то готовое есть
и эффективное.

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





Пост N: 177
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 06.04.13 19:45. Заголовок: Есть, в FWH.. и выгл..


Есть, в FWH.. и выглядит это так

function aGetWorkAreas() // Returns an Array with all available Alias

local aAreas := {}
local n

for n = 1 to 255
if ! Empty( Alias( n ) )
AAdd( aAreas, Alias( n ) )
endif
next

return aAreas


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




Пост N: 2944
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.04.13 20:07. Заголовок: fil О таком самопал..


fil
О таком самопале я и грил. Такой способ понятен и не очень эффективен.
Перебрать надо 255 рабочих областей (кстати в Harbour эта цифра не больше чем 255 ?)
Почему вопрос такой возник. При открытии баз в сети (42 базы 105 индексов) , открытие
баз происходит быстрее чем закрытие при выходе когда делаю DbCloseAll().
Просто хотел ускорить закрытие баз. Понятно что при открытии баз можно заполнять
массив и потом в цикле по нему закрыть базы.

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




Пост N: 2945
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.04.13 21:23. Заголовок: Хочу добавить что Db..


Хочу добавить что DbCloseAll() с RDD DBFCDX срабатывает быстро а вот с ADSCDX медленновато.


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




Пост N: 64
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.04.13 10:43. Заголовок: Вместо dbCloseAll() ..


Вместо dbCloseAll() с ADS можно попробовать AdsCloseAllTables()

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




Пост N: 2946
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.04.13 11:06. Заголовок: Haz пишет: AdsClose..


Haz пишет:

 цитата:
AdsCloseAllTables()


Пробовал. Падает прога с GPF
Сегодня dbcloseall() работает нормально , хз что было...

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




Пост N: 2948
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.04.13 11:37. Заголовок: Заметил если в течен..


Заметил если в течении дня часто пересобирать прогу то через какое то время комп начинает тормозить ,
прога собирается дольше , часов через 5 может даже инет отвалится. Компилятор Mingw +Harbour.
Возможно этот тормоз задел каким то боком и ADS который в качестве сервиса крутится на этой
же машине.

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




Пост N: 65
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.04.13 12:26. Заголовок: Странно ... у меня н..


Странно ... у меня не падает при вызове ADSCloseAllTables, но я собираю на BCC и может причина в этом.
При закрытии программы в main окне работает ON RELEASE {|| DbCloseAll(), AdsDisconnect(), AdsApplicationExit() }
может это поможет.

PS Тормоза наблюдаются на машине на которой собираю проект если долго висит в памяти HBIDE

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




Пост N: 66
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.04.13 12:35. Заголовок: Dima, как вариант по..


Dima, как вариант подцепись к ADServer при помощи ARC32 c REMOTE connection и посмотри состояние сервера после закрытия твоей программы - кажется мне , что после закрытия остается зависшее подключение

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




Пост N: 2949
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.04.13 12:42. Заголовок: Haz А как ты подклю..


Haz
А как ты подключаешься к нему ?

ADS.INI

 
[FILES] ; моя фича
PATH=//127.0.0.1/sklad$/

[DRIVES]
N:=//127.0.0.1/sklad$/

[MYSERVER]
LAN_IP=127.0.0.1
LAN_PORT=6262

[SETTINGS]
ADS_SERVER_TYPE=7



Подключаюсь так , предварительно считав в прогу установки из ADS.INI
 
AdsSetServerType(_servtype) //_servtype считан из ADS_SERVER_TYPE

if !AdsConnect60(disk) // disk считан из [DRIVES] в данном примере будет N:
? "Не могу подключится к Advantage Database Server......"
quit
endif



adshandle:=AdsConnection() // хендл подключения
if adshandle==0
? "Не могу получить хендл подключения к Advantage Database Server......"
quit
endif

Собственно все , далее идут настройки
AdsSetCharType(2, .t.)
AdsLocking( .t. )
AdsSetDeleted(.T.)
rddRegister("ADS",1)
AdsRightsCheck(.F.)
set optimize on
SET AUTOPEN OFF
Set delete on
AdsSetFileType(ADS_CDX)
Set date to german
set(_SET_FORCEOPT,.t.)
set(_SET_OPTIMIZE,.t.)
set(_SET_HARDCOMMIT,.f.)



Haz пишет:

 цитата:
Dima, как вариант подцепись к ADServer при помощи ARC32 c REMOTE connection и посмотри состояние сервера после закрытия твоей программы - кажется мне , что после закрытия остается зависшее подключение



Да и по монитору ADS видно что нет зависших подключений

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




Пост N: 67
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.04.13 13:11. Заголовок: Примерно так же , но..


Примерно так же , но ( к шифрованным базам )
hConnection := NIL
IF adsConnect60( cBasePath + "\" + cBase + ".add", 0, "SystemProcess", 'SystemProcess', nServerType, @hConnection )
ELSE
MsgExclamation( "Ошибка подключения к словарю данных !" )
END
да и формат баз только ADS


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




Пост N: 2950
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.04.13 13:32. Заголовок: Haz Не в курсе ? Не..


Haz
Не в курсе ? Нет ли в ADS похожей фичи как в LetoDB. Что бы можно было объявить из проги переменую
на сервере и при выходе ее убить. Ну или флаг какой то на серваке (семафор) поставить из проги.
Скажем с одной станции зашел в прогу PETROV , объявили массив (или пополнили) на сервере и
добавили него новый элемент "PETROV". Если с другой станции попытается снова зайти PETROV
а он уже есть в массиве на сервере , то зайти у него не получится.

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




Пост N: 2829
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.04.13 14:55. Заголовок: Haz пишет: Вместо d..


Haz пишет:

 цитата:
Вместо dbCloseAll() с ADS можно попробовать AdsCloseAllTables()



Это функция ace, которая закрывает все таблицы для текущего соединения. Но рабочие области харбора - rddads при этом остаются открытыми, и любое обращение к ним приведет к непредсказуемым последствиям, а именно к падению программы.
Механизм падения следующий. После AdsCloseAllTables() все равно автоматически будет вызван dbCloseAll. И если в какой-то р/о осталась незавершенная операция: после какого-то изменения не было вызова dbCommit(). это приведет к операции с этой р/о, которую ace уже закрыл и знать о ней не знает. Результат законный - gpf aka access violation.
В letodb есть аналогичная функция: Leto_CloseAll(), которая все делает корректно и быстро, тоже одним запросом к серверу, и закрывает все р/о на клиенте.

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




Пост N: 2830
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.04.13 15:03. Заголовок: Dima пишет: Не в ку..


Dima пишет:

 цитата:
Не в курсе ? Нет ли в ADS похожей фичи как в LetoDB. Что бы можно было объявить из проги переменую
на сервере и при выходе ее убить. Ну или флаг какой то на серваке (семафор) поставить из проги.



Не Haz, но перешерстил доку по ace, и ничего подобного не нашел. Семафоры (в виде служебного файла) сервером ads используются только для того, чтобы отследить, жив клиент или уже нет.

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




Пост N: 2951
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.04.13 15:16. Заголовок: Pasha пишет: Не Haz..


Pasha пишет:

 цитата:
Не Haz, но перешерстил доку по ace, и ничего подобного не нашел. Семафоры (в виде служебного файла) сервером ads используются только для того, чтобы отследить, жив клиент или уже нет.


Да я тоже покопал и ни чего такого не увидел. На счет семафоров тоже понял.
Придется делать по старинке.

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




Пост N: 2831
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.04.13 15:22. Заголовок: Dima пишет: Заметил..


Dima пишет:

 цитата:
Заметил если в течении дня часто пересобирать прогу то через какое то время комп начинает тормозить ,
прога собирается дольше , часов через 5 может даже инет отвалится. Компилятор Mingw +Harbour.
Возможно этот тормоз задел каким то боком и ADS который в качестве сервиса крутится на этой
же машине.



Современные ОС ведут себя непредсказуемо, и причину этого выяснить трудно.
В эту пятницу (позавчера) заметил, причем не первый раз, что у меня что-то повтор нажатия клавиш работает медленно, а именно навигационные клавиши в редакторе.
В настойках клавиатуры у меня скорость повтора всегда стоит на максимуме. Проверил - так и есть. Вспомнил древние времена и прерывание 16h. Сделал тест: скорость вместо 30 символов в сек оказалась примерно 10, т.е на минимуме. Поигрался с панелью управления: подергал скорость туда-сюда. Стало как положено. И какая программа гадит - неизвестно. Причем гадит систематически. Непонятно.
У меня и программ то установлено по минимуму, только для работы и ни на йоту больше.

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




Пост N: 2952
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.04.13 15:39. Заголовок: Dima пишет: Придетс..


Dima пишет:

 цитата:
Придется делать по старинке.


А делаю это так. При входе юзера проверяю наличие файла семафора есть ли он и не залочен ли.
Если залочен юзер повторно не войдет.
Если файла нет , создаю его и блочу.
При выходе из проги файл закрываю и удаляю. Если юзер просто отвалился (выпал из проги)
файл сам разблочится.

Какие еще есть варианты ?
Вариант писать все это в базу и лочить запись не подходит , так как не держу
все базы открытыми , открываю их по мере необходимости и после выхода из какого
то режима делаю Dbcloseall()

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



Пост N: 84
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 07.04.13 16:43. Заголовок: Dima , похоже это по..


Dima , похоже это пока единственный способ . Я его тоже использую . Единственный минус что попытка приконнектиться в сети занимает некоторое время : Проверка наличия определённого файла + попытка открыть его EXCLUSIVE .....

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




Пост N: 2953
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.04.13 17:01. Заголовок: Softlog86 а ты его ..


Softlog86
а ты его с каким номером атрибута открываешь ?
я с 18 (не помню где вычитал но тормоза нет)

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



Пост N: 85
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 07.04.13 22:25. Заголовок: Я не использую LETO/..


Я не использую LETO/ADS ..... У меня обычная файл-серверная система . На сетевом диске обычно открывается по USE ("Z:\SKLAD\OP_XX.DBF") .... EXCLUSIVE . Не использую никаких атрибутов ....

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




Пост N: 2832
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.04.13 23:08. Заголовок: Dima пишет: Как пол..


Dima пишет:

 цитата:
Как получить список всех открытых баз данных ?
Либо в виде алиасов либо номеров рабочих областей.



Оказывается, в харборе есть функция

hb_waEval( bBlock )

Блок кода bBlock вызывается для каждой открытой рабочей области. Т.е. массив алиасов или номеров р/о можно получить так:

aAlias := {}
hb_waEval( {|| AADD(aAlias, Alias())} )

или
aSelect := {}
hb_waEval( {|| AADD(aSelect, Select())} )


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

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