Сумма столбца DBGrid

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
Plato
новенький
Сообщения: 13
Зарегистрирован: 25.10.2014 21:09:03

Сумма столбца DBGrid

Сообщение Plato »

Пытаюсь вывести сумму столбца в label7.
БД SQLite

Код: Выделить всё

procedure TForm1.Button4Click(Sender: TObject);
begin
SQLQuery3.Close;
SQLQuery3.SQL.Clear;
SQLQuery3.SQL.Add('SELECT SUM(Unit_price) FROM ORDERS;');
SQLQuery3.Open;
Label7.Caption:=SQLQuery3.Fields[0].AsString;
end;

Выдаёт ошибку : Missing (compatible) underlying dataset, cannot open.

Добавлено спустя 4 минуты 14 секунд:
Так тоже не работает :

Код: Выделить всё

procedure TForm1.Button4Click(Sender: TObject);
begin
SQLQuery3.Close;
SQLQuery3.SQL.Clear;
SQLQuery3.SQL.Add('SELECT SUM(Unit_price) AS KOL FROM ORDERS ;');
SQLQuery3.Open;
Label7.Caption:=SQLQuer3.FieldByName('KOL').AsString;
end;   
Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

Точка с запятой в запросе разве не лишняя?
Аватара пользователя
Plato
новенький
Сообщения: 13
Зарегистрирован: 25.10.2014 21:09:03

Сообщение Plato »

Vapaamies писал(а):Точка с запятой в запросе разве не лишняя?

Удаление ";" никак не повлияло.
Да и в других запросах(удаление и добавление) они есть и всё работает.
Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

А лишних FieldDef-ов в свойствах запроса не затесалось? Или TField-ов?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

В моем проекте подобный запрос работает прекрасно. А ошибка намекает, что не установлено или потеряно соединение с БД.
Аватара пользователя
Plato
новенький
Сообщения: 13
Зарегистрирован: 25.10.2014 21:09:03

Сообщение Plato »

Так работает:

Код: Выделить всё

procedure TForm1.DataSource3DataChange(Sender: TObject; Field: TField);
begin
  with TSQLQuery.Create(nil) do
  try
    DataBase := SQLite3connection1;
    Close;
    SQL.Text :=('SELECT SUM(Quantity) AS KOLVO FROM ORDERS;');
    Open;
    Label7.Caption :='Всего: '+FieldByName('KOLVO').AsString;
  finally
    Free;
  end;
end;


Добавлено спустя 15 минут 6 секунд:
Как посчитать сумму вычисляемого столбца?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Plato, вам же компилятор написал, что отсутствует Dataset. Проверьте правильность настроек компонента SQLQuery3.

P.S. В запросах ошибок нет.
Ответить