![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
приложение зависает при обращении к Firebird. что делать помогите [D7, IB6.x]
Tepex © (2008-11-05 14:29:00)Доброго времени суток всем. Проблема в следующем есть сервер firebird и к нему подключаются клиенты и бывает так что иногда обращаешься к записи чтобы ее считать и приложение зависает. В чем может быть проблема? может быть другие пользователи обращаются к записям и блокируют их?
Tepex (2008-11-06 13:59:00) [21][35] Извените конечно но что значит НД?
Сергей М. (2008-11-06 12:31:00) [22]
> не то, это к к рекордсету
Судя по авторскому
> обращаешься к записи чтобы ее считать и приложение зависает
проблемы как раз при работе с НД
sniknik (2008-11-06 12:10:00) [23]> http://delphi-faq.zoxt.net/363.htm
это немного не то, это к к рекордсету... лучше обратиться к документации.
sniknik (2008-11-06 12:08:00) [24]> Пересматривал код весь процесс проходит нормально, а вот в куске который я написал происходит зависание системы.
ну да...
st:= StringList.Text;
вот кусок в котором процесс (передача текста в переменную) проходит нормально.
после гденибудь в другом месте делаем StringList.Free, тоже что характерно совершенно нормально.
потом пытаемся выполнить первый "нормальный" кусок второй раз...
Сергей М. (2008-11-06 12:07:00) [25]
> Tepex
http://delphi-faq.zoxt.net/363.htm
Сергей М. (2008-11-06 11:54:00) [26]
> Tepex © (06.11.08 11:40) [28]
А что мешает отказаться от доступа к базе через ADO непосредственно в обработке в пользу доступа через дельфийские компоненты прямого доступа в 1С-надстройке ?
Tepex (2008-11-06 11:53:00) [27][29] Пересматривал код весь процесс проходит нормально, а вот в куске который я написал происходит зависание системы. может проблема в настройке самой СУБД? Или программа написанная на Делфи блокирует таблицы в чем проблема может быть?
sniknik (2008-11-06 11:46:00) [28]ну так, если там допущена такая ошибка... то нужно пересматривать весь код, очевидно писалось без понимания процесса.
Tepex (2008-11-06 11:40:00) [29]код привден верно работало даже с этой строкой, хотя она не правильная, спасибо за то что указал. Писал код не я, есть проблема с зависанием и мне ее к сожалению приходится решать.
sniknik (2008-11-06 11:34:00) [30]> Извени перепутал конечно это чушь.
тогда вопрос... а что именно мы тут обсуждаем? если приведённый код не рабочий, приведён "по памяти" и является чушью... как именно ты хочешь найти ошибку.
это все одно что для ремонта одного авто в авто мастерскую пригнать другое, но говорить все таки про первое (и главное ожидать, что отремонтируют именно его)...
sniknik (2008-11-06 11:30:00) [31]> И как надо написать правильнее?
смотря для чего/что делается, если нужна именно строка то память обычно правильно выделять под неё полностью, и куски "вкопировать" на места. а то что есть будет черезчур часто перераспределять память под строку. что и приведет к тормозам, если же строка превысит какой то объем (теоретически 2гига но практически меньше) то к нехватке памяти и/или глюку.
Tepex (2008-11-06 11:28:00) [32][23] Извени перепутал конечно это чушь. Просто сейчас под рукой нет Делфи
Tepex (2008-11-06 11:23:00) [33]
> кстати я бы и это посчитал бы глюком, правда это не всегда
> "смертельно", от объема зависит, но всегда тормозно
> > СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").
> Value,"ЧГ=") + ",";
И как надо написать правильнее?
sniknik (2008-11-06 11:22:00) [34]> Это тоже самое что и в делфи ADOConnection.CursorLocation = "ltReadOnly";
практически да, и дельфи это даже скомпилировать не даст.... насколько пинимаю.
Tepex (2008-11-06 11:20:00) [35][19] Ну убрал, толку не стало от этого вооще повисла обработка при первом запуске. Если я правильно понимаю то Соединение.CursorLocation = "ltReadOnly"; Это тоже самое что и в делфи ADOConnection.CursorLocation = "ltReadOnly"; Или может я ошибаюсь?
sniknik (2008-11-06 11:19:00) [36]кстати я бы и это посчитал бы глюком, правда это не всегда "смертельно", от объема зависит, но всегда тормозно
>СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").Value,"ЧГ=") + ",";
Tepex (2008-11-06 11:17:00) [37][18] Закрытие самой 1С помогает, но не всегда. Просто когда закрываешь обработку все переменные обнулются и становятся = неопределено, поэтому связь с ком объектом разрывается и он тоже убивается. в чем тогда может быть причина? ИМХО
sniknik (2008-11-06 11:16:00) [38]странно что и в первый раз то работает...
не знаю как 1С так вообще работает, и зависит ли описанное от этого, но вот тут ошибка
>Соединение.CursorLocation = "ltReadOnly";
(автору кода не составит груда заглянут в доку и исправить)
Sergey13 (2008-11-06 11:11:00) [39]> [17] Tepex © (06.11.08 10:58)
> закрываешь обработку(не саму 1С)
А если "саму 1С" закрыть/открыть, то все нормально? Значит что-то не до конца прибили, ИМХО.
Tepex (2008-11-06 10:58:00) [40]
> > [7] Tepex © (05.11.08 23:18)
> > но иногда после закрытия обработкии вновь ее открытия
> и
> > запуска зависает, и не работает не nowait, не timeout
> которые
> > установлены.
>
> Закрытие и открытие имеется в виду перезапуск приложения
> или отдельной формы приложения? Может чего не так инициализируется?
>
Просто открываешь в 1С обработку, закрываешь обработку(не саму 1С) и снова через файл->открыть, открываешь обработку и запускаешь ее после это 1С виснет.