Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.02.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
Константин   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.004 c
1-32294
Dan32
2002-01-24 19:20
2002.02.11
ПОМОГИТЕ ! Запуск word, exel из дельфи с параметром


4-32378
ОГО
2001-12-11 17:44
2002.02.11
Как открывать дверцы CDROM если их два на компе ?


1-32230
kioto
2002-01-27 01:08
2002.02.11
Отображение содержимого ТОЛЬКО МОЕГО окна при перетаскивании


4-32370
AlexandrH_
2001-12-14 11:41
2002.02.11
Как можно считать текст из ячейки Grid_а чужого окна


14-32348
Kost
2001-12-20 15:28
2002.02.11
Может быть кто видел такую вещь:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский