Как отсортировать <DataTable>?
Дано: таблица с некоторым количеством строк.
Требуется: физически отсортировать записи в таблице.
Ограничения: нельзя пересоздать таблицу.
Про <table.DefaultView.Sort = "...."> Я знаю, но это только индекс (последовательность чтения), а меня интересует физическое упорядочение записей.
-----
Один из расчетов требует оперирования двумя смежными строками: запись в таблице - определение одной рабочей смены - и нужно состыковать конец одной смены, начало другой и продолжительность.
1. и 2.
-----
Нарушают ограничение - не создавать новую таблицу.
Текущая таблица уже приколочена к гриду и замена внутренней таблицы потребует переприколачивания. Делать это изнутри объекта который не имеет ссылки на грид мне не слишком удобно, а пихать ссылку на элемент ГУЯ в БО нет никакого желания.
Ладушки - оставлю через ДефаултВиев.Сорт...
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.
>Poluchil oblom pri udalenii
То бишь таблица связана с другой/другими? Тогда прийдётся извращаться.
Как вариант, добавить эти же данные в отсортированном порядке, заменить программно старые ид на новые и затем только удалить старые данные.
Если там еще и юник кей то прийдется какую то фигню добавлять и удалять
То бишь таблица связана с другой/другими?
-----
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.
Речь о "видении" базы через 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.
База... в базе нет таблиц для адекватного сохранения этих данных.
А отчего кнопочкой транлит не пользуешься?...
Но если приложение данные хранит, то не в воздухе же. Чего то должно быть.
А в приложении пакетного режима то видимо нет, не будешь же руками все перебивать.
Поставь "шпион для SQL" увидишь запросы.
А отчего кнопочкой транлит не пользуешься?...
-----
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...
редирект на гоогле-транслате повесили... а про обратно как-то подзабыли...
А отчего у меня работает? Но я не смотрел как сделано.
То, с чем Я работаю для показа данных - результат пересчета. Вот его и надо сортировать.
Но раз новых таблиц делать низзя, то и результат сохранить не получится в базе. Получается, ты рассчитываешь "кусочками", а хочешь отсортировать "по целому".
Тогда постановка задачи сильно хромает. Спрашиваешь одно, а на самом деле совершенно другое.
Инфо для проверки логина выскребается из... трех таблиц.
Уровни доступа пользователей есть?
Когда программист из "другого мира" он и делает всё по другому и понять инопланетян часто довольно затруднительно.
Иноплантный код приходится просто выбрасывать. Хотя выбросить всю систему довольно непросто, как и написать её поновому.
Могу только посочувствовать и пожелать удачи в
поисках новой.
А отчего у меня работает?
-----
ну откуда же мне знат'? Tут то появится, то пропадет... вот буковки в верхнем регистре то ест', то нету...
то и результат сохранить не получится в базе.
-----
угу... тол'ко частично. меня это пока не беспокоит.
Vторым темпом надо переносит' все дополненийа в MS SQL базу - тогда и поменйайу...
Тогда постановка задачи сильно хромает.
-----
Xи-хи...
Уровни доступа пользователей есть?
-----
Eст'. Nо зашифрованы в основной таблице. Tам без премудростей.
Иноплантный код приходится просто выбрасывать.
-----
Xотелос'бы... но увы - тол'ко постепенная переработка и замена.
Jа, кстати, вполне вработался - не перегружен, ест' возможност' делат' как надо.
Если речь идет о .NET, WPF DataGrid, System.Data.DataTable (наверняка есть куча мест, где есть тоже ?), то что мешает работать с ее property Rows (DataRowCollection)? "Прибита" у Вас DataTable, и пускай себе, а содержимое Rows можно менять как Вам захочется, и все будет отображаться в Вашем гриде, если Binding правильно организован (а похоже, что так, т.к. Вы бы уже это заметили).
Если я не о том, то ну и ладно.
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.
Вопрос был как отсортировать таблицу, не пересоздавая. Я и отвечаю:
_datatable.Rows.Clear();
, и далее добавляете в нее все снова, уже отсортированным (где и как Вы это сделаете - придумайте уж как-нибудь). И не нужно ни о GUI здесь заботиться (или что-то об нем знать), ни таблицу пересоздавать.
(Или я совсем ничего не понял, и проблема именно в том, чтобы отсортировать? Вроде не?)
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.