powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / группировка DataTable или SQL запрос к DataTable
15 сообщений из 40, страница 2 из 2
группировка DataTable или SQL запрос к DataTable
    #35814860
Буква У
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Буква ЙPekи кстати, есть ли разница по скорости между OLE и ODBC?
OLEDB круче

ODBC - багоплодилка
Мне кажется наооборот.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814870
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
ИзопропилPek
Я ж чайник. Я просто вижу чего мне нужно получить на выходе, вижу какая структура данных и пытаюсь с наименьшими затратами и наибольшей унифицированостью сделать tool.
Наймите специалиста.

Ну дык я и есть специалист :)
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35815331
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pekwinsky!,

Ну ладно, излагаю вводную :)

Имеется база данных (AS400).
У меня к ней доступ на чтение либо через OLE-драйвер либо через ODBC-драйвер.
Не знаю какой быстрее, пользуюсь OLE т.к. в строке подключения там можно IP сервера указывать.
А ODBC драйвер требует имя источника данных, а они на разных компах могут по разному обзываться.

Имеется таблица с данными бух.итогов. Колонки которые нам нужны:

Фирма (100, 101, 102, ... и т.д.)
БухСчет (1001, 1002, 1003, ... и т.д.),
ГодИтогов (2006, 2007, ... и т.д.),
МесяцИтогов (от 1 до 12),
СуммаДеб (положительное число; итоговые обороты по дебету счета за месяц года),
СуммаКред (отрицательное число; итоговые обороты по кредиту счета за месяц года).

Итоги на начало периодов система хранит в извращенной форме для разных фирм по разному.

Их может не быть вообще для некоторых фирм.
Тогда чтобы узнать итоги на начало 2008 года 11 месяца
нужно сложить СуммаДеб и СуммаКред за все периоды где Год<2008 и за все периоды где Год=2008 и Месяц<11.

А если они есть, то храняться в той же таблице, но Месяц=0.
Т.е. если Год=2007 и Месяц=0 то сложив СуммаДеб и СуммаКред мы получим итоги на начало 2007 года.

Т.е. для фирмы 100 итоги могут быть посчитаны на начало 2007 года, для фирмы 200 на начало 2003 года, для фирмы 300 их нет вообще.
Власти над процессом расчета итогов я не имею.

Теперь нужен отчет:
для одной заданой фирмы для одного выбранного года и месяца нужно получит следующее:

бухСчет ВыбраныйМесяц СледМесяц

1000 ОстНаКонецМес ОстНаКонецМес
1001 ОстНаКонецМес ОстНаКонецМес
1002 ОстНаКонецМес ОстНаКонецМес
...
подитог: Итого Итого

2001 ОборотЗаМесяц ОборотЗаМесяц
2002 ОборотЗаМесяц ОборотЗаМесяц
2003 ОборотЗаМесяц ОборотЗаМесяц
...
подитог: Итого Итого

Вот сижу и думаю как лучше сделать.
На выполнение пяти запросов ушло 1 час 10 минут:
- найти были ли посчитаны итоги на начало периода и если да то получить год и месяц;
- посчитать итоги на начало Года выбранного месяца;
- посчитать обороты с начала Года выбр.месяца до месяца предшеств.выбранному месяцу;
- посчитать обороты за выбр.месяц;
- посчитать обороты за след.месяц;

Подскажите в общих чертах как лучше сделать кто может?
Имеется база данных (AS400). - че за зверь?
если хотите, чтобы вам написали запрос - выложите сюда скрипт/скрипты на создани & заполнение данными таблиц и опишите результат который хотите получить.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
группировка DataTable или SQL запрос к DataTable
    #36510711
tsasha13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребят, подниму тему. нужно сделать именно группировку DataTable. посчитать сумму по определенной группировке.

на стороне бд скул запросом - нереально. данных в БД грубо говоря нет, они в приложение появляются. как вариант, конечно, залить в бд, там сделать запрос и потом снести в бд - но что-то через одно место это, как и циклами шерстить таблицу в приложении.

есть другой какой-нибудь способ, помимо LINQ? приложение на .Net 2.0, поэтому с LINQ никак.

фильтрами вроде DataTable.DefaultView.RowFilter или DataTable.Columns["Col1"].Expressions не получится так сделать
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
группировка DataTable или SQL запрос к DataTable
    #39140971
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, у меня есть задача из одной DataTable сгруппировать и создать другую, но не включать все столбцы. Подскажите как это сделать по уму, мне не нравится код который я сделал:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  //rep таблица (DataTable) запрос к базе.          
            DataTable customers = new DataTable();
            customers.Columns.Add("id", typeof(int));
            customers.Columns.Add("name", typeof(string));
            customers = rep.AsEnumerable()
                .GroupBy(r => r["id_company"])
                .Select(r => CreateRow(customers, 
                        (int)r.ElementAt(0)["id_company"],
                        (string)r.ElementAt(0)["name_customer"])
                        )
                        .CopyToDataTable();
            dgv.DataSource = customers;


        private DataRow CreateRow(DataTable table, int id, string name)
        {
            DataRow row = table.NewRow(); 
            row.ItemArray = new object[] { id, name };
            return row;
        }


Заранее спасибо.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39141037
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_leaПодскажите как это сделать по уму
Выбросить DataTable'ы уже лет 10 как назад и начать использовать свои класс-домены.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39141064
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_lea,
Как минимум кусок
Код: c#
1.
2.
3.
customers = new DataTable();
            customers.Columns.Add("id", typeof(int));
            customers.Columns.Add("name", typeof(string));


в топку!
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39145108
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему, в таблице не создадутся строки.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39145113
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
System.ArgumentException: Длина входного массива больше числа столбцов в этой таблице.
в System.Data.DataRow.set_ItemArray(Object[] value)
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39145130
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_lea,

избавься от datatable, цепляй данные к dgv через BindingSource
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39145329
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне dgv не нужен, это только для примера, у меня выгрузка отчёта в Excel.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39145353
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_leaМне dgv не нужен, это только для примера, у меня выгрузка отчёта в Excel.

Зачем нужен datatable при выгрузке в Excel?
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39145434
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы загрузки запрос в память и закрыть соединение.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #39145436
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
загрузить
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
группировка DataTable или SQL запрос к DataTable
    #39389346
edd1977
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pek, ответ такой: IEnumerable<DataRow> results = dataTable.AsEnumerable().GroupBy(t => t["columnName"])
.Select(g => g.First());

Источник: https://social.msdn.microsoft.com/Forums/ru-RU/693b2afa-773a-4db5-a2a4-6269c9f35303/-datatable-c?forum=programminglanguageru
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / группировка DataTable или SQL запрос к DataTable
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]