![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Кинул на форму 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  | 
| 
		 
			 
			#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  | 
| 
		 
			 
			#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  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Ну вот, совсем другое дело.... Почет и уважуха....  |