Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / группировка DataTable или SQL запрос к DataTable / 25 сообщений из 40, страница 1 из 2
12.02.2009, 06:37
    #35812346
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
Подскажите чайнику куда двигаться.

В 1С есть такая штука МояТаблица.Группировать("КолонкаГруппировки", "КолонкаДанных")
Получаешь в результате таблицу с итогами по колонке(ам) группироки.

А можно ли что-то подобное сделать в C# с DataTable?

Насколько я понимаю SQL запрос (или что-то в этом роде) к DataTable сделать нельзя?

Уж очень не хочеться тупым перебором строк итоги считать.

Спасибо
...
Рейтинг: 0 / 0
12.02.2009, 10:43
    #35812748
i see
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
Все можно. Главное - забыть про 1Ц и не считать этот "хашавшевет" эталоном. К датасетам можно применять Filter.
...
Рейтинг: 0 / 0
12.02.2009, 10:46
    #35812761
i see
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
PekУж очень не хочеться тупым перебором строк итоги считать.Pek, а вам известно про функции SQL? В частности, про SUM?
...
Рейтинг: 0 / 0
12.02.2009, 11:27
    #35812923
группировка DataTable или SQL запрос к DataTable
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
    new DataColumn("Value")
});

dt.Rows.Add("sql.ru");
dt.Rows.Add("delphikingdom.ru");
dt.Rows.Add("google.ru");
dt.Rows.Add("sql.ru");

var group = dt.AsEnumerable()
    .GroupBy(d => d["Value"])
    .Select(d => new { Value = d.Key, Count = d.Count() }
);

dataGridView1.DataSource = group.ToList();
...
Рейтинг: 0 / 0
12.02.2009, 19:40
    #35814582
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
i see,

Про функции SQL я знаю.
Дело в том что мне нужно результаты пяти-шести SQL запросов к базе данных объеденить в одной таблице.
...
Рейтинг: 0 / 0
12.02.2009, 19:50
    #35814595
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
во-первых обратите там внимание на AGGREGATES

Pekобъеденить в одной таблице.
во вторых может все таки делать это на сервере?

или просто запрос написать не можете? скажите - в чем сложность, могет поможем :)
...
Рейтинг: 0 / 0
12.02.2009, 20:24
    #35814629
Быдло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
МСУ в сандалиях
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
    new DataColumn("Value")
});

dt.Rows.Add("sql.ru");
dt.Rows.Add("delphikingdom.ru");
dt.Rows.Add("google.ru");
dt.Rows.Add("sql.ru");

var group = dt.AsEnumerable()
    .GroupBy(d => d["Value"])
    .Select(d => new { Value = d.Key, Count = d.Count() }
);

dataGridView1.DataSource = group.ToList();


МСУ, это LiNQ ?

Просто я никогда не видел её в действии.
...
Рейтинг: 0 / 0
12.02.2009, 22:28
    #35814741
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
winsky!,

Да не то что-бы большие сложности были. Просто прикидываю и так и эдак; как лучше сделать.

Кстати вопрос: что быстрее, один громоздкий SQL запрос в базу данных или несколько маленьких попроще и последующей развлечение с DataTable-ами?

Кстати не надо на 1С бочку катить :) - весьма уважаемая (мной) программа.
Видели бы вы в чем они тут в Канаде работают, такое г... (по крайней мере с точки зрения интерфейса).
...
Рейтинг: 0 / 0
12.02.2009, 22:37
    #35814748
группировка DataTable или SQL запрос к DataTable
PekКстати вопрос: что быстрее, один громоздкий SQL запрос в базу данных или несколько маленьких попроще и последующей развлечение с DataTable-ами?
один
PekКстати не надо на 1С бочку катить :) - весьма уважаемая (мной) программа.
Не программа, а платформа. по крайней мере они так её называют

PekВидели бы вы в чем они тут в Канаде работают, такое г... (по крайней мере с точки зрения интерфейса).
Зато у них есть кленовый сироп
...
Рейтинг: 0 / 0
12.02.2009, 23:02
    #35814773
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
winsky!,

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

Имеется база данных (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 минут:
- найти были ли посчитаны итоги на начало периода и если да то получить год и месяц;
- посчитать итоги на начало Года выбранного месяца;
- посчитать обороты с начала Года выбр.месяца до месяца предшеств.выбранному месяцу;
- посчитать обороты за выбр.месяц;
- посчитать обороты за след.месяц;

Подскажите в общих чертах как лучше сделать кто может?
...
Рейтинг: 0 / 0
12.02.2009, 23:04
    #35814775
&lt;fukfyl&gt;pth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
PekНу ладно, излагаю вводную :)
не правильно ставится задача!
Надо так:
PekНу ладно, излагаю вводную, 400$ :)
...
Рейтинг: 0 / 0
12.02.2009, 23:16
    #35814787
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
<fukfyl>pth,

Эй, про финансовый кризис кто нибудь слышал? :)
...
Рейтинг: 0 / 0
12.02.2009, 23:18
    #35814789
&lt;fukfyl&gt;pth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
ладно:
PekНу ладно, излагаю вводную, 250$ :)[/quot]
...
Рейтинг: 0 / 0
12.02.2009, 23:20
    #35814793
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
И еще вопрос.

В 1С есть СтрокаСостояние("пишу чего хочу") и внизу окошка 1С отображается это сообщение.

А в C# есть чего нибудь подобное?
...
Рейтинг: 0 / 0
12.02.2009, 23:21
    #35814795
i see
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
PekА в C# есть чего нибудь подобное?Да куда СиШарпу до 1Ц
...
Рейтинг: 0 / 0
12.02.2009, 23:27
    #35814798
группировка DataTable или SQL запрос к DataTable
PekВ 1С есть СтрокаСостояние("пишу чего хочу") и внизу окошка 1С отображается это сообщение.
никогда не признавал в 1С это русскоподобное именование членов, функций, операторов


намного приятнее созерцать StatusString("пиши исчо");
...
Рейтинг: 0 / 0
12.02.2009, 23:28
    #35814800
МСУ фпечке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
PekДело в том что мне нужно результаты пяти-шести SQL запросов к базе данных объеденить в одной таблице.
Ну так и пишите в названии сабжа. При чем тут "группировка DataTable"?
Что мешает написать запрос к серверу на выборку нужных данных?

Либо, сджойнить уже готовые наборы на клиенте. А-ля:

Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DataSet ds = new DataSet();
ds.ReadXml(@"C:\sql.ru.xml");

var life =
    from links in ds.Tables["Links"].AsEnumerable()
    join members in ds.Tables["Members"].AsEnumerable() on links["MemberId"] equals members["MemberId"]
    join karma in ds.Tables["Karma"].AsEnumerable() on links["KarmaId"] equals karma["KarmaId"]
    select new { MemberName = members["MemberName"], KarmaTitle = karma["KarmaTitle"] };

dataGridView1.DataSource = life.ToList();
...
Рейтинг: 0 / 0
12.02.2009, 23:40
    #35814814
Буква У
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
PekА ODBC драйвер требует имя источника данных, а они на разных компах могут по разному обзываться.

Неправда.
...
Рейтинг: 0 / 0
12.02.2009, 23:43
    #35814819
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
i see,

Для каждой работы нужен соответствующий инструмент.

Конечная цель - поднять бабла побольше.

И на 1С я уж поимел гораздо больше чем мог бы поднять (в данных обстоятельствах) на C#, C++, Ассемблере,... (нужное подставить).

За что 1С бесконечно благодарен :)

Просто тогда у меня был один tool, сейчас другой...
...
Рейтинг: 0 / 0
12.02.2009, 23:51
    #35814830
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
Буква У,

Вот connectionString я использую (может я чего не догоняю):

else if (myFactory == "System.Data.OleDb.OleDbFactory")
{
Csb.Add("Provider", "MYPROVIDERNAME");
Csb.Add("Data Source", "191.22.21.10");
Csb.Add("User Id", "myID");
Csb.Add("Password", "myPswd");
Csb.Add("Default Collection", "MYCOLLECTIONNAME");
}
else if (myFactory == "System.Data.Odbc.OdbcFactory")
{
Csb.Add("Dsn", "SOURCENAME");
Csb.Add("UID", "myID");
Csb.Add("PWD", "myPswd");
}

если я пытаюсь в ODBC засунуть IP сервера вместо имени источника данных то он меня нафиг посылает

может это от драйвера зависит?

и кстати, есть ли разница по скорости между OLE и ODBC?
...
Рейтинг: 0 / 0
12.02.2009, 23:54
    #35814834
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
МСУ фпечкеPekДело в том что мне нужно результаты пяти-шести SQL запросов к базе данных объеденить в одной таблице.
Ну так и пишите в названии сабжа. При чем тут "группировка DataTable"?
Что мешает написать запрос к серверу на выборку нужных данных?

Либо, сджойнить уже готовые наборы на клиенте. А-ля:

+
Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DataSet ds = new DataSet();
ds.ReadXml(@"C:\sql.ru.xml");

var life =
    from links in ds.Tables["Links"].AsEnumerable()
    join members in ds.Tables["Members"].AsEnumerable() on links["MemberId"] equals members["MemberId"]
    join karma in ds.Tables["Karma"].AsEnumerable() on links["KarmaId"] equals karma["KarmaId"]
    select new { MemberName = members["MemberName"], KarmaTitle = karma["KarmaTitle"] };

dataGridView1.DataSource = life.ToList();



Дык сабж такой потому что мне нужно узнать - можно или нельзя группировать DataTable
а не "помогите написать мега-SQL-запрос".

Я ж чайник. Я просто вижу чего мне нужно получить на выходе, вижу какая структура данных и пытаюсь с наименьшими затратами и наибольшей унифицированостью сделать tool.
...
Рейтинг: 0 / 0
12.02.2009, 23:57
    #35814838
Буква Й
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
Pekи кстати, есть ли разница по скорости между OLE и ODBC?
OLEDB круче

ODBC - багоплодилка
...
Рейтинг: 0 / 0
13.02.2009, 00:00
    #35814841
Pek
Pek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
Буква ЙPekи кстати, есть ли разница по скорости между OLE и ODBC?
OLEDB круче

ODBC - багоплодилка

Ну вот, если так то мне тогда и заморачиваться нечего.
OLEDB IP сервера понимает, мне больше ничего и не надо. :-)
...
Рейтинг: 0 / 0
13.02.2009, 00:02
    #35814847
МСУ фпечке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
PekДык сабж такой потому что мне нужно узнать - можно или нельзя группировать DataTable
а не "помогите написать мега-SQL-запрос".
Я же Вам уже ответил - можно. Вы, вообще, читаете ответы, которые Вам адресованы?

Pekсделать tool.
Шо за зверь?
...
Рейтинг: 0 / 0
13.02.2009, 00:19
    #35814857
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группировка DataTable или SQL запрос к DataTable
Pek
Я ж чайник. Я просто вижу чего мне нужно получить на выходе, вижу какая структура данных и пытаюсь с наименьшими затратами и наибольшей унифицированостью сделать tool.
Наймите специалиста.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / группировка DataTable или SQL запрос к DataTable / 25 сообщений из 40, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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