|
#1
|
|||
|
|||
ADOQuery.SQL.Text
Кинул на форму ADOQuery, в String list editor написал
SELECT SUM(AAA) FROM BBB WHERE [CCC]=100 Подключчил - работает. Пытаюсь добавить туда же еще две аналогичные строчки: SELECT SUM(AAA) FROM BBB WHERE [CCC]=200 SELECT SUM(AAA) FROM BBB WHERE [CCC]=300 Вопрос: как разделить (чем) разделить эти три строки, чтобы запрос работал. Ставил в конце строк '+', ';' , еще чета пытался ставить - не работает. Идея взята у "POLI-SMEN" в теме http://www.delphisources.ru/forum/sh...ad.php?t=25317 Или в String list editor так делать нельзя? |
#2
|
||||
|
||||
Код:
select ... union all select ... По идее правильно было бы так: Код:
SELECT SUM(AAA) FROM BBB WHERE [CCC]=100 or [CCC]=200 or [CCC]=300 — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Цитата:
Должны вычисляться 3 разных значения, которые потом размещу в 3 разных Editа. Информация будет отображаться на форме как статистика. |
#4
|
||||
|
||||
Вроде бы так можно.
Код:
select (SELECT SUM(AAA) FROM BBB WHERE [CCC]=100) as FOO, (SELECT SUM(AAA) FROM BBB WHERE [CCC]=200) as BAR, (SELECT SUM(AAA) FROM BBB WHERE [CCC]=300) as BAZ from faketable — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
Помучался и сделел отдельные ADOQuery.
Возникла другая беда. Результат запроса вывожу в Edit Edit1.Text := FloatToStr(ADOQuery1.Fields[0].AsFloat); Если вычисленное значение 15,54 то в Editе показывает 15,54 Если вычисленное число 15,00 то в Editе показывает 15 без нолей. Как исправить, чтоб целое число показывалось с двумя нолями. В базе (Access) свойство поля - с плавающей точкой DispleyFormat и Editformat везде стоят ,0.00 |
#6
|
||||
|
||||
Цитата:
Цитата:
Цитата:
|
#7
|
|||
|
|||
Цитата:
Писал выше - не смог разделить строки. Пробую с TMaskEdit, тоже пока не получается маску установить |
#8
|
||||
|
||||
Цитата:
PHP код:
Цитата:
|
#9
|
|||
|
|||
Уже понял, пытаюсь разобраться с FloatToStrF
Написал вот так Edit3.Text := FloatToStrf(ADOQuery3.Fields[0].AsFloat,ffNumber,12,2); Вроде работает Цитата:
Я писал в ADOQuery в String list editor вот это: SELECT (SELECT SUM(Поле2) FROM Таблица WHERE Поле1 = 100), (SELECT SUM(Поле2) FROM Таблица WHERE Поле1 = 200), (SELECT SUM(Поле2) FROM Таблица WHERE Поле1 = 300) и получал ошибку вроде "нет входной таблицы" или синтаксис или еще чего... Идея мне очень понравилась, но реализовать ее цивилизованным способом я не смог. (ТЕМА ДЛЯ НАЧИНАЮЩИХ). Как говорится если не можеш перелезть через забор попробуй его обойди или сделай подкоп Может я не то и не туда писал? Последний раз редактировалось M.A.D.M.A.N., 16.11.2013 в 18:32. |
#10
|
||||
|
||||
Цитата:
M.A.D.M.A.N. оказался прав - Access зачем-то требует явного указания какой-либо "левой" таблицы для этого запроса, да ещё и выводит одинаковых записей в количестве равном как у этой "левой" таблицы. Вобщем вот так должно работать (для непустой таблицы): PHP код:
|
#11
|
|||
|
|||
Цитата:
А это останется в силе? Edit3.Text := FloatToStrf(ADOQuery3.Fields[0].AsFloat,ffNumber,12,2); Edit3.Text := FloatToStrf(ADOQuery3.Fields[1].AsFloat,ffNumber,12,2); Edit3.Text := FloatToStrf(ADOQuery3.Fields[2].AsFloat,ffNumber,12,2); я имею ввиду 0, 1, 2 (это номера строк ?) |
#12
|
||||
|
||||
Цитата:
Вообще не все провайдеры гарантируют, что в результате вернутся поля в том порядке в котором были перечислены в запросе, поэтому для надёжности лучше их именовать прямо в запросе и потом обращаться к ним по именам. Пример запроса: PHP код:
Код:
Edit1.Text := FloatToStrF(ADOQuery3.FieldByName('Sum100').AsFloat, ffNumber, 12, 2); Edit2.Text := FloatToStrF(ADOQuery3.FieldByName('Sum200').AsFloat, ffNumber, 12, 2); Edit3.Text := FloatToStrF(ADOQuery3.FieldByName('Sum300').AsFloat, ffNumber, 12, 2); |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
govorun (16.11.2013)
|
#13
|
|||
|
|||
Цитата:
Попробовал, компилируется. Но при попытке программы обратиться к форме, на которой это дело размещено, пишет, что поле 'SUM100' не найдено. И я почему-то согласен с программой. Возможно этот способ хорош когда расчетные данные заносятся в какую-то таблицу с полями типа 'SUM100'. У меня данные просто расчитываются и показываются при обращении к форме. Идея хорошая. Но, пока строю забор из ADOQuery. |
#14
|
||||
|
||||
Цитата:
Вот правильный запрос: PHP код:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
govorun (16.11.2013)
|
#15
|
|||
|
|||
Цитата:
Ну вот, совсем другое дело.... Почет и уважуха.... |