Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.056 c
9-1103729660
-=SS=-
2004-12-22 18:34
2005.03.20
GlScene Тень


1-1109874561
GEN++
2005-03-03 21:29
2005.03.20
Возможно ли реализовать "самописец"


6-1105614715
MInd_f
2005-01-13 14:11
2005.03.20
Как юзать IdPOP3 через проксю?


1-1109928277
Сергей_Удал
2005-03-04 12:24
2005.03.20
Помогите с программой 2


14-1109348648
Frozzen
2005-02-25 19:24
2005.03.20
VBA макрос для word





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский