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

Вниз

Как работать с SQL не "визуально" ?   Найти похожие ветки 

 
DelphiN! ©   (2005-02-19 08:21) [0]

Вот буквально сегодня начал работать с SQL запросами (c Interbase).
 Работаю через idQuery.

Меня озодачил следующий вопрос :

Допустим есть DBGrid, в котором пользователь работает с определенной таблицой.
 Также есть процедура, которая по таймеру проверяет какие-то данные в таблице, и ей для этого необходимо сделать выборку(получить какие-то данные, которые необходимо проверить), так вот если она ее сделает, то изменяться данные и в DBGrid(которые сейчас смотрит пользователель). Как этого избежеть, тоесть сделать чтобы эта невизуальная процедура по таймеру пулачала нужные ей данные, при этом не трогая данные в DBGRid-е ? Неужели без еще одного TIDQuery не обойтись ?


 
DelphiN! ©   (2005-02-19 08:23) [1]

Может сделать 2 IdQuery, 1-й для визуальных пользовательских запросов, а второй для невизуальных(внутренних) ?


 
YurikGL ©   (2005-02-19 09:29) [2]


> DelphiN! ©   (19.02.05 08:21)  

Наборов данных нужно создавать столько, сколько их требуется. Если надо два - делай два.


 
Anatoly Podgoretsky ©   (2005-02-19 09:44) [3]

В DBGRid нет данныъ!


 
DelphiN! ©   (2005-02-19 11:03) [4]

А как вы думаете, лучше сделать под каждую таблицу свой набор или скажем один набор под несколько таблиц ? Тоесть при одном наборе процедуры будут выглядеть примерно так:

procedure proc1;
var
sql: String;
begin
sql := query.sql.text; //Сохранение

qury.sql.text := "select Field from Table1 ...";
query.execsql;
...
работа с набором
...
query.sql.text := SQL;
query.execsql; //Востановление
end;

procedure proc2;
var
sql: String;
begin
sql := query.sql.text; //Сохранение

qury.sql.text := "select Field from Table2 ...";
query.execsql;
proc1;
...
работа с набором
...
query.sql.text := SQL;
query.execsql; //Востановление
end;

Приемлема ли эта схема ?

Просто я раньше не работал с SQL ...
 Заранее благодарен за совет


 
DelphiN! ©   (2005-02-19 12:43) [5]

Народ, ну посоветуйте


 
Anatoly Podgoretsky ©   (2005-02-19 13:16) [6]

или скажем один набор под несколько таблиц ? А это как, по русски можешь сказать?


 
DelphiN! ©   (2005-02-19 13:21) [7]

Ну когда 1-н IbQuery использую сраку скажем для 5-ти таблиц.
Получается нужно в каждой ф-ии сохранять текущее состояние таблицы, а при выходя востанавливать его, для другой ф-ии... Вобщем получается что-то типо [4] Сначало вызывается proc2, которая вызывает proc1. А proc1 сохраняет вначале состояние набора, а перед выходом востанавливает его для для proc2. Нормально ли это или лучше подругому ?


 
DelphiN! ©   (2005-02-19 13:26) [8]

Как это отразиться на производительности ? Может лучше использовать по 1-у idQuery на каждую таблицу ?


 
Polevi ©   (2005-02-19 13:33) [9]

за таймер руки отрывать


 
DelphiN! ©   (2005-02-19 13:40) [10]


>  [9] Polevi ©   (19.02.05 13:33)


:)))

Таймера нет, я просто пример привел

Там сетевые сообщения в программу приходят, и в это время исполняються различные процедуры по работе с таблицами


 
Anatoly Podgoretsky ©   (2005-02-19 13:42) [11]

IbQuery это не 5 наборов данных, а всего один компонент.
А судя по этому query.execsql у тебя вообще нет наборов данных.
И восстанавливать нечего, выполнилось и пропало.


 
DelphiN! ©   (2005-02-19 13:51) [12]


> [11] Anatoly Podgoretsky ©   (19.02.05 13:42)


Сорри, не Query.ExecSQL а Query.Open  
  Описался ...


 
DelphiN! ©   (2005-02-19 13:53) [13]

Эти Query у меня кстати не связаны с Grid-ами (они не визуальные для потдержки старых (не SQL-эх) процедур программы


 
Anatoly Podgoretsky ©   (2005-02-19 13:56) [14]

DelphiN! ©   (19.02.05 13:51) [12]
А это меняет дело, так что отвечать будут только на заданые вопросы и никто их за тебя задавать не будет. Все в твоих руках.


 
Anatoly Podgoretsky ©   (2005-02-19 13:58) [15]

По поводу этого "Эти Query у меня кстати не связаны с Grid" и "изменяться данные и в DBGrid" гдето ты врешь. Поэтому опять отвечать невозможно.

Может не стоит торопиться писать сюда сразу как зечешалось, а сесть снача и обдумать вопрос. Отдача буде больше.


 
Desdechado ©   (2005-02-19 20:31) [16]

можно переключать datasource (передающий данные в грид) между разными наборами данных


 
atruhin ©   (2005-02-20 14:01) [17]

Нет ничего страшного если ты разместишь на форме хоть 10 Query, как тебе удобнее, только учти, что IBQuery работает в контексте одной транзакции (т.е. после модификации данных нужно Commit для транзакции), pFIBQuery может работать в двух, что гораздо удобнее. Часто делается один Query для модифицирующих запросов и нужное кол-во для отображения данных.



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

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

Наверх




Память: 0.51 MB
Время: 0.031 c
14-1109169966
IronHawk
2005-02-23 17:46
2005.03.20
Паучек!


4-1107541104
serko
2005-02-04 21:18
2005.03.20
Имя компа


14-1109672476
boriskb
2005-03-01 13:21
2005.03.20
Да уж...


14-1109790550
Jetus
2005-03-02 22:09
2005.03.20
Как работает Morphine?


14-1109161737
Sleepwalker
2005-02-23 15:28
2005.03.20
Загрузка WinXP