Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.14;
Скачать: CL | DM;

Вниз

Временные файлы при выполнении SQL запроса   Найти похожие ветки 

 
zerohold   (2008-05-13 21:23) [0]

Подскажите.
Использую стандартный компонент TQuery для выполнения SQL запроса, работаю с базой paradox.
Проблема в том, что после каждого выполнения запроса формируется временный файл и не удаляется. При накоплении 48 файлов (ограничение в настройках BDE Admin) появляется FatalError.
Увеличение количества файлов явно не правильное решение потому как запросов может быть больше.
значит чего делаю?
[code]
procedure ...
SQL=TQuery.Create(nil);

// сам запрос простой
SELECT t.ID, t.Name, t.Phones, t.Site, t.Email, t.Address, t.ModeWorks, t.IDSection, t.IDKind, t.IDCity, t.Priority, t.Rating FROM "company.db" t ORDER BY Priority DESC, Rating, Name
поля только char, integer и float
  SQLs.DatabaseName:=PathData;                                                  
  SQLs.SQL.Clear;
  SQLs.SQL.Add(SQL_text);                                                         try
     SQLs.ExecSQL;
  except
     on EDBEngineError do AddLogFile(NameErrorFile,"Error SQL. procedure SQL_Run; Text SQL: "+SQL_text);
  end;
  SQLs.Active:=True;                              
  SQLs.First;                                          

....
SQL.Free;

[/code]
я вот думаю может чего из-за сортировки такой сложной ?


 
Виталий Панасенко(дом)   (2008-05-13 22:15) [1]

а PrivateDir у Session не пробовал настроить ?


 
zerohold   (2008-05-13 22:22) [2]

Session вообще не использую.. я бы указал
убрал из запросов
ORDER BY
файлы временные перестали появляться и все заработало.
Как только добавляю ORDER by снова начинается глюки.


 
Loginov Dmitry ©   (2008-05-14 00:33) [3]

>     SQLs.ExecSQL;
>  except
>     on EDBEngineError do AddLogFile(NameErrorFile,"Error
> SQL. procedure SQL_Run; Text SQL: "+SQL_text);
>  end;
>  SQLs.Active:=True;  


Временные файлы появляются и не удаляются только при ошибках, и то далеко не всегда.
У тебя же здесь по истине пляски с бубном!

А вот это:

>  except
>     on EDBEngineError do AddLogFile(NameErrorFile,"Error
> SQL. procedure SQL_Run; Text SQL: "+SQL_text);
>  end;


диверсия. Лучше вообще без except..end. Как можно прятать оригинальное сообщение об ошибке?!


 
Виталий Панасенко(дом)   (2008-05-14 11:04) [4]


> zerohold   (13.05.08 22:22) [2]
>
> Session вообще не использую.. я бы указал

Враки... Эта переменная присутствует, даже если ты и не "кинул" компонент.. Точно так же, как и Application...Так и называется - Session..


 
MsGuns ©   (2008-05-14 12:16) [5]

>Виталий Панасенко(дом)   (14.05.08 11:04) [4]
>.. даже если ты и не "кинул" компонент..

Его и не нужно "кидать" без крайней необходимости


 
Виталий Панасенко(дом)   (2008-05-14 12:35) [6]


> MsGuns ©   (14.05.08 12:16) [5]

Не спорю.. С прошедшим...:-)


 
Виталий Панасенко(дом)   (2008-05-14 13:04) [7]

Удалено модератором


 
Amoeba ©   (2008-05-14 13:09) [8]


> // сам запрос простой
> SELECT t.ID, ...

>   SQLs.DatabaseName:=PathData;                          
>                        
>   SQLs.SQL.Clear;
>   SQLs.SQL.Add(SQL_text);                              
>                           try
>      SQLs.ExecSQL;


ExecSQL при запросе SELECT? Слов на такое нет, одни буквы.


 
zerohold   (2008-05-22 12:18) [9]


> Loginov Dmitry


> диверсия. Лучше вообще без except..end. Как можно прятать
> оригинальное сообщение об ошибке?!

Видимо вы мало работали с клиентами. Такого рода ошибки они явно не любят. Они вызывают катастрафическое "ААААаааа, все пропало" лучше прятать их, и потом смотреть в тихоря логи. Спокойней живется. Потому как все равно заставить клиента прочитать нормально код ошибки и его содержание это все равно что слона заставить говорить по тибетски.


> MsGuns ©  

Абсолютно в дырочку... Session кидается автоматом и кидать ее принудительно не обязательно. Поэтому никогда этого не делал.


> Amoeba

Каюсь, виновен. CopyPast проклятый, не увидел очевидной вещи :(( дааа, но такое в нашей программной практике не редкость, бывает + с - перепутаешь в сложной формуле и тогда долго  и очень долго ищешь что не так.

Тему можно закрыть
Исправил на SQLs.Open - все пошло и работает нормуль.
Спасибо всем


 
Loginov Dmitry ©   (2008-05-22 22:30) [10]


> Такого рода ошибки они явно не любят.


Больше они не любят, когда их дурят.


> Они вызывают катастрафическое "ААААаааа, все пропало" лучше
> прятать их, и потом смотреть в тихоря логи.


Бред. Полный. Лучше сообщить о них пользователю, чтобы пользователь дал знать о проблеме. Если он не будет о ней знать, то не сможет сообщить своевременно. А вот когда на пару-миллионный оборот пропадут данные, тогда будешь ему объяснять, что хотел "как лучше".


> Потому как все равно заставить клиента прочитать нормально
> код ошибки и его содержание это все равно что слона заставить
> говорить по тибетски.


Обязательно дублируй сообщение об ошибке в логах. Среднестатисчического оператора ты естественно не заставишь прочесть лог, приведенный на английском языке (скорее всего, и на русском языке оператор тоже прочесть не сможет, так как в 80% случаев он нажмет по привычке на <Enter> или <Escape>, никогда не читая, что ему напишешь, это не лечится).


> Видимо вы мало работали с клиентами.


Куда уж мне!


 
Loginov Dmitry ©   (2008-05-22 22:39) [11]

> Обязательно дублируй сообщение об ошибке в логах.


Даже если оператор неспособен сообщить администратору об ошибках программы (а это бывает очень часто, гдето в 80%), то потом начнут делать сверку, и обнаружат несхождения, с причинами которых помогут разобраться корректные логи. А то что ты предлагаешь:


>  except
>     on EDBEngineError do AddLogFile(NameErrorFile,"Error
> SQL. procedure SQL_Run; Text SQL: "+SQL_text);
>  end;


это диверсия, которая рано или поздно заявит о себе (лучше рано). Почему это диверсия, думаю, не стоит объяснять человеку, который много работал с клиентами.


 
Игорь Шевченко ©   (2008-05-22 23:05) [12]


> Видимо вы мало работали с клиентами. Такого рода ошибки
> они явно не любят. Они вызывают катастрафическое "ААААаааа,
>  все пропало" лучше прятать их, и потом смотреть в тихоря
> логи. Спокойней живется. Потому как все равно заставить
> клиента прочитать нормально код ошибки и его содержание
> это все равно что слона заставить говорить по тибетски.


Какие-то у тебя неправильные клиенты. Ты их меняй скорее, от них добра не будет



Страницы: 1 вся ветка

Текущий архив: 2008.12.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
2-1225529301
kate158
2008-11-01 11:48
2008.12.14
добавление в memo данных из БД


15-1223885552
Zlodey
2008-10-13 12:12
2008.12.14
Помогите с формулировкой


15-1223541443
oleg_p
2008-10-09 12:37
2008.12.14
Помогите. Может кто с таким сталкивался.


15-1223863730
Slider007
2008-10-13 06:08
2008.12.14
С днем рождения ! 13 октября 2008 понедельник


4-1202232215
Dmitry S
2008-02-05 20:23
2008.12.14
"Прибить" повторный запуск моей проги.