Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

приложение зависает при обращении к Firebird. что делать помогите [D7, IB6.x]


Страницы:   1 2 3

Tepex ©   (2008-11-05 14:29:00) 

Доброго времени суток всем. Проблема в следующем есть сервер firebird и к нему подключаются клиенты и бывает так что иногда обращаешься к записи чтобы ее считать и приложение зависает. В чем может быть проблема? может быть другие пользователи обращаются к записям и блокируют их?


Sergey13   (2008-11-06 10:51:00) [41]

> [7] Tepex ©   (05.11.08 23:18)
> но иногда после закрытия обработки и вновь ее открытия и
> запуска зависает, и не работает не nowait, не timeout которые
> установлены.

Закрытие и открытие имеется в виду перезапуск приложения или отдельной формы приложения? Может чего не так инициализируется?


Tepex   (2008-11-06 10:43:00) [42]

СтрокаСЗаявками = "";
Для Каждого СтрокаИзСпискаЗаявок Из СписокЗаявок Цикл
Если НЕ СтрокаИзСпискаЗаявок.Заявка.ПометкаУдаления Тогда
СтрокаСЗаявками = СтрокаСЗаявками + "cast('"+ ВРег(СокрЛП(СтрокаИзСпискаЗаявок.Заявка.Номер))+"' as varchar(32)),";
КонецЕсли;
КонецЦикла;

ТекстЗапросаИДЗаявок = "select * from orders where agreementno in (" + СтрокаСЗаявками + ")";

Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "driver={Firebird/InterBase(r) driver};
         |server=" + выбСервер + ";
         |uid=" + выбПользователь + ";
         |pwd=" + выбПароль + ";
         |database=" + выбСервер + ":" + выбПутьКБазеАльтавин + ";
         |READONLY=1;
         |NOWAIT =1;
         |CursorType = ctForward-only;";
Соединение.ConnectionTimeOut = выбВремяОжидания;
Соединение.CursorLocation = "ltReadOnly";

Соединение.Open();

ТаблицаБазы = Новый ComОбъект("ADODB.RecordSet");

ТаблицаБазы.Open(ТекстЗапросаИДЗаявок, Соединение);
СтрокаИДЗаявок = "";
Пока Не ТаблицаБазы.EOF() Цикл  
СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").Value,"ЧГ=") + ",";
           ТаблицаБазы.MoveNext();
 
КонецЦикла;


Ну вообщем вот так вот все и формируется.


Сергей М.   (2008-11-06 10:21:00) [43]

А где у тебя настройка читающей транзакции и управление ей ?


Tepex   (2008-11-06 10:03:00) [44]

Пока Не ТаблицаБазы.EOF() Цикл  
 
СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").Value,"ЧГ=") + ",";
 
ТаблицаБазы.MoveNext();
 
КонецЦикла;


вообщем при получении данных из поля "orderid" обработка зависает и дальше ничего сделать не могу, приходится убивать процесс в диспетчере. Может быть с настройками самого firebird какие то проблемы или с подключением?


Сергей М.   (2008-11-06 09:48:00) [45]

Причем здесь "нравоучения" ?

Если обработку писал лично ты, то следовало бы сразу привести фрагмент кода, а не вводить в заблуждение фразой "как я понял" ..

Теперь по сути.

Что показывает отладчик при пошаговой трассировке кода 1С-обработки ?
На какой конкретно строчке происходит "вис" ?

Судя по


> обращаешься к записи чтобы ее считать и приложение зависает


приведенный тобой код не имеет отношения к проблеме - в нем нет ни намека на работу с НД и транзакциями ..


Tepex   (2008-11-06 09:38:00) [46]


> > Хм ..
> > К разработке Делфи-приложения ты не имеешь отношения,
> 1С-
> > обработку тоже не ты писал .. Возникает резонный вопрос
>
> > - какое отношение к программингу вообще ты имеешь ? Т.
> е.
> >  даже если причина "беды" будет локализована, как ты сможешь
>
> > повлиять на ее устранение ?
>
>
> Отношение к программированию я имею самое прямое. И как
> я буду влиять на устранение проблемы это тоже как бы мое
> дело.

от вас просто хочется услышать советов, а не нравоучений Господа


Tepex   (2008-11-06 09:17:00) [47]


> Хм ..
> К разработке Делфи-приложения ты не имеешь отношения, 1С-
> обработку тоже не ты писал .. Возникает резонный вопрос
> - какое отношение к программингу вообще ты имеешь ? Т.е.
>  даже если причина "беды" будет локализована, как ты сможешь
> повлиять на ее устранение ?


Отношение к программированию я имею самое прямое. И как я буду влиять на устранение проблемы это тоже как бы мое дело.
Данные выгружаются в из базы данных firebird в базу данных 1С.
Строка соединения формируется следующим образом:
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "driver={Firebird/InterBase(r) driver};    |server=" + выбСервер + ";
  |uid=" + выбПользователь + ";                 |pwd=" + выбПароль + ";      |database=" + выбСервер   + ":" +выбПутьКБазе+ ";               |READONLY=1;
  |NOWAIT =1;
  |CursorType = ctForward-only;";
Соединение.ConnectionTimeOut = выбВремяОжидания;
Соединение.CursorLocation = "ltReadOnly";
Соединение.Open();


Сергей М.   (2008-11-06 08:34:00) [48]


> обработка в 1С при помощи которой выгружаются данные


Куда выгружаются ?


Сергей М.   (2008-11-06 08:27:00) [49]


> есть программа написанная на Delphi исходников нет


> Обработка из 1С как я понял


Хм ..
К разработке Делфи-приложения ты не имеешь отношения, 1С-обработку тоже не ты писал .. Возникает резонный вопрос - какое отношение к программингу вообщеты имеешь ? Т.е. даже если причина "беды" будет локализована, как ты сможешь повлиять на ее устранение ?


Tepex   (2008-11-05 23:18:00) [50]

Вообщем есть программа написанная на Delphi исходников нет поэтому не могу посмотреть что там происохдит, т.е является черным ящиком, она работает с БД, и есть обработка в 1С при помощи которой выгружаются данные которые создаются программкой на Delphi. Обработка из 1С как я понял подключается к базе данных через COM объект и использует ADO. Подключение происходит нормально, выгрузка данных, происходит нормально, но иногда после закрытия обработки и вновь ее открытия и запуска зависает, и не работает не nowait, не timeout которые установлены. Может ли быть так что клиенты из под Delphi приложения блокируют таблицы и можно ли их как то разблокировать?
P.S клиентов 10.
консультации по 1С не стоит давать я могу спросить и на другом форуме.
Интересует ответы только по поводу FireBird и ADO компонент


PEAKTOP   (2008-11-05 16:58:00) [51]

> Sergey13 ©   (05.11.08 15:48) [5]
> Может и не в коде дело, а в том, например, что сервер это "сервер" и по совместительству рабочая машина какого нибудь геймера. 8-)


Ставлю 80% на параметры транзакции INSERT и еще 15% на сборку мусора SWEEP (если подключение происходит в 2 часа ночи и это единственный клиент в данный момент времени).


Sergey13   (2008-11-05 15:48:00) [52]

> [4] Правильный$Вася   (05.11.08 15:35)
> код давай

Может и не в коде дело, а в том, например, что сервер это "сервер" и по совместительству рабочая машина какого нибудь геймера. 8-)


Правильный$Вася   (2008-11-05 15:35:00) [53]

> иногда обращаешься к записи чтобы ее считать и приложение зависает
код давай


Sergey13   (2008-11-05 15:28:00) [54]

А что ты хотел сказать своим постом? Что-то, где-то, когда-то работает не так как хочется?


Tepex   (2008-11-05 15:05:00) [55]


> Иногда и хуже бывает. На все свои причины при своих условиях.

что ты этим хотел сказать?


Sergey13   (2008-11-05 14:40:00) [56]

Иногда и хуже бывает. На все свои причины при своих условиях.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо