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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 14:11   #1
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию DBGrid HELP

Здравствуйте! такая проблема с DBGrid.. есть цифры в ячейках,нужно их сложить и разделить на кол-во и получить в другой ячейке общий результат.. но не знаю как это сделать,ведь по смене в комбобокс фамилии меняются цифры(оценки) и кол-во соответственно ячеек.
таблица в оракле есть.
выглядеть DBGrid должен так:
fio rez obshii rez
Иванов 5
Иванов 5 3
Иванов 3
Помогите пожалуйста с кодом..
crit вне форума Ответить с цитированием
Старый 17.05.2009, 16:00   #2
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Если у Вас в одной записи цифры то можно через вычисляемые поля или через запрос сделать поле в котором будет данное вычисление.
Если У Вас в разных записях цифры находятся то можно также через вычисляемое поле, только на момент вычислений там по циклу или что то другое делать
Adotable1.EnableControls;
AdoTable1.DisableControls

В целом не очень понятна структура таблицы, Иванов - это каждый раз новая фамилия или разные? Как примерно вычисления производятся?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 17.05.2009, 16:18   #3
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

Иванов одна фамилия.. выбирается в комбобокве и в таблице показывает его рез-ты,к примеру..я не через адо а чрез OraQuery
crit вне форума Ответить с цитированием
Старый 17.05.2009, 16:19   #4
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

и тут же вопрос почему не удаляет из таблицы??
OraQuery1.SQL.Text := 'delete from KURS_KADR2 where FIO=' + QuotedStr(CRDBGrid1.SelectedField.A sString);
OraQuery1.Params.ParamByName('FIO') .AsString :=CRDBGrid1.SelectedField.AsString;
OraQuery1.ExecSQL;
crit вне форума Ответить с цитированием
Старый 17.05.2009, 20:51   #5
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

НУ ЧТО КТО ПОМОЖЕТ?? в таблице поля ФИО РЕЗУЛЬТАТ СРЕДНИЙ РЕЗ-Т

Человек проходит тест,в тесте несколько разделов.. фио и рез-т идет в оракл в таблицу..вот терь надо отобразить в DBGride.. результаты за тесты в таблице надо сложить и разделить на кол-во.
crit вне форума Ответить с цитированием
Старый 17.05.2009, 21:15   #6
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

можно конечно так
Query1.SQL.Text:='select sum(rez) from kurs';
Query1.Open;
только вот мы сложили значения ячеек ,а как терь разделить на их количество чтобы у знать средний результат и вывести в другой в следующей колонке....
crit вне форума Ответить с цитированием
Старый 17.05.2009, 21:47   #7
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Цитата:
Сообщение от crit Посмотреть сообщение
можно конечно так
Query1.SQL.Text:='select sum(rez) from kurs';
Query1.Open;
только вот мы сложили значения ячеек ,а как терь разделить на их количество чтобы у знать средний результат и вывести в другой в следующей колонке....
В целом вариантов куча, например, можно так, не самый оптимальный вариант, но зато рабочий. Писал для AdoQuery, но думаю что в Oracle по логике также.
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  I: Integer;
 Rec: integer;
 summa: integer;
begin

 REc:=AdoQuery1.RecordCount;
  AdoQuery1.DisableControls;
 for I := 0 to AdoQuery1.RecordCount- 1 do    // Iterate
 begin
  summa:=summa+AdoQuery1.fieldbyname('kod').AsInteger;
 end;    // for
 AdoQuery1.EnableControls;

    adoQuery1.Close;
    AdoQuery1.SQL.Clear;

    AdoQuery1.SQL.Add('select kod, caption, ('+inttostr(summa)+'/'+inttostr(REc)+') as Summa ');
    AdoQuery1.SQL.Add('from InfoFile');
    adoQuery1.Open;

end;
Но это на крайний случай можно и полностью на SQL переписать.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 17.05.2009, 22:27   #8
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

procedure TForm12.Button1Click(Sender: TObject);
var
I: Integer;
Rec: integer;
summa: integer;
begin

REc:=OraQuery1.RecordCount;
OraQuery1.DisableControls;
for I := 0 to OraQuery1.RecordCount- 1 do // Iterate
begin
summa:=summa+OraQuery1.fieldbyname( 'REZ').AsInteger;
end; // for
OraQuery1.EnableControls;

OraQuery1.Close;
OraQuery1.SQL.Clear;

OraQuery1.SQL.Add('select REZ, ('+inttostr(summa)+'/'+inttostr(REc)+') as Summa ');
OraQuery1.SQL.Add('from AAAA');
OraQuery1.Open;

фигня какая то получилась)))
напротив каждой ячейки цифры - 414357..откуда они взялись??

Последний раз редактировалось crit; 17.05.2009 в 22:31.
crit вне форума Ответить с цитированием
Старый 17.05.2009, 22:29   #9
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Поля в сетке расширить надо, там дробная часть отобразилась.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 17.05.2009, 22:31   #10
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

да нет)) расширено и так все)) там 2 столбца и так..
crit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос данных из DBGrid в DBGrid KingSize БД в Delphi 17 24.04.2009 09:30
DBGrid Alexsandr БД в Delphi 5 08.10.2008 00:00
DBGrid Ane4ka БД в Delphi 28 01.06.2008 10:00
DBGRID Devikss БД в Delphi 2 29.05.2008 08:17