Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как получать данные из БД


Автор: Smog 6.2.2007, 22:39
Я не понимаю, если мне нужно взять из базы данные, то как это лучше делать? 
Ну то есть есть таблица, которая хранит сообщения и запросом на выдачу сообщений темы такой-то будет  

Код



SELECT 
 MESS_ID, 
 AUTOR, 
 MES, 
 DATE, 
 IS_SIGN, 
 IS_SMILES 
FROM 
 TOPICS  
where TREAD_ID=1 and FORUM_ID=2 
 

 


И что я никуда, кроме DBGrid не помещу эти данные? А что потом из него их вытаскивать ручками? 
Мне же надо в переменные их запихать, а не в таблицу 
 

ps firebird 1.5 (embedded) + FIBplus + Delphi 7

Или для этого надо юзать Query? и чтобы получить значения каждой переменной, делать запрос на каждую?

Автор: LSD 6.2.2007, 23:12
DBGrid позволяет перемещаться по данным (next/previous). Перешел на нужную строку, считал данные из колонок, записал их в переменные и переходишь к следующей строке.

Модератор: перемещено из Общие вопросы по базам данных

Автор: Smog 7.2.2007, 06:03
LSD, Это все так делают? это рационально? smile

Автор: ТоляМБА 7.2.2007, 07:49
Код

Query1.Close;
Query1.SQL.Text:='Select Field1 from table1';
Query1.Open;
Query1.First;
while not Query1.eof do begin
 v:=Query1.FieldValues['Field1'];
...
Query1.Next;
end;
Query1.Close;
 Можеш в цикле заполнять динамический массив и потом его в другом цикле обрабатывать - зависит от задачи.

Автор: Smog 7.2.2007, 09:51
Задача в следующем: вытащить из базы несколько значений и вставить их в html шаблон...

Автор: ТоляМБА 7.2.2007, 11:15
Цитата(Smog @  7.2.2007,  09:51 Найти цитируемый пост)
вытащить из базы несколько значений 
 Вот по этой части тебе дали два варианта решения. Ты хоть один пробовал? Если нет - извини...

Автор: Данкинг 7.2.2007, 12:01
Цитата(Smog @ 7.2.2007,  06:03)
LSD, Это все так делают? это рационально? smile

А что нерационального-то? Вытаскиваешь в запрос нужные тебе строки и с ними уже работаешь с помощью .locate, .first, .next, .fieldvalues и т.п.

Автор: ТоляМБА 7.2.2007, 14:13
Цитата(Данкинг @  7.2.2007,  12:01 Найти цитируемый пост)
А что нерационального-то?
 Давайте не будем вводить путаницу: LCD отвечал ПРИМЕНИТЕЛЬНО к DBGridу так как Smog  спрашивал про DBGrid, но если на форме НЕ НУЖЕН DBGrid, то зачем делать на форме визуальный компанент и всобачивать ему Visible:=False ??? Рациональнее будет сделать через Query и цикл.

Автор: Smog 7.2.2007, 15:07
Спасибо, вот таким образом получилось:
Код


var
v:variant;
begin
pFIBDatabase1.Connected :=true;
pFIBTransaction1.Active:=true;
pFIBQuery1.Close ;
pFIBQuery1.SQL.Clear;
pFIBQuery1.SQL.Add('SELECT MESS_ID,  AUTOR,  MES, IS_SIGN, IS_SMILES  FROM   TOPICS ');
pFIBQuery1.SQL.Add('where TREAD_ID=1 and FORUM_ID=2');
pFIBQuery1.ExecQuery;
while not pFIBQuery1.eof do begin
v:=pFIBQuery1.FieldValue('AUTOR',false);
showmessage(v);
v:=pFIBQuery1.FieldValue('MES',false);
showmessage(v);
pFIBQuery1.Next ;
end;
pFIBQuery1.Close;

DBGrid решил не использовать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)