Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Как отсортировать <DataTable>?

438  1 2 все
Murr патриот16.12.15 12:15
Murr
16.12.15 12:15 
Как отсортировать <DataTable>?
Дано: таблица с некоторым количеством строк.
Требуется: физически отсортировать записи в таблице.
Ограничения: нельзя пересоздать таблицу.
Про <table.DefaultView.Sort = "...."> Я знаю, но это только индекс (последовательность чтения), а меня интересует физическое упорядочение записей.
#1 
NightWatch коренной житель16.12.15 12:26
NightWatch
16.12.15 12:26 
в ответ Murr 16.12.15 12:15
В ответ на:
физически отсортировать записи в таблице.
А зачем?
1. DataTable.DefaultView.ToTable()
2. DataTable.Select(string filterExpression, string sort)
#2 
Murr патриот16.12.15 15:29
Murr
NEW 16.12.15 15:29 
в ответ NightWatch 16.12.15 12:26, Последний раз изменено 16.12.15 15:31 (Murr)
А зачем?
-----
Один из расчетов требует оперирования двумя смежными строками: запись в таблице - определение одной рабочей смены - и нужно состыковать конец одной смены, начало другой и продолжительность.
1. и 2.
-----
Нарушают ограничение - не создавать новую таблицу.
Текущая таблица уже приколочена к гриду и замена внутренней таблицы потребует переприколачивания. Делать это изнутри объекта который не имеет ссылки на грид мне не слишком удобно, а пихать ссылку на элемент ГУЯ в БО нет никакого желания.
Ладушки - оставлю через ДефаултВиев.Сорт...
#3 
AlexNek патриот24.12.15 14:40
AlexNek
NEW 24.12.15 14:40 
в ответ Murr 16.12.15 15:29

>Нарушают ограничение - не создавать новую таблицу.

А если экспорт/удаление/импорт данных с сортировкой?

#4 
Murr патриот24.12.15 14:52
Murr
24.12.15 14:52 
в ответ AlexNek 24.12.15 14:40

Vygljadit - slozhnovato.

Tam ne tak mnogo dannyx - 600-1000 strok.


Ja proboval sledujuwee - peregnal v massiv, otsortiroval, udalil iz tablicy i importiroval...

Poluchil oblom pri udalenii - udaljajutsja i terjajutsja... Gluboko ne smotrel, no poxozhe,

chto stroka stanovitsja polnost'ju nevalidnoj pri udalenii - vplot' do zachistki polej.

#5 
AlexNek патриот24.12.15 15:28
AlexNek
24.12.15 15:28 
в ответ Murr 24.12.15 14:52

>Poluchil oblom pri udalenii

То бишь таблица связана с другой/другими? Тогда прийдётся извращаться.

Как вариант, добавить эти же данные в отсортированном порядке, заменить программно старые ид на новые и затем только удалить старые данные.

Если там еще и юник кей то прийдется какую то фигню добавлять и удалять

#6 
Murr патриот24.12.15 15:36
Murr
24.12.15 15:36 
в ответ AlexNek 24.12.15 15:28

То бишь таблица связана с другой/другими?

-----

Net. Tam odna tablica.

Tam problema v tom chto stroka stanovitsja nevalidnoj pri udalenii iz tablicy.

Dazhe esli na nee est' drugie ssylki.


Izmenit' i dobavit' - tozhe ne poluchitsja - stroka dobavljaetsja ODIN raz. Posle

jetogo ee mozhno izmenjat', no nel'zja dobavit' kak novuju... Detali implementacii

zaprjatany dovol'no gluboko i kopat' tuda ne xochetsja.

#7 
AlexNek патриот24.12.15 15:54
AlexNek
24.12.15 15:54 
в ответ AlexNek 24.12.15 15:28

>Detali implementaciizaprjatany dovol'no gluboko i kopat' tuda ne xochetsja.

Речь о "видении" базы через SQL или через приложение?

Но если строки нельзя добавлять или удалять то как может идти речь о физической сортировке?

#8 
Murr патриот24.12.15 16:04
Murr
NEW 24.12.15 16:04 
в ответ AlexNek 24.12.15 15:54

Речь о "видении" базы через SQL или через приложение?

-----

Cherez prilozhenie.

I dazhe ne videnie bazy - nekotoryx promezhutochnyx rasschetov.

Baza... v baze net tablic dlja adekvatnogo soxranenija jetix dannyx. хммм



Но если строки нельзя добавлять или удалять то как может идти речь о физической сортировке?

------

Mozno dobavljat' - odnokratno, mozhno udaljat' - bez soxranenija.

Tak potomu i vopros voznik - kak sdelat' to, chto, v principe, ne predusmotreno.

U menja zhe legkix voprosikov pochti ne byvaet. улыб



#9 
AlexNek патриот24.12.15 17:44
AlexNek
24.12.15 17:44 
в ответ Murr 24.12.15 16:04
База... в базе нет таблиц для адекватного сохранения этих данных.

А отчего кнопочкой транлит не пользуешься?...

Но если приложение данные хранит, то не в воздухе же. Чего то должно быть.

А в приложении пакетного режима то видимо нет, не будешь же руками все перебивать.

Поставь "шпион для SQL" увидишь запросы.

#10 
Murr патриот24.12.15 18:34
Murr
NEW 24.12.15 18:34 
в ответ AlexNek 24.12.15 17:44, Последний раз изменено 24.12.15 18:36 (Murr)

А отчего кнопочкой транлит не пользуешься?...

-----

Tak mudrejshie po razrabotke Germanki tuda redirect na google-translate povesili... a pro obratno kak-to podzabyli...


Но если приложение данные хранит, то не в воздухе же.

-----

Xranit.

No ne v adekvatnom vide - tekuwaja struktura bazy ne pozvoljaet soxranit' polnuju infu.

To, s chem Ja rabotaju dlja pokaza dannyx - rezul'tat perescheta. Vot ego i nado sortirovat'.

Posle pokaza - snova pereschityvaetsja i pishetsja v bazu... s poterej chasti informacii.

Pomenjat' chtoby bylo bolee-menie normal'no poka ne mogu - est' ewe tri bol'shie

chasti kompleksa, kotorye Ja poka ne trogal. Sejchas - izoliroval dlja dannoj chasti "chto

tam est' v baze" i budu otlazhivat' "kak est'". Kogda dadut vremja i vychlenju ostal'noe - zamenju

vse razom.


Поставь "шпион для SQL" увидишь запросы.

-----

U menja - Oracle. Zaprosy - ne problema - Ja ix i tak vizhu - uzhe oformleny v DALe kak T4-shablony.

Real'naja problema - tablicy ne sootvetstvujut ispol'zuemym biznes-ob'ektam - bol'shaja chast' zaprosov

- s pereimenovaniem polej i svedeniem infy iz raznyx tablic. Ja by tozhe svixnulsja pytajas' otsledit' vse

izmenenija v takoj sisteme...

Blin, prostejshee - LOGIN. Info dlja proverki logina vyskrebaetsja iz... trex tablic.

Rezul'tat vyborki - ne sootvetstvuet ni odnoj iz tablic. Pri jetom info iz dvux tablic - voobwe ne ispol'zuetsja

pri logine! A kogda i gde trebuetsja - Ja ewe ne nashel. Do six por ne pochinil do konca - vyborku - obrezal

po osnovnoj tablice, no do-vyborku svjazannyx dannyx ne delal. i vse - rabotaet...

Pravda chtoby ponjat' chto tak mozhno sdelat' prishlos' rezat' na kuski i analizirovat' porjadka 150K koda...

#11 
AlexNek патриот24.12.15 21:36
AlexNek
NEW 24.12.15 21:36 
в ответ Murr 24.12.15 18:34
редирект на гоогле-транслате повесили... а про обратно как-то подзабыли...

А отчего у меня работает? Но я не смотрел как сделано.

То, с чем Я работаю для показа данных - результат пересчета. Вот его и надо сортировать.

Но раз новых таблиц делать низзя, то и результат сохранить не получится в базе. Получается, ты рассчитываешь "кусочками", а хочешь отсортировать "по целому".

Тогда постановка задачи сильно хромает. Спрашиваешь одно, а на самом деле совершенно другое.



Инфо для проверки логина выскребается из... трех таблиц.

Уровни доступа пользователей есть?

Когда программист из "другого мира" он и делает всё по другому и понять инопланетян часто довольно затруднительно.

Иноплантный код приходится просто выбрасывать. Хотя выбросить всю систему довольно непросто, как и написать её поновому.

Могу только посочувствовать и пожелать удачи в поисках новой.

#12 
Murr патриот24.12.15 22:54
Murr
NEW 24.12.15 22:54 
в ответ AlexNek 24.12.15 21:36

А отчего у меня работает?

-----

ну откуда же мне знат'? Tут то появится, то пропадет... вот буковки в верхнем регистре то ест', то нету...



то и результат сохранить не получится в базе.

-----

угу... тол'ко частично. меня это пока не беспокоит.

Vторым темпом надо переносит' все дополненийа в MS SQL базу - тогда и поменйайу...



Тогда постановка задачи сильно хромает.

-----

Xи-хи...



Уровни доступа пользователей есть?

-----

Eст'. Nо зашифрованы в основной таблице. Tам без премудростей.





Иноплантный код приходится просто выбрасывать.

-----

Xотелос'бы... но увы - тол'ко постепенная переработка и замена.

Jа, кстати, вполне вработался - не перегружен, ест' возможност' делат' как надо.

#13 
AlexNek патриот25.12.15 13:12
AlexNek
25.12.15 13:12 
в ответ Murr 24.12.15 22:54
Уровни доступа пользователей есть?
-----
Eст'. Nо зашифрованы в основной таблице. Tам без премудростей.

думал, может из-за ентого логин усложнен

Jа, кстати, вполне вработался - не перегружен, ест' возможност' делат' как надо.

ну это самое замечательное

#14 
  moose знакомое лицо27.12.15 23:25
27.12.15 23:25 
в ответ Murr 16.12.15 12:15, Последний раз изменено 27.12.15 23:26 (moose)

Если речь идет о .NET, WPF DataGrid, System.Data.DataTable (наверняка есть куча мест, где есть тоже ?), то что мешает работать с ее property Rows (DataRowCollection)? "Прибита" у Вас DataTable, и пускай себе, а содержимое Rows можно менять как Вам захочется, и все будет отображаться в Вашем гриде, если Binding правильно организован (а похоже, что так, т.к. Вы бы уже это заметили).


Если я не о том, то ну и ладно.

#15 
Murr патриот29.12.15 15:03
Murr
NEW 29.12.15 15:03 
в ответ moose 27.12.15 23:25

Rech ob .NET System.Data.DataTable.

S Rows ne rabotajut vse tezhe samye momenty - izjatie delaet stroku nevalidnoj, peredobavlenie - ne dobavljaet stroku vtoroj raz...


Binding, kak takovoj, menja pochti ne interest - pokaz dannyx - problema GUJa, a rasschetnaja chast ob nem ne znaet... da I ne dolzhna - GUJ dolzhen poluchit pravilno poschitanye I organizovannye dannye I zanimatsja ix pokazom, no jeto ne vopros temy.

#16 
  moose знакомое лицо29.12.15 18:01
29.12.15 18:01 
в ответ Murr 29.12.15 15:03, Последний раз изменено 29.12.15 18:17 (moose)

Вопрос был как отсортировать таблицу, не пересоздавая. Я и отвечаю:

_datatable.Rows.Clear();

, и далее добавляете в нее все снова, уже отсортированным (где и как Вы это сделаете - придумайте уж как-нибудь). И не нужно ни о GUI здесь заботиться (или что-то об нем знать), ни таблицу пересоздавать.


(Или я совсем ничего не понял, и проблема именно в том, чтобы отсортировать? Вроде не?)

#17 
Murr патриот29.12.15 18:23
Murr
29.12.15 18:23 
в ответ Murr 29.12.15 15:03

Gde-to vyshe napisano - posle table.Clear(), ne sut vazhno kakim sposobom, stroki stanovjatsja nevalidnymi.

Byla mysl snachala skopirovat v druguju tablicu, a potom tawit obratno, no takoe budget rabotat' na malyx obemax dannyx. Xotelos zhe normalnogo reshenija.


Laduski, budget vremja posmotrju kak implementirovano xranenie I dostup k strokam - mozhet tam est' chto-to vstroennoe.


#18 
Murr патриот29.12.15 18:28
Murr
NEW 29.12.15 18:28 
в ответ moose 29.12.15 18:01

P.S. Problema imenno v tom, chtoby otsortirovat dannye v DataTable. Kakoj- nibud storonnij variant - cherez DefaultSort - Ja uzhe imeju.

#19 
inovator гость29.12.15 22:39
inovator
29.12.15 22:39 
в ответ Murr 16.12.15 12:15
#20 
1 2 все