Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Суммирование в ЛистВью / 18 сообщений из 18, страница 1 из 1
16.09.2003, 12:48
    #32266283
Kriven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
Доброго.
Кто нибудь делал сумирование в ЛистВью при мультиселекте?
Хлопцы подскажите как.
Пробовал:
пробегаться по всем записям и если выделение = труе то складывал.
Но дооо-оо-олго все это происходит (порядка 75000 записей и сколько выделил столько раз и шерстю весь список)
И еще для сортировки использую билиотеку sSortLV.dll (с www.hiprog.com) так после сортировки происходит такая штука: выделяеш запись а она тебе сумирует совершенно другую т.е. записи сортируются а их ключи остаются на месте.
...
Рейтинг: 0 / 0
16.09.2003, 13:25
    #32266355
Kriven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
В догонку:
Как в определить Key Checkнутой строки?
...
Рейтинг: 0 / 0
16.09.2003, 14:02
    #32266452
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
посмотри вот это вдруг поможет?
ItemsSelected.Count
ItemsSelected.Item

>В догонку:
>Как в определить Key Checkнутой строки?

покажи истчник данных и кол-во столбцов в ЛистВью
...
Рейтинг: 0 / 0
16.09.2003, 14:05
    #32266458
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
Во-первых это издевательство какое-то
Список с мультиселектом и 75000 (!!!) записей.

Во-вторых
и сколько выделил столько раз и шерстю весь список
нафих?
Одного прохода что, недостаточно?
...
Рейтинг: 0 / 0
16.09.2003, 14:17
    #32266497
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
Никак иначе как перебором определить выделенный строки в LIstView нельзя. Нетути коллекции наподобии ItemSelected как в ListBox'e, хотя и должна быть
Делаешь цикл и смотришь у ListItem свойство Selected.
Можно, конечно, извратиться и создать свою коллекцию при выделении строк - я только об этом думал - но еще не делал - меня и так скорость (пока) пробега циклом устраивает. Но чую грядет то время, когда это станет критично.
==
еще как вариант исследовать парметры API функции SendMeassаge, возможно какая-то из них и возвращает нужное. см. МСДН /например здесь/ ms-help://MS.MSDNQTR.2003JUL.1033/shellcc/platform/commctls/listview/reflist.htm
Например есть LVM_GETSELECTEDCOUNT - кол-во выделенных записей.
Я еще не разбирался толком.
...
Рейтинг: 0 / 0
16.09.2003, 14:28
    #32266530
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
Вот еще что надыбал
ListView_GetSelectionMark
ms-help://MS.MSDNQTR.2003JUL.1033/shellcc/platform/commctls/listview/macros/listview_getselectionmark.htm

Returns the zero-based selection mark, or -1 if there is no selection mark.

Вроде оно. Но надо пробовать
Это по чукотски, но на нашенский перевести можно :)
Код: plaintext
1.
2.
3.
4.
5.
lResult = SendMessage(      // returns LRESULT in lResult     (HWND) 
hWndControl,      // handle to destination control     (UINT) 
LVM_GETSELECTIONMARK,      // message ID    
(WPARAM) wParam,      // =  0 ; not used, must be zero 
(LPARAM) lParam      // =  0 ; not used, must be zero );  
...
Рейтинг: 0 / 0
16.09.2003, 14:39
    #32266559
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
...
Рейтинг: 0 / 0
16.09.2003, 14:39
    #32266560
Kriven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
Плюнул нах.. на мультиселект (Time поджимает)
решил суммировать те которые чекнутые примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub lv1_ItemCheck(ByVal Item As Object)
Dim i As Long
i = Item.Index
If Me.lv1.ListItems(i).Checked = True Then
Me.Summer = Me.Summer + CCur(Me.lv1.ListItems(i).SubItems( 3 ))
End If
If Me.lvCtrl.ListItems(i).Checked = False Then
Me.Summer = Me.Summer - CCur(Me.lv1.ListItems(i).SubItems( 3 ))
End If
Me.Summer.Requery
End Sub
Правда библиотика sSortLV.dll для сортировки не канает придется чуть усложнить код добавлением еще четырех запросов с разными сортировками.

ЛП , очипятка 7500 записей, но это тоже дохр.. но мое мнение боса не интересует.
...
Рейтинг: 0 / 0
16.09.2003, 14:40
    #32266561
Kriven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
Забыл. Большое спасибо.
...
Рейтинг: 0 / 0
16.09.2003, 14:44
    #32266573
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
>Правда библиотика sSortLV.dll для сортировки не канает придется чуть усложнить код добавлением еще четырех запросов с разными сортировками\r
\r
Я че она делает - эта библиотека?\r
Примерно это /topic/34451?
...
Рейтинг: 0 / 0
16.09.2003, 14:50
    #32266594
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
очипятка 7500 записей, но это тоже дохр.. но мое мнение боса не интересует.
Угу. Совершенно верно. Тоже дохрена.
А таких начальников надо один раз заставить с помощью мышки, шифта, контрола и матры "Ебанамат" выделить сотню-другую записей в таком листвью.
Клик влево - клик вправо - забыл ctrl нажать - "Ебанамат" - и по новой
...
Рейтинг: 0 / 0
16.09.2003, 14:58
    #32266612
Kriven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
> Я че она делает - эта библиотека?
http://hiprog.com/access/article.asp?idd=203

ЛП, не поможет, он как и я бывший военный, но прослужил ~ на 20 лет дольше.
...
Рейтинг: 0 / 0
16.09.2003, 15:18
    #32266652
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
>> Я че она делает - эта библиотека? \r
>http://hiprog.com/access/article.asp?idd=203 \r
\r
Забыл, эта эту библиотеку уже обсуждали /topic/34451
...
Рейтинг: 0 / 0
17.09.2003, 17:17
    #32268196
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
Совсем недавно лепил для себя ListView с возможностью перевода в virtual mode, этот кусочек оттуда.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Declare Function SendMessage Lib  "user32"  Alias  "SendMessageA"  _
    (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const LVNI_SELECTED = &H2

Public Sub Test()
    Dim pos&
    'lv - нужный нам контрол
    pos = SendMessage(lv.hWnd, LVM_GETNEXTITEM, - 1 &, ByVal LVNI_SELECTED)
    Do While pos <> - 1 
        Debug.Print pos
        pos = SendMessage(lv.hWnd, LVM_GETNEXTITEM, pos, ByVal LVNI_SELECTED)
    Loop
End Sub



Отличный контрол этот ListView, а полноценных методов/функций для работы с ним в VB/VBA нет. Приходится тратить время на изучения API функций, ну да ничего зато оно окупается потом со сторицей.
...
Рейтинг: 0 / 0
17.09.2003, 17:23
    #32268205
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
2Shkurenko Alexander

Спасибо за пример. Теперь одной проблемой будет меньше


==
А даты как сортируешь (формат dd.mm.yyyy)?
...
Рейтинг: 0 / 0
17.09.2003, 17:53
    #32268272
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
to Senin Viktor
А даты как сортируешь (формат dd.mm.yyyy)?
пока никак :( Не готов еше виртуальный режим (список не хранит данные). Зато когда я это реализую, сортировать буду в источнике данных recordset там или еще чего.
...
Рейтинг: 0 / 0
17.09.2003, 18:07
    #32268300
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
> Зато когда я это реализую, сортировать буду в источнике данных recordset там или еще чего.

Не очень быстро будет :(
Каждый клик по столбцу - дергать сервер. Не рационально. Не быстро.
Есть API-способ (см. ссылку 14:44), но тупит на больших объемах
...
Рейтинг: 0 / 0
17.09.2003, 18:49
    #32268356
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование в ЛистВью
to Senin Viktor
Я считаю, что каждый должен заниматься своим делом, ListView отображать информацию, Jet, SQL Server работать с данными(сортировка, фильтрация ...). ListView быстрее чем сервер никогда не отсортирует. Пробовал работать с большим набором данных > 2.5 млн записей доступ к данным ADO + асинхронное подключение(adAsyncFetch) работает ОЧЕНЬ быстро.
По поводу рациональности хм.. тут я с тобой согласен, хотя можно попробовать после получения всех данных обрубить соединение и в дальнейшем использовать свойство Sort.
Помоему мы немного сваливаемся в оффтоп, да простит нас автор этого топика.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Суммирование в ЛистВью / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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