Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 23:22   #1
J.Bond
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 45
По умолчанию Дело идет туго


доброго времени суток дорогие форумчани и форумчанки!
Можете подсказать почему вот этот фрагмент кода работает очень медленно, то есть в делфи он еще работает а от самая программа у винде 7 зависает, что можно сделать с этим чтоб заработало?


Код:
procedure TForm4.N24Click(Sender: TObject);
begin
        F_QSpisY_2.IBQuery1.Close;
        F_QSpisY_2.IBQuery1.Open;
        F_QSpisY_2.QuickRep1.Preview;

end;



procedure TForm4.xls1Click(Sender: TObject);
 var
   str      : string[50];
   C_Name_  : string[15];
   Surname  : string[15];
   LastName : string[15];
   year     : string[4];
   k,i,id   : integer;
begin

if opendialog1.Execute then
begin
 str1:=opendialog1.FileName;
 F_Dialog_XLS_kn.ShowModal;

Panel1.Visible:=true;
ProgressBar1.Visible:=true;
label1.Visible:=true;

ProgressBar1.Position:=0;

 FetchData;

 with DataSource6.DataSet do
begin
IBQuery13.Open;
IBQuery13.Last;
id:=IBQuery13.FieldByname('C_Kod').AsInteger;
First;

while(not EOF) do
 begin




     str:=Fields[2].AsString;

     k:=0;  C_Name_:=''; LastName:=''; Surname:='';

     for i:=1 to length(str) do
      begin
       If str[i]=' ' then
          k:=k+1
         else
          if k=0 then
            Surname:=surname+str[i]
          else if k=1 then
            C_Name_:=C_Name_+str[i]
          else
            LastName:=LastName+str[i];
      end;

      str:= Fields[4].AsString;
      year:='';
     if str='' then year:='0'
     else
         begin
            year:=year+str[7];
            year:=year+str[8];
            year:=year+str[9];
            year:=year+str[10];
         end;



     IBQuery15.Close;
     IBQuery15.ParamByName('NAME1').AsString:=C_Name_;
     IBQuery15.ParamByName('SURNAME1').AsString:=Surname;
     IBQuery15.ParamByName('LASTNAME1').AsString:=LastName;
     IBQuery15.ParamByName('YEAR1').AsString:=year;

     IBQuery15.Open;




    If (IBQuery15.Eof) then
     begin
     id:=id+1;
     IBQuery13.Open;
     IBQuery13.Insert;
     IBQuery13.FieldByname('C_SURNAME').AsString:=Surname;
     IBQuery13.FieldByname('C_FIRSTNAME').AsString:=C_Name_;
     IBQuery13.FieldByname('C_LASTNAME').AsString:=LastName;
     IBQuery13.FieldByname('C_YEARMADE').AsInteger:= StrToInt(year);

    IBUpdateSQL6.SetParams(UKInsert);
    IBUpdateSQL6.ExecSQL(UKInsert);

    IBQuery14.Open;
    IBQuery14.Insert;

    IBQuery14.FieldByname('C_Kod').AsInteger:=id;
    IBQuery14.FieldByname('S_PROF').AsString:=Fields[5].AsString;
    IBQuery14.FieldByname('S_PLACEWORK').AsString:=Fields[9].AsString;
    IBQuery14.FieldByname('S_DATAPROH').AsString:=Fields[7].AsString;

    IBUpdateSQL7.SetParams(UKInsert);
    IBUpdateSQL7.ExecSQL(UKInsert);

    F_Pad.IBTransaction1.Commit;

    end;

    Next;
    ProgressBar1.Position:=ProgressBar1.Position+1;
end;
end;
ProgressBar1.Position:=ProgressBar1.Max;

Panel1.Visible:=false;
ProgressBar1.Visible:=false;
label1.Visible:=false;
end;
end;

Последний раз редактировалось J.Bond; 29.04.2011 в 23:25.
J.Bond вне форума
Старый 30.04.2011, 12:08   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
...очень медленно, то есть в делфи он еще работает а от самая программа у винде 7 зависает

А почему бы не работать так, если в цикле отрабатывает несколько запросов на чтение и запись? Вопрос не по существу - вы при таком стиле оформления кода сами хоть понимаете впоследствие, что там напрограммировано?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбой идет VIKA1829 Помощь студентам 7 13.03.2011 23:31
Графика - идет снег Caterina2211 Паскаль, Turbo Pascal, PascalABC.NET 1 07.01.2011 13:28
функция на си..идет зачет( lyon93 Помощь студентам 2 25.12.2010 15:00
Идет наболр в модераторы aleksus430 Общие вопросы Delphi 0 27.07.2009 19:43
Не идет Fifa99 на Core2DUE Умелец Свободное общение 0 28.09.2008 09:54