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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2012, 20:19   #1
nastena_r_v
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 30
Стрелка

Всем здравствуйте. Имеется БД, данные в которую выводятся через дбгрид, компоненты АДО. Название которой берется из эдита. Вопрос такой, как сделать вычисление среднего значения по двум последним столбцам из таблицы?



Если кто хочет помочь разобраться, на 3 форме, есть кнопка "среднее значение", в ней обработчик, но он выводит ошибку, почему на пойму.

в обработчике написала:
Код:
DataModule2.AdoQuery1.SQL.Text :=('SELECT AVG(idY) AS SredZnach1 FROM'+ Form1.ComboBox1.Text);
ошибка, или так:

Код:
 DataModule2.ADOQuery1.SQL.Add('select avg(idy) from' + Form1.ComboBox1.Items.Strings[Form1.ComboBox1.ItemIndex]) ;
тоже ничего не вычисляет, помогите разобраться в чем причина
Вложения
Тип файла: rar курсач2.0.rar (2.71 Мб, 8 просмотров)

Последний раз редактировалось artemavd; 15.11.2012 в 17:41.
nastena_r_v вне форума Ответить с цитированием
Старый 15.11.2012, 17:44   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Видимо текст ошибки мы должны сами придумать, да? Ошибка (не знаю какая, а гадать не собираюсь) может возникать хотя бы, например, даже из-за того, что нет пробела между словом From и именем таблицы, которое подставляется в запрос из ComboBox1.
Далее. Самое простое это использовать компоненты Ehlib. Там все это можно сделать в итоговой строке, установив всего лишь одно свойство.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.11.2012, 18:18   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

в первую очередь нужно "угадать" имена 2х последних столбцов в таблице
напр так:
Код:
var
  f1, f2 : string;
begin
  f1:=ADOTable.Fields[ADOTable.FieldsCount-1].FieldName;
  f2:=ADOTable.Fields[ADOTable.FieldsCount-2].FieldName;
...
  DataModule2.AdoQuery1.SQL.Text :='SELECT '+f1+', '+f2+', AVG('+f1+'), AVG('+f2+') FROM '+Edit1.Text;
end;
(мож чуток с запросом переборщил, но принцып такой)
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 15.11.2012 в 18:30.
Yurk@ вне форума Ответить с цитированием
Старый 16.11.2012, 10:52   #4
nastena_r_v
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 30
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Видимо текст ошибки мы должны сами придумать, да? Ошибка (не знаю какая, а гадать не собираюсь) может возникать хотя бы, например, даже из-за того, что нет пробела между словом From и именем таблицы, которое подставляется в запрос из ComboBox1.
Далее. Самое простое это использовать компоненты Ehlib. Там все это можно сделать в итоговой строке, установив всего лишь одно свойство.
Ошибки при компиляции никакой нет, и угадывать я не прошу. На счет пробела, то он там есть. Спасибо, что откликнулся, хоть и с недовольством.

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
в первую очередь нужно "угадать" имена 2х последних столбцов в таблице
напр так:
Код:
var
  f1, f2 : string;
begin
  f1:=ADOTable.Fields[ADOTable.FieldsCount-1].FieldName;
  f2:=ADOTable.Fields[ADOTable.FieldsCount-2].FieldName;
...
  DataModule2.AdoQuery1.SQL.Text :='SELECT '+f1+', '+f2+', AVG('+f1+'), AVG('+f2+') FROM '+Edit1.Text;
end;
(мож чуток с запросом переборщил, но принцып такой)
В запросе столбец, который мне нужен, я указала. =) Но спасибо, проверю

Последний раз редактировалось artemavd; 16.11.2012 в 15:44.
nastena_r_v вне форума Ответить с цитированием
Старый 16.11.2012, 15:45   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Спасибо, что откликнулся, хоть и с недовольством
Да почему с недовольством? Я нормально отреагировал
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
среднее значение KaZaaM SQL, базы данных 2 01.06.2012 16:18
Среднее значение Dima-War Общие вопросы C/C++ 7 23.03.2012 10:37
Среднее значение SB86 Microsoft Office Excel 3 08.06.2010 07:24
Среднее значение acidcool SQL, базы данных 11 16.08.2009 16:34