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

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

Не добавляется информация в БД [D7, 2000, XP]


Страницы:   1 2

СержК ©   (2010-06-08 09:09:00) 

Мастера подскажите.
Лет семь назад  была написана программа на D7 (БД - InterBase 5.6, дотуп к БД организован через BDE Administrator).
Это ПО (сама программа, сервер IB) были установлены на сервере (2 интеловских 2-х ядерных процессора) - все работало без проблемм много лет.
Но по причине поломки железяки пришлось все переустановить на другое железо (четырехядерный Xeon).

Стал замечать глюки. После запуска программы (она крутится постоянно на сервере там же где установлен IB) все работае отлично. Там организовано в цикле добавление информации в БД. Так вот - через какое-то время информация в БД перестает добавляться. После перезапуска программы все работает,а через какое-то время глюки опять повторяются.
Огромная просьба - подскажите в чем проблемма?


Anatoly Podgoretsky   (2010-06-08 14:23:00) [1]


> а что не так в [25] ?

Хотя бы отсутствие try except


СержК   (2010-06-08 14:21:00) [2]


> 12 ©   (08.06.10 14:09) [30]


Попробую. Будут результаты - отпишусь.
Спасибо.


12   (2010-06-08 14:09:00) [3]

как то так

try

> QueryCloseDefect.ParamByName('pDATE_REMONT').AsDateTime:
> =StrToDate(Str_Data_Remo  nt);
> QueryCloseDefect.ParamByName('pFIO_REMONT').AsBlob:=Str_FIO_remont;
>
> QueryCloseDefect.ParamByName('pTEXT_REMONT').AsBlob:=Str_TEXT_Remont;
>
> QueryCloseDefect.ParamByName('pNAME_TXT_FILE_DEFECT').AsString:
> =Trim(Str_Name_Cl  ose_File);
>
> Database1.StartTransaction;
> QueryCloseDefect.ExecSQL;
> if Database1.InTransaction then Database1.Commit;

except
 on E:Exception do
 begin
    E.Message := E.Message + #13#10 + ' Вот тута пошла фигня.. ';
    Raise;
 end;
end;

Компонент TApplicationEvents
procedure TfrmEditRequest.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
 InitLog(E,true);
end;

Procedure InitLog(E:Exception; Show:boolean = false);
Begin
 if frmLog = nil then frmLog := TfrmLog.Create(application);
 frmLog.memLog.Lines.Add('Произошла ошибка: ' + E.ClassName + '/' + E.Message);
 if Show then frmLog.Show;
End;


RWolf   (2010-06-08 13:18:00) [4]


> Anatoly Podgoretsky ©   (08.06.10 12:30) [27]

а что не так в [25] ?


СержК   (2010-06-08 12:33:00) [5]


> Anatoly Podgoretsky ©   (08.06.10 12:30) [27]
> > СержК  (08.06.2010 12:18:25)  [25]
>
> Твой код надо выбросить.


Согласен подскажите правильный код.


Anatoly Podgoretsky   (2010-06-08 12:30:00) [6]

> СержК  (08.06.2010 12:18:25)  [25]

Твой код надо выбросить.


Anatoly Podgoretsky   (2010-06-08 12:19:00) [7]

> СержК  (08.06.2010 11:46:21)  [21]

Конечно, всегда виновата система, а не программист.


СержК   (2010-06-08 12:18:00) [8]


> sniknik ©   (08.06.10 12:00) [24]
> > как мне получить эту информацию
> try except ... + возможно Win32Check


Буду очень признателен если подскажите как все это применить к данному коду:

QueryCloseDefect.ParamByName('pDATE_REMONT').AsDateTime:=StrToDate(Str_Data_Remo  nt);
QueryCloseDefect.ParamByName('pFIO_REMONT').AsBlob:=Str_FIO_remont;
QueryCloseDefect.ParamByName('pTEXT_REMONT').AsBlob:=Str_TEXT_Remont;
QueryCloseDefect.ParamByName('pNAME_TXT_FILE_DEFECT').AsString:=Trim(Str_Name_Cl  ose_File);

Database1.StartTransaction;
QueryCloseDefect.ExecSQL;
if Database1.InTransaction then Database1.Commit;


sniknik   (2010-06-08 12:00:00) [9]

> как мне получить эту информацию
try except ... + возможно Win32Check


sniknik   (2010-06-08 11:58:00) [10]

> Может переписать "серверную" програмку без использования BDE?
Anatoly Podgoretsky ©   (08.06.10 11:27) [17]
> Программу надо переписать.

зачем уточнения?
только переписать нужно грамотно, с BDE, без BDE это дело десятое.


СержК   (2010-06-08 11:56:00) [11]


> sniknik ©   (08.06.10 11:30) [18]
> настройки при поиске глюков вторичны, первичны сообщения
> от эксептов в момент между "все работает" и "все поломалось".
>

как мне получить эту информацию на примере вышеприведенного кода?


СержК   (2010-06-08 11:46:00) [12]

"Серверная" программа на клиентской машине работает нормально. На своей машине (в отладчике в том числе) все отлично.

Предполагаю что глючит BDE??? Кстати BDE критичен к железу?
Может переписать "серверную" програмку без использования BDE?


Anatoly Podgoretsky   (2010-06-08 11:38:00) [13]

> sniknik  (08.06.2010 11:30:18)  [18]

Это хорошие "все поломалось" исключения


12   (2010-06-08 11:31:00) [14]

логгируйте действия
после каждой команды серверу - в лог, время, что послано, что вернулось


sniknik   (2010-06-08 11:30:00) [15]

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


Anatoly Podgoretsky   (2010-06-08 11:27:00) [16]

> СержК  (08.06.2010 10:44:12)  [12]

Программу надо переписать.


Sergey13   (2010-06-08 11:26:00) [17]

> [15] СержК   (08.06.10 11:09)

Попробуй запустить "серверную" программу на клиентской машине.


СержК   (2010-06-08 11:09:00) [18]

Да нет этих отличий - уже сравнил.


Sergey13   (2010-06-08 11:00:00) [19]

> [13] СержК   (08.06.10 10:49)

Ну так сравни, найди отличия и почитай про эти отличия.


СержК   (2010-06-08 10:49:00) [20]

Может я чего-то не понимаю... Если проблемма в настройках BDE, то почему кокое-то время после запуска все работает отлично и только через несколько часов начинается...


Страницы:   1 2

Наверх

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