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




Пост N: 5579
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.16 21:30. Заголовок: [?] PACK


Во время упаковки базы по команде Pack он же __dbPack() размером от 500 метров
винда 7 пишет что приложение не отвечает....пока Pack не закончен.
Базы пакую в цикле.
Пробовал до Pack запускать отдельный поток в котором тупо в цикле пашет
hb_releasecpu() а после Pack завершать поток...не помогло.
Как то можно решить эту "проблему" ?

PS
на винде XP такого не замечал.

PS-1
вариант не юзать Pack не предлагать (знаю о чём речь).

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


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




Пост N: 4836
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.04.16 21:42. Заголовок: Dima пишет: Как то ..


Dima пишет:

 цитата:
Как то можно решить эту "проблему" ?


Можно тупо самому сделать аналог Pack.
И при своём Pack раз через 100 или 500 записей выводить что-то на экран.
Я тоже сталкивался с подвисанием проги в терминалке.
А в МиниГуи подвисает чаще - делаю тогда DO EVENT.

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




Пост N: 866
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.04.16 21:50. Заголовок: Dima пишет: Как то ..


Dima пишет:

 цитата:
Как то можно решить эту "проблему" ?


не оно ?
 
__dbPack( [<bBlock>], [<nEvery>] )
executes <bBlock> every <nEvery> records.

релизить цпу не в потоке а внутри пака

PS.
мож быть надо не релизить цпу , а обслужить очередь сообщений ...
в минигуи есть DoEvents() попробуй и ее
 
HB_FUNC( DOEVENTS )
{
MSG Msg;

while( PeekMessage( ( LPMSG ) &Msg, 0, 0, 0, PM_REMOVE ) )
{
hDlgModeless = GetActiveWindow();

if( hDlgModeless == NULL || ! IsDialogMessage( hDlgModeless, &Msg ) )
{
TranslateMessage( &Msg );
DispatchMessage( &Msg );
}
}
}





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




Пост N: 5580
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.16 22:41. Заголовок: Haz пишет: не оно ?..


Haz пишет:

 цитата:
не оно ?


Идею понял. Спасибо.

Andrey пишет:

 цитата:
Можно тупо самому сделать аналог Pack.


Уже , но работает медленнее.

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




Пост N: 5581
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.16 23:03. Заголовок: Haz пишет: в минигу..


Haz пишет:

 цитата:
в минигуи есть DoEvents() попробуй и ее


Пробнул и по ходу надо добавить
static HWND hDlgModeless = NULL;
но винда пишет тож самое при ...сделал так для теста __dbPack({|| DOEVENTS()},100)... до лампочки

ЗЫ
Может просто тупо что то выводить на экран ?

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




Пост N: 4837
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.04.16 00:28. Заголовок: Dima пишет: Может п..


Dima пишет:

 цитата:
Может просто тупо что то выводить на экран ?


Попробуй ! Скорее всего поможет.
Типа @ 0,0 say "+"

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




Пост N: 5582
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.04.16 09:20. Заголовок: Andrey пишет: Попро..


Andrey пишет:

 цитата:
Попробуй ! Скорее всего поможет.
Типа @ 0,0 say "+"


Неа , тоже до лампочки и у меня подозрение что блок кода не отрабатывает , так
как на экран ни чего не выводится.
Сделал так
ni:=1
__dbPack({|| hb_dispoutat(0,0,ntoc(ni),"w/n"),ni++})

PS
RDD ADSCDX


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




Пост N: 867
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.04.16 10:19. Заголовок: Dima пишет: подозре..


Dima пишет:

 цитата:
подозрение что блок кода не отрабатывает , так
как на экран ни чего не выводится.


Задай nEvery = 1


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




Пост N: 5583
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.04.16 10:27. Заголовок: Haz пишет: Задай nE..


Haz пишет:

 цитата:
Задай nEvery = 1


Задавал , не пашет. С DBFCDX работает.
Попробовал еще раз с созданием потока перед PACK и его убиением после.
В нем делаю вывод на экран Seconds() , так вот при паке толстой базы
тормозится даже поток что странно и как всегда получил месагу в окне "Приложение не отвечает"


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




Пост N: 868
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.04.16 10:37. Заголовок: Dima пишет: (знаю ..


Dima пишет:

 цитата:
(знаю о чём речь).


Ну тогда тебе туда

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




Пост N: 5584
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.04.16 10:40. Заголовок: Haz пишет: Ну тогда..


Haz пишет:

 цитата:
Ну тогда тебе туда


Не хотелось идти таким путем

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



Пост N: 414
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 09.04.16 10:53. Заголовок: Во время упаковки ба..



 цитата:
Во время упаковки базы по команде Pack он же __dbPack() размером от 500 метров
винда 7 пишет что приложение не отвечает....пока Pack не закончен.


Поток, это конечно хорошо.. А может внешнюю аппликацию пускать, для PAKA ?

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




Пост N: 5585
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.04.16 11:31. Заголовок: fil пишет: А может ..


fil пишет:

 цитата:
А может внешнюю аппликацию пускать, для PAKA ?


Не вариант.
Пакнул толстую базу под DBFCDX , все норм ни чего не подвисло.
Похоже проблема ADS или RDDADS

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




Пост N: 869
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.04.16 12:01. Заголовок: Dima пишет: Пакнул ..


Dima пишет:

 цитата:
Пакнул толстую базу под DBFCDX ,


пакуй драйвером DBFCDX они ж совместимы c ADSCDX.
потом восстанавливай ADS как по умолчанию

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




Пост N: 870
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.04.16 12:03. Заголовок: или переходи на ADT ..


или переходи на ADT там пак не нужен

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




Пост N: 5586
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.04.16 12:05. Заголовок: Haz пишет: пакуй д..


Haz пишет:

 цитата:

пакуй драйвером DBFCDX они ж совместимы c ADSCDX.


Вариант однако , вот только не будет ли он по сети работать медленнее это вопрос...

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




Пост N: 871
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.04.16 12:21. Заголовок: Dima пишет: вот то..


Dima пишет:

 цитата:
вот только не будет ли он по сети работать медленнее это вопрос...


У тебя базы на сервере ?? если так то упаковка конечно пойдет через клиента
Есть для этого AdsPackTable() или грузи упаковкой робота живущего на сервере

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




Пост N: 5587
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.04.16 12:25. Заголовок: Haz ушел думать......


Haz
ушел думать......

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




Пост N: 872
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.04.16 12:34. Заголовок: Dima пишет: ушел ду..


Dima пишет:

 цитата:
ушел думать......


а чего тут думать, подключай словари и используй сторед процедуру для упаковки
PS отвечать не надо, знаю ответ

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




Пост N: 5588
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.04.16 12:46. Заголовок: Haz пишет: PS отвеч..


Haz пишет:

 цитата:
PS отвечать не надо, знаю ответ


Да мне надо лампочку поменять а ты предлагаешь сделать ремонт в "квартире"

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




Пост N: 5589
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.04.16 21:28. Заголовок: Haz Вопрос на засып..


Haz
Вопрос на засыпку
Ты сделал SQL запрос который работает более 5 секунд и ты не получаешь в заголовке окна
что приложение не отвечает ?
По умолчанию время ответа приложения 5000 милисек (для XP вроде больше) и живет оно
в реестре.
HKEY_CURRENT_USER\Control Panel\Desktop
Параметр (в миллисекундах)
HungAppTimeout
То есть давая PACK базе по старинке , через 5 сек если PACK не закончен , реально
получим временный завис , до окончания работы PACK.
Вероятно тоже было бы и с индексированием толстой базы , но под ADS есть для
этого случая AdsRegCallback (если его использовать) , что не приводит к мнимому
зависанию.

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




Пост N: 3427
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.04.16 08:22. Заголовок: Метод adsPack из ADS..


Метод adsPack из ADSCDX вызывает функцию AdsPackTable из ace. Эта функция только частично поддерживает функциональность callback вызовов, а именно: если у таблицы есть индекс, то при индексации после упаковки будет вызвана callback - функция. При самой упаковке ничего не вызывается, клиент просто ждет ее завершения.

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




Пост N: 5590
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.04.16 08:45. Заголовок: Pasha пишет: При с..


Pasha пишет:

 цитата:
При самой упаковке ничего не вызывается, клиент просто ждет ее завершения.


Понял.
Отсюда и мнимое подвисание на стороне клиента.

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




Пост N: 874
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 11.04.16 11:00. Заголовок: Dima пишет: Вопрос ..


Dima пишет:

 цитата:
Вопрос на засыпку
Ты сделал SQL запрос который работает более 5 секунд


Было такое, потом изменил структуру баз и пока все нужные запросы выполняются не более 2 секунд.
При построении сложных отчетов , когда обрабатываются объемы минимум в 50 000 записей за месяц, пошел другим путем:
Выгружая отчет в Excel не готовлю его заранее одним запросом, а вызываю запрос для формирования каждой строки Excel.
Так немного дольше, но не критично, зато все это время пользователь не отрываясь смотрит как неведомая сила набирает на экране его отчет
и еще никто не жаловался на время. Наоборот, как дети радуются когда на глазах рисуется таблица, сама форматируется, красится в нужные цвета и заполняется

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





Пост N: 24
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 11.04.16 13:08. Заголовок: Haz пишет: неведом..


Haz пишет:

 цитата:
неведомая сила набирает на экране его отчет и еще никто не жаловался на время. Наоборот, как дети радуются когда на глазах рисуется таблица, сама форматируется, красится в нужные цвета и заполняется



... а вот отсюда можно поподробней, насколько я при делах программно создается файл Excel, формируется, заполняется и готовый вылетает на экран. И как это организовывается чтобы на глазах пользователя заполнялась и форматировалась каждая строка таблицы ?

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




Пост N: 5591
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.04.16 13:11. Заголовок: Alex_Cher Через OLE..


Alex_Cher
Через OLE создаешь объект
Это не включаем oExcel:Visible := .f.

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

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