Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зависает SQL-запрос 
:(
    Опции темы
AndreyZ53
Дата 6.8.2014, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 22.8.2008

Репутация: нет
Всего: 2



Здравствуйте!

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

Код

procedure TForm2.FormShow(Sender: TObject);
var
   i:integer;
begin
   ListBox1.Clear;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('SELECT DISTINCT name_otdel FROM SPR_OTDEL ORDER BY name_otdel');
   ADOQuery1.Active:=True;
   ADOQuery1.First;
   for i:=0 to ADOQuery1.RecordCount-1 do
    begin
     ListBox1.Items.Add(ADOQuery1.Fields.FieldByName('name_otdel').AsVariant);
     ADOQuery1.Next;
    end;
end;


Я формирую в запрос все отделы и откидываю повторяющиеся записи. Далее добавляю их в ListBox и по нажатию на определенный делается запрос по этому отделу.

Вопрос вот в чем: у нас на предприятии имеется две подсети (172.16.ххх.ххх и 172.28.ххх.ххх). На всех компьютерах отлично работает программа, на всех подсетках, но вот у одного человека с 28-подсетью, при вызове данного окна (со списком отделов) программа просто зависает. Хотя когда она запускается, телефоны сразу показываются. У меня для всей программы используется один и тот же ADOConnection, не могу понять в чем проблема, у всех отлично, только вот на одном компе такой косяк, не могу понять. Может подскажите, если есть у кого какие мысли?

Забыл сказать, что база MS SQL


Это сообщение отредактировал(а) AndreyZ53 - 6.8.2014, 12:04
--------------------
https://itbases.ru/
PM MAIL WWW Skype   Вверх
FessVaran
Дата 6.8.2014, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 13.1.2014

Репутация: нет
Всего: нет



   ListBox1.Clear;
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;

Для начала попробуй так.

И вместо этого 
   ADOQuery1.Active:=True;
   ADOQuery1.First;

Можно написать ADOQuery1.Open;
PM MAIL   Вверх
kami
Дата 6.8.2014, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Цитата(AndreyZ53 @  6.8.2014,  12:03 Найти цитируемый пост)
при вызове данного окна (со списком отделов) программа просто зависает. 

До этого момента ADOConnection.Connected = False ?

Как выглядит строка подключения?

Просто есть устойчивое впечатление, что я с таким сталкивался при обращении к другим компьютерам по имени (через NetBIOS (?)), а не через IP

Это сообщение отредактировал(а) kami - 6.8.2014, 20:46
PM MAIL WWW   Вверх
drkot
Дата 10.8.2014, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(AndreyZ53 @  6.8.2014,  13:03 Найти цитируемый пост)
дного человека с 28-подсетью, при вызове данного окна (со списком отделов) программа просто зависает

Такое поведение может быть вызвано фаирволом или антивирусом (с Internet security).


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
AndreyZ53
Дата 24.11.2014, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 22.8.2008

Репутация: нет
Всего: 2



Цитата(kami @ 6.8.2014,  20:44)
До этого момента ADOConnection.Connected = False ?

Как выглядит строка подключения?

Просто есть устойчивое впечатление, что я с таким сталкивался при обращении к другим компьютерам по имени (через NetBIOS (?)), а не через IP

А можно поподробнее.

AdoConnection как на главной форме подключился, так он и работает.

Можно узнать про то что там с NetBIOS?

Проблему так и не решил!

Это сообщение отредактировал(а) AndreyZ53 - 24.11.2014, 17:04
--------------------
https://itbases.ru/
PM MAIL WWW Skype   Вверх
superVad
Дата 25.11.2014, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



AndreyZ53, что то на компе наверное. Винду переставьте, или воткните его шнурок в ноут с такими же настройками сети и проверьте. Чего в коде искать ошибку если везде работает...

Вместо этого:
Код

for i:=0 to ADOQuery1.RecordCount-1 do
    begin
     ListBox1.Items.Add(ADOQuery1.Fields.FieldByName('name_otdel').AsVariant);
     ADOQuery1.Next;
    end;

Обычно такую конструкцию используют:
Код

  while not ADOQuery1.Eof do
  begin
    ...
    ADOQuery1.Next;
  end;


И First по идее можно не ставить, набор на первой записи открывается.

Вместо:
Код

    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('SELECT DISTINCT name_otdel FROM SPR_OTDEL ORDER BY name_otdel');

Удобно использовать:
Код

    ADOQuery1.SQL.Text := 'SELECT DISTINCT name_otdel FROM SPR_OTDEL ORDER BY name_otdel';

PM MAIL   Вверх
AndreyZ53
Дата 26.11.2014, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 22.8.2008

Репутация: нет
Всего: 2



superVad, Может дело с маршрутами? с этого компьютера не всегда подключается к компьютеру через Radmin, то есть IP пингуется, а подключится не может. А со своего я отлично подключаюсь.

Просто все равно как-то странно, главное окно приложения же запускается, подключение к БД происходит, запрос выполняется, а дальше уже не идет.
--------------------
https://itbases.ru/
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.