|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#31  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#32  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 Код: Expr1002:=summa | 
| 
			 
			#33  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 В запросе добавь еще одну конструкцию: Код: SELECT T1.[pole1], T1.[pole2],Chr(count(1)+64), T1.[pole3] as [Первое слагаемое], T1.[pole4] as [Второе слагаемое], T1.[pole3]+T1.[pole4] AS summa, Chr(count(1)+64) || '=' || T1.[pole3]+T1.[pole4] as summa_str ... | 
| 
			 
			#34  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 Код: qry1.SQL.Add('SELECT T1.[поле1], T1.[поле2],Chr(count(1)+64), T1.[поле3] as [Первое слогаемое], T1.[поле4] as [Второе слогаемое], T1.[поле3]-T1.[поле4] AS summa, Chr(count(1)+64) +"="+ T1.[pole3]-T1.[pole4] as summa_str'); | 
| 
			 
			#35  
			
			
			
			
		 | |||
| 
 | |||
|   на вид все нормально, только там одинарная кавычка вокруг = должна быть (для ввода надо поставить в строке подряд 2 одинарные кавычки). Ну и конец запроса-то ты куда дел? Я ж не просто так многоточие поставил. Это значит, что все остальные строки запроса надо оставить как есть. | 
| 
			 
			#36  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 Код: Chr(count(1)+64) +'='+ T1.[pole3]-T1.[pole4] если писать так Код: Chr(count(1)+64) +''=''+ T1.[pole3]-T1.[pole4] Код: begin
 qry1.Close; 
 qry1.SQL.Clear;
 qry1.SQL.Add('SELECT T1.[поле1], T1.[поле2],Chr(count(1)+64), T1.[поле3] as [Первое слогаемое], T1.[поле4] as [Второе слогаемое], T1.[поле3]-T1.[поле4] AS summa, Chr(count(1)+64) +''=''+ T1.[pole3]-T1.[pole4] as summa_str');
 qry1.SQL.Add('FROM [таблица1] as T1 inner join [таблица1] as T2 on T1.[код]>T2.[код] group by T1.[поле1], T1.[поле2], T1.[поле3], T1.[поле4]');
 qry1.SQL.Add(' having T1.[поле1]=:p1 AND T1.[поле2]=:p2'); 
 qry1.Parameters.ParamByName('p1').Value := edt1.text;
 qry1.Parameters.ParamByName('p2').Value := edt2.text;
 qry1.Open;
end; | 
| 
			 
			#37  
			
			
			
			
		 | |||
| 
 | |||
|   Попробуй последнее выражение переписать вот так: Код: Chr(count(1)+64) +''=''+ Str(T1.[pole3]-T1.[pole4]) as summa_str | 
| 
			 
			#38  
			
			
			
			
		 | ||||
| 
 | ||||
|   Это же акцес, для него сцепление строк реализовано иначе: Код: select Т1.Поле1 as Дисциплина, Т1.Поле2 as Действие, Chr(Count(1)+64) & " = " & Т1.Поле3 & " + " & Т1.Поле4 as Формула, Т1.Поле3 as [Первое слагаемое], Т1.Поле4 as [Второе слагаемое], Т1.Поле3 + Т1.Поле4 as Результат from Таблица1 as Т1 inner join Таблица1 as Т2 on Т1.id >= Т2.id group by Т1.Поле1, Т1.Поле2,Т1.Поле3,Т1.Поле4 having Т1.Поле1 = 'Математика' and Т1.Поле2 = 'Сложение' | 
| 
			 
			#39  
			
			
			
			
		 | ||||
| 
 | ||||
|   Опаньки, а вот в Дельфи получаем небольшую проблемку. Выражение: Chr(Count(1)+64) & " = " & Т1.Поле3 & " + " & Т1.Поле4 as Формула автоматом получает тип TWideMemoField и как следствие в гриде не желает показывать содержимое. Если будете использовать грид, то на поле Формула надо повесить вот такое событие: Код: procedure TForm8.ADOQuery1ФормулаGetText(Sender: TField; var Text: string; DisplayText: Boolean); begin Text := TWideStringField(Sender).Value end; | 
| 
			 
			#40  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#41  
			
			
			
			
		 | ||||
| 
 | ||||
|   А что не так? Аргументы для функции задаются в полях 3 и 4. Из того что было сказано ранее я сделал такой вывод. Но вы можете переделать под себя как вам нужно, идею теперь вы поняли. | 
| 
			 
			#42  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 если я напишу Код: Label1.Caption:=А | 
| 
			 
			#43  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 Код: procedure TForm1.btn1Click(Sender: TObject);
var A: Integer;
begin
 qry1.Close; //
 qry1.SQL.Clear; // 
 qry1.SQL.Add('SELECT T1.[поле1], T1.[поле2],Chr(count(1)+64) &"="& T1.[поле3]&"-"&T1.[поле4] as [формула], T1.[поле3] as [первое слогаемое], T1.[поле4] as [второе слогаемое], T1.[поле3]-T1.[поле4] AS [результат]');
 qry1.SQL.Add('FROM [таблица1] as T1 inner join [таблица1] as T2 on T1.[код]>T2.[код] group by T1.[поле1], T1.[поле2], T1.[поле3], T1.[поле4]');
 qry1.SQL.Add(' having T1.[поле1]=:p1 AND T1.[поле2]=:p2');
 qry1.Parameters.ParamByName('p1').Value := edt1.text;
 qry1.Parameters.ParamByName('p2').Value := edt2.text;
 qry1.Open;
lbl1.Caption:=IntToStr(a);
end;а в столбце формула а=3-1 Последний раз редактировалось ЧайниКсНосикоМ, 21.12.2015 в 17:29. | 
| 
			 
			#44  
			
			
			
			
		 | ||||
| 
 | ||||
|   А как связаны левая переменная А с выполнением запроса? Вы ее создаете локально, ничем не инициализируете и какой мусор содержится в А - это знает только Билли.   Последний раз редактировалось Страдалецъ, 21.12.2015 в 22:45. | 
| 
			 
			#45  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 |