Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 21:44   #1
dll32
 
Регистрация: 06.03.2009
Сообщений: 7
По умолчанию Результат запроса sql в переменную

Здравствуйте,
Люди как можно поместить результат запроса SQL в переменную?
например:
Код:
begin
datamodule1.QProduct.Close;
datamodule1.QProduct.SQL.Clear;
datamodule1.QProduct.SQL.Add('SELECT SUM money FROM Product');
datamodule1.QProduct.Open;
end;
покажет в таблице сумму, но мне неадо эту сумму поместить прямо в переменную. скажем есть переменная m:integer, и туда и поместить результат запроса "SELECT SUM money FROM Product'"
Прошу помочь чайнику
dll32 вне форума Ответить с цитированием
Старый 25.05.2009, 22:47   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

еще ничего не успел сделать, а уже 3 ошибки в коде налабал

это
Код:
datamodule1.QProduct.SQL.Add('SELECT SUM money FROM Product');
заменяем на это
Код:
datamodule1.QProduct.SQL.Add('SELECT SUM(money) f1 FROM Product');
так объявляем сумму (это же деньги, а они обычно не целочисленные)
Код:
m: double;
//либо еще можно так m: currency;
так присваиваем переменной
Код:
m:=datamodule1.QProduct.FieldByName('f1').AsFloat;
//m:=datamodule1.QProduct.FieldByName('f1').AsCurrency;
soleil@mmc вне форума Ответить с цитированием
Старый 25.05.2009, 23:28   #3
dll32
 
Регистрация: 06.03.2009
Сообщений: 7
По умолчанию

spasibo ogromnoe, delo ne v tom tam money ili prosto kakoi nibud string prosto primer eto
spasibooooo
kak ia ponial f1 eto nesushestvuiushee pole? ono avtomaticheski sozdaetsa?
prostite chto latinskimi nabiraiu, na ruskom do utra nabiral bi
dll32 вне форума Ответить с цитированием
Старый 25.05.2009, 23:54   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

SQL запрос
SELECT SUM(money) f1 FROM Product
эквивалентен записи:
SELECT SUM(money) As f1 FROM Product

это означает, что первому полю (в данном случае - сумме) мы присваиваем (назначаем) имя f1
т.е. в результате запроса у нас в выборке будет одно поле и это поле будет с именем f1
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.05.2009, 00:12   #5
dll32
 
Регистрация: 06.03.2009
Сообщений: 7
Хорошо

Спасибо спасибоооооо огромноееее
вы мне очень помогли
dll32 вне форума Ответить с цитированием
Старый 26.05.2009, 14:05   #6
dll32
 
Регистрация: 06.03.2009
Сообщений: 7
По умолчанию

У меня еще один вопросик по Paradox
вот код:
Код:

datamodule1.TProduct.IndexName := 'pfood_n';
datamodule1.TProduct.Active:=true;
datamodule1.TProduct.SetKey;
datamodule1.TProduct.FieldByName('Pfood').AsString := EFood.text;
datamodule1.TProduct.GotoKey;

if EFood.Text=datamodule1.TProductPfood.AsString
   then
    begin
    datamodule1.TProduct.Edit;
    datamodule1.TProduct.FieldByName('Pgr').AsFloat := (datamodule1.TProduct.FieldByName('Pgr').AsFloat) + (strtofloat(egr.Text));
    datamodule1.TProduct.FieldByName('Pcnt').AsInteger := (datamodule1.TProduct.FieldByName('Pcnt').AsInteger)+(strtoint(ecnt.Text));
    datamodule1.TProduct.Post;
    end
    else
       begin
       datamodule1.TProduct.Insert;
       datamodule1.TProduct.FieldByName('PFood').AsString :=efood.Text;
       datamodule1.TProduct.FieldByName('Pgr').AsFloat :=strtofloat(egr.Text);
       datamodule1.TProduct.FieldByName('Pcnt').AsInteger :=strtoint(ecnt.Text);
       datamodule1.TProduct.Post;
       end;
Как вы видите я использую вторычный индекс для пойска. Если сушествует такая запись то редактируем данные, если нет то добавляем новую запись.
все прекрасно работает, но я боюсь будет ли она нормально работать и не зависать если база будет очень большой?
Влияют ли на пройзводительность вторычные индексы?
Спасибо заранее
dll32 вне форума Ответить с цитированием
Старый 26.05.2009, 14:09   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Влияют ли на пройзводительность вторычные индексы?
Вообще-то они ускорять должны работу...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2009, 14:22   #8
dll32
 
Регистрация: 06.03.2009
Сообщений: 7
По умолчанию

Значит мне не надо беспокоится?
dll32 вне форума Ответить с цитированием
Старый 26.05.2009, 14:36   #9
dll32
 
Регистрация: 06.03.2009
Сообщений: 7
По умолчанию

Опять проблемма
Код:
datamodule1.QProduct.SQL.Add('SELECT SUM(money) f1 FROM Product');
Выдает ошибку:
Invalid use of keyword.
Token Money).
Line Number:1.


дело в том что если делаю запрос:
Код:
datamodule1.QProduct.SQL.Add('SELECT SUM(cnt) f1 FROM Product');
то все работает.
Тип "cnt" - NUMBER, а тип "money" - $(Money)
Как я понял дело в типе, но как решть проблему?
dll32 вне форума Ответить с цитированием
Старый 26.05.2009, 15:02   #10
dll32
 
Регистрация: 06.03.2009
Сообщений: 7
По умолчанию

Решил все
Дело было в самом имени поля, изменил имя поля money на mny и все заработало
dll32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
результат запроса Ko$tello БД в Delphi 7 18.04.2012 12:13
Ошибка Sql запроса Yrok БД в Delphi 8 13.03.2009 09:08
Присвоить результат запроса переменной XATAB БД в Delphi 3 25.02.2009 21:20
SQLite3. Не могу вывести результат запроса. Clever Общие вопросы C/C++ 2 25.02.2009 09:55