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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2017, 11:24   #1
Aleksey_25
 
Регистрация: 18.07.2017
Сообщений: 5
По умолчанию Совершение математических действий с элементами DataGridView - C#

Добрый день!

Имеется локальная БД Access, в которой содержится две связанных таблицы – Наименование услуги и действия по услуге. Обе таблицы ключуются по ID_услуги. В них заносится информация о том, какие услуги клиентам были оказаны сотрудниками. Стоит обратить внимание, что есть случаи, когда имеется значение по услуге, но нет действий по ней.

Таблица 1 Наименование услуги содержит: ID, Дата, ФИО сотрудника, Наименование услуги (картинка 1 - Tables_1).


Таблица 2 – Действия по услуге содержит: ID, ID_услуги, Наименование действия (картинка 2 - Tables_2).

Задача: Составить отчет по выполненной работе сотрудниками с выгрузкой в xls. Форма отчета (картинка 3 - Zadaha):


Я предположил, что можно попробовать решить эту задачу следующим образом:

1. Составляем sql запрос с

Цитата:
LEFT JOIN – Select A.ID, A.Дата,A.ФИО сотрудника,A.Услуга, B.Действия по услуге FROM A LEFT JOIN B ON A.ID = B.ID_услуга.
На выходе получим такой результат (картинка 4 - Tables_3):

2. Далее этот результат заносим в DataTable и передаем в DGV.

3. Потом провести расчеты по DGV, типа DISTINCT/COUNT и т.п., но ни как не могу понять, возможно ли это реализовать … И что самое главное, как сгруппировать все это по ФИО, чтобы вывести корректный отчет (см.рис.1(картинка 5 - Ris_1))
Подскажите, пожалуйста, как можно вывести подобный отчет (см. рис.1(картинка 5 - Ris_1)) и стоит для этого использовать DGV, может есть другие способы?
Изображения
Тип файла: jpg Tables_1.JPG (41.3 Кб, 65 просмотров)
Тип файла: jpg Tables_2.JPG (13.6 Кб, 61 просмотров)
Тип файла: jpg Zadaha.JPG (15.1 Кб, 67 просмотров)
Тип файла: jpg Tables_3.JPG (65.2 Кб, 65 просмотров)
Тип файла: jpg Ris_1.JPG (26.0 Кб, 63 просмотров)

Последний раз редактировалось Aleksey_25; 11.08.2017 в 11:28.
Aleksey_25 вне форума Ответить с цитированием
Старый 11.08.2017, 11:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

нужно получить таблицу, которая на Рис.1 ?
других столбцов в этой таблице не предполагается?
тогда это можно получить одним запросом.

выложите на форум архив с тестовой БД, тогда будет проще набросать готовый вариант запроса.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.08.2017, 14:23   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
типа DISTINCT/COUNT и т.п., но ни как не могу понять, возможно ли это реализовать … И что самое главное, как сгруппировать все это по ФИО
Код:
select  fio, 
count(distinct a.услуга), 
sum(case when b.действие по услуге ='стрижка' then 1 else 0 end),
sum(case when b.действие по услуге ='помывка' then 1 else 0 end),
sum(case when b.действие по услуге ='укладка' then 1 else 0 end),
from ....

group by фио
case возможно заменить на if .... then

очень похожая задача и тот же ответ, только другИЕ данные (условие и результаты) в case и/или в условиях "частичного" join.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 11.08.2017, 14:28   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

по моему, в MS Access вместо CASE нужно использовать IIF()
с остальным согласен.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.08.2017, 14:28   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

iif в Access
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Flash Запрет на совершение повторных действий по IP glazik Общие вопросы Web 3 18.01.2013 02:43
Рисование математических формул Uniskull Помощь студентам 4 30.11.2010 18:49
Парсер математических выражений Granus Общие вопросы Delphi 3 24.06.2009 15:19
Совершение действия в зависимости от показаний таймера alexSX Работа с сетью в Delphi 5 07.04.2009 20:54
Ввод математических формул Temirlan Общие вопросы Delphi 4 20.02.2009 19:24