Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Вниз
Как работать с 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c