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

Вниз

Ничего не понимаю!!!   Найти похожие ветки 

 
Константин   (2002-01-16 16:33) [0]

Ставлю на форму TQuery, линкую к BDE,
делаю АDD("Select * from Table"),
Вызываю ExecSQL 1000 раз,
на 254 исключение - слишком много открытых таблиц.
Что не так?


 
Nest ©   (2002-01-16 16:35) [1]

Код приведи - у меня подобная проблема была решил.


 
Praco ©   (2002-01-16 16:40) [2]

Не ExecSql, а Open и зачем столько раз?


 
Константин   (2002-01-16 16:40) [3]

Вот тестовый примерчик:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
query1.SQL.Add("SELECT * from trendDef");
for i := 1 to 1000 do
begin
query1.ExecSQL;
button1.Caption := inttostr(i);
end;

end;

Таблица в парадоксе, годится любая. Пробовал создавать Query динамически и тут же его удалять, не выходи. Все равно исключение!


 
Belov ©   (2002-01-16 16:42) [4]

Ну вообщето ExeсSQL используется только при DELETE, UPDATE
При SELECT используется только Query.Open


 
Константин   (2002-01-16 16:43) [5]

Надо столько раз, поскольку меняю параметры запроса, а это уже тестовый пример.


 
Nest ©   (2002-01-16 16:44) [6]

Согласен с Praco ©.
+Вообще не вижу смысла в таком куске!
Поясни зачем такое черезж...во?


 
Константин   (2002-01-16 16:44) [7]

Да, наверное в этом и проблема. Буду тестить.


 
Nest ©   (2002-01-16 16:53) [8]

Вообще твой "тест-код" заведомо нерабочий.
Вот такой код у меня работает без проблем:

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
query1.close;
query1.sql.text:="select * from log.dbf";
for i:=0 to 256 do
begin
query1.close;
query1.open;
application.processmessages;
end;
end;


 
Andrey007   (2002-01-16 16:54) [9]

Во-первых, Вам Константин, совершенно правильно сказали по поводу того, что для SELECT-запроса надо делать TQuery.Open, а не TQuery.ExecSQL.
Во-вторых, если вы меняете параметры запроса 1000 раз, то совершенно нерационально каждый раз менять текст запроса, поскольку в таком случае 1000 раз происходит проверка синтаксиса SQL-запроса. Поэтому гораздо лучше в таком случае использовать параметрический запрос. Параметр в нём задаётся так:
Select * From Table
Where Field1= :Parameter
Потом в Object Inspector"e для этого запроса настраиваете тип параметра через свойство TParams.
Затем в программе пишете, например
Query1.Close;
Query1.ParamByName("Parameter").AsFloat:=1;
Query1.Open;
В таком случае проверка синтаксиса происходит только один раз.



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
14-32337
vajo
2001-12-21 09:09
2002.02.11
Тестирование компьютера.


1-32270
Dmitriy_R
2002-01-28 14:11
2002.02.11
Очистка памяти от уже ненужного мусора


1-32238
VovanV
2002-01-27 17:51
2002.02.11
Ищу компонент типа TREE но, чтобы можно было свои иконки добавлять!


1-32201
Oleg Fomicheff
2002-01-18 13:44
2002.02.11
Помогите с алгоритмом


4-32364
Malkovich
2001-12-11 20:27
2002.02.11
Помогите мне, братья по делу !!!!!!