![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Letchik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.1.2010 Где: UGTB Репутация: нет Всего: нет |
Всем привет!
Имеется база данных. Массив структур с данными о сотрудниках фирмы. Надо вывести все записи в ListView. Просто? А теперь читаем дальше Как мог - объяснил. Надеюсь все всё поняли |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Ну если у тебя базе данных индексы не идут как 4,9,1,7,0,6 а по порядку 1,2,3,4 то какие проблемы ? -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Letchik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.1.2010 Где: UGTB Репутация: нет Всего: нет |
Данные надо будет сортировать по группам. В группе могут содержаться данные с любыми индексами и в любом порядке, будь то 1, 3, 10, 123; или 20, 30, 32.
У меня есть идея, которая заключается в том, чтобы создать массив из элементов типа int, номер элемента будет соответствовать номеру строки в ListView, а присвоенное ему значение - индексу записи в БД. Однако ListView должен иметь возможность сортироваь таблицу при щелчке по заголовку. Это значит, что мой массив должен будет обновляться чёрт знает как! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Проще всего сохранить связь между таблицей БД и лист-вью, записывая в Data каждого элемента номер записи (или ключ записи). И тасуй себе элементы списка на здоровье.
-------------------- ... |
|||
|
||||
| Letchik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.1.2010 Где: UGTB Репутация: нет Всего: нет |
Что-то вроде этого?
Я правильно понял? Это сообщение отредактировал(а) Letchik - 13.6.2010, 11:11 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Я правильно понял?
Нет не правильно, ты в итоге в свою структуру и которая будет не одна, пытаешься перетащить базу данных в память программы. Earnest, пытается сказать что нужно хранить соответствие полей в ListView с полями базы данных.
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Letchik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.1.2010 Где: UGTB Репутация: нет Всего: нет |
Так. Значит выходит, что мы напрямую работаем с файлом. Добавил (изменил/удалил) запись - сразу записывается в файл. А в память мы только загружаем вышеприведённую структуру. Верно?
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Letchik, конечно нет. Ты спрашивал, как быть, если в списке элементы по разному сортируются. Я тебе написала, как сохранить связь - записать номер или ид-р записи в элемент лист-вью: член lParam структуры LVITEM, через которую ты помещаешь данные в список. О том, где хранить сами записи БД и речи не было. Что касается этого, то все зависит от свойств БД. Приличная БД должна сама заботиться о своей эффективности.
Но если ты называешь базой данных нечто доморощенное, то другое дело. Здесь возможны 2 подхода: если данных немного, грузи сразу все в память и не парься. Поверь, кучи проблем ненужных избежишь. Есть только 2 случая, когда все в память нельзя: очень много данных или многопользовательский доступ. Во-втором случае лучше использовать "настоящую" БД. В первом, собственно, тоже, но можно обойтись хешированием. Например, загружаешь в память только то, что сейчас отображается в списке. Да, и чтобы избежать двойного расхода памяти, список (лист-вью) должен быть виртуальным. Под "большим" объемом данных (которые нельзя загрузить целиком в память) я понимаю данные размером в районе гигабайта и больше. Да честно говоря и это я бы загрузила через файл-маппинг. -------------------- ... |
|||
|
||||
| Letchik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.1.2010 Где: UGTB Репутация: нет Всего: нет |
Ах вот оно что!
Огромное СПАСИБО! Всё ясно теперь! Я хотел поступить так же, но не нашёл подходящего элемента структуры для этой цели, а lParam, мне казалось, используется в других целях. Это сообщение отредактировал(а) Letchik - 15.6.2010, 07:57 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |