IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Вопрос по WinXP - Delphi+Access+Excel? (https://www.imho.ws/showthread.php?t=93989)

PLP 10.10.2005 15:25

Вопрос по WinXP - Delphi+Access+Excel?
 
Приветствую.

Пишу программу на Delphi + Access (не сам Access, а Jet и MDAC) - небольшая база (не сетевая даже - 1 рабочее место) + отчеты на бумаге и экспорт в Excel. Столкнулся со странной проблемой. На моей рабочей машине все отлично работает. На машине заказчика P3, Win98, Office2000 - помедленнее, но тоже хорошо. Купили под эту задачку новый компьютер P4 3kMHz, 1024Mb, WinXPSP2, Office2003, антивирусов нет(короче сильная овая машина) - запускаюсь я на ней и вот те зсдрасте:
1. Открытие программы происходит с непонятной задержкой в 2 сек.
2. Открытие всех формочек (даже элементарных справочников с порядка 10 записями) с задержкой до 10 сек.
3. Экспорт в Excel меня совсем убил - в десятки раз дольше чем на (P3, Win98, Office2000).

Причем такое ощущение, что сами операции (например открытие формы, отчета) происходят быстро (кроме экспорта), но перед ними машина просто делает паузу. Диспетчер задач при этом не показывает никакой нагрузки.

Делал эксперименты, переставил офис на 2000 - все то же самое. Потом заметил, что значек подключения по локальной сети при работе с программой все время горит - т.е. идет трафик. Интернета там нет, просто несколько машин в сети. Эксперименты показали - если запускать программку при Отключенной сети, то все работает без задержек даже если сеть после запуск программы включить. Если запускать при включенной сети, то все тормозит.

Подскажите, как пониммать происходящее? Что предпринять?
Спасибо!

dyr_farot 10.10.2005 16:11

ConnectionString покажи... + неплохо бы файр-волом глянуть куда он лезет...
( никогда такого прикола не видел... )

PLP 10.10.2005 16:19

sys_ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' + ExtractFilePath(Application.ExeName) + 'db\' + DataBaseFile + ';Persist Security Info=False';

Люди говорят, что может быть Office2003 виноват - он пытается достать какие-то компоненты в интернете, не находит и работает своими местными силами. Но 2003 я заменил на 2000 и ничего не поменялось. Ума не приложу - что делать?

/7y3uK 11.10.2005 11:13

да это OLE - тормозит по страшному... надо в настройках коннектора копаться и в настройках системы...

PLP 11.10.2005 12:34

Цитата:

Сообщение от /7y3uK
да это OLE - тормозит по страшному... надо в настройках коннектора копаться и в настройках системы...

Так непонятно почему тормозит. :) И почему на старой машине не тормозит? И почему у меня на рабочей не тормозит? И на что влияет отключение сети?

/7y3uK 12.10.2005 13:00

Без поллитры не разберешься... OLE контейнер - штука не предсказуемая... производительность может изменяться даже от очередного обновления винды... Вопрос на засыпку, а какой дата соурс используется? У меня с джетовским драйвером только ADO нормально работает...

PLP 12.10.2005 15:36

Цитата:

/7y3uK:
У меня с джетовским драйвером только ADO нормально работает...
TADOConnection -> TADOQuery ...

Ну не ставить же 98ю и 97 офис. :(
Не дайте пропасть человеку :молись:

PLP 12.10.2005 23:24

Цитата:

/7y3uK:
OLE контейнер - штука не предсказуемая... производительность может изменяться даже от очередного обновления винды...
Еще разок. Экспериментально установлено, что при запуске
программы на компьютере (P4 3GHz, 1024Mb, WinXPSP2, Office2003) при
включенной локальной сети (доступа в интернет нет) при выполнении
программой операций (например открытия форм, отчетов) возникает
задержка до 10 сек. При запуске программы с предварительно
отключенной лок. сетью подобных задержек не возникает, все выполняется
мгновенно. Очевидно кто-то запрашивает что-то по сети перед
выполнением каждой операции с БД - что это может быть и как это
выключить?

Т.е. сами механизмы доступа к данным работают быстро - это видно при отключении сети - все происходит мгновенно. Вопрос в том - на что влияет включенная сеть и кто (и зачем) начинает по ней гулять (и самое главное - как ему запретить)?

PLP 13.10.2005 20:15

Делюсь опытом.
Итак мы остановились на том, что был обнаружен трафик по сети во время задержек в работе программы. Я вооружился сниффером, который показал исходящий трафик на один из компьютеров под Win98 (назовем его Х) локальной сети по 139 (NetBIOS) и 445 (MS DS - не знаю, что такое) портам. Выключаю компьютер Х - программка летает даже при включенной сети. На этом Х установлен принтер, который используют все остальные компьютеры, в том числе и тот, на котором работает моя программа. Включаю Х, удаляю принтер - все летает. Подключаю принтер обратно - работает медленно. Значит дело в нем.

Какая связь между программой на одном компьютере и принтером (общим для всех компьютеров) на другом компьютере? Задержки не только при печати отчетов, н ои при открытии справочников, форм и т.п.???

/7y3uK 14.10.2005 10:46

Хм... поддержка принтера в твоем софте естественно еть :) А ты попробуй ее закоментить и посмотри что получится...

KapMaH 14.10.2005 23:53

1. Попробуй Firewall-ом "запереть" по очереди порт 139 (NetBIOS) и 445.
2. Проверь стоит ли в твоём принтере галка в том месте, где написанно, что его используют ДОС-Программы, если не нужна - нафих её вообще!

Andrewpg 15.10.2005 01:18

А принтер часом не Canon? И дрова принтера на стандартные поменять?

PLP 16.10.2005 13:16

Цитата:

Andrewpg:
А принтер часом не Canon? И дрова принтера на стандартные поменять?
Точно Canon лазерный. Так вроде и так стандартные стоят.

PLP 18.11.2005 01:43

Делюсь опытом дальше.

Проблема решена (огромное спасибо Вадиму Суслину) следующим образом.

Напомню, есть машина под ХР - на ней моя программа, и эта программа печатает по сети на принтере (Canon LBP1120), установленном на машине под вин98.

1. Поставили принтер на ХР машине как локальный на LPT1 порт (самого принтера там конечно нет).
2. Написали батник с 2 строчками: первая стирает все настройки net use; вторая - перенаправляет обращения с порта LPT1 на IP 98 машины в сети.
3. Виндовый шедулер во время старта ХР машины и далее с некоторой периодичностью (на случай, если 98 машина была выключена в момент включения ХР-шной) выполняет этот бат.

Результат - все работает, задержки при работе программы полностью отсутствуют :).

Вопрос - заработать-то заработало, но я так и не понял, что вызывало задержки в программе (до 25сек) при открытии форм и трафик по сети? Как это можно объяснить? :confused:


Часовой пояс GMT +4, время: 16:14.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.