Как удалить повторяющиеся записи из списка?

Программирование на Visual Basic for Applications
eXRay
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 09.05.2004 (Вс) 0:58
Откуда: Россия, Москва

Как удалить повторяющиеся записи из списка?

Сообщение eXRay » 30.05.2004 (Вс) 22:41

сабж

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 30.05.2004 (Вс) 23:15

Код: Выделить всё
i = 0
Do While i <> (ListBox1.ListCount)
    For j = 0 To i - 1
        If ListBox1.List(i) = ListBox1.List(j) Then
            ListBox1.RemoveItem i
            i = i - 1
            Exit For
        End If
    Next
    i = i + 1
Loop

а в чем проблема??
Ничто так не ограничивает полёт мысли программиста, как компилятор

eXRay
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 09.05.2004 (Вс) 0:58
Откуда: Россия, Москва

Сообщение eXRay » 30.05.2004 (Вс) 23:32

ListBox.LIST? А в VBA это работает?

Проблема - да в общем-то не проблема...

Есть таблица(Access), в ней мнооооого записей и значениями одного поля я заполняю список, а поля повторяются...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.05.2004 (Пн) 9:07

А как выглядит строка запроса на формирование этого списка? Присутствует ли в ней, так сказать, DISTINCTROW? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

eXRay
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 09.05.2004 (Вс) 0:58
Откуда: Россия, Москва

Сообщение eXRay » 31.05.2004 (Пн) 20:58

Открываю рекордсет и перебираю все филды...... То бишь:

Set db = New ADODB.Recordset
db.Open ...
While Not db.EOF
ComboBox.AddItem db.fileds(2)
db.MoveNext
Wend

А че, не так нада? :?

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 31.05.2004 (Пн) 21:18

А в VBA это работает?

точно работает
Ничто так не ограничивает полёт мысли программиста, как компилятор

eXRay
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 09.05.2004 (Вс) 0:58
Откуда: Россия, Москва

Сообщение eXRay » 31.05.2004 (Пн) 21:53

гм... listbox - это дефолтовый листбокс??? может я глупый, но у меня нету свойства list у listbox'a :)

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 31.05.2004 (Пн) 23:21

ээээ а в акцессе его кажется действительно нет :(
ps лучше воспользуйся советом GSerg'a и оформляй через distinct? тебе же проще будет, просто надо будет воспользоваться запросом типа
SELECT DISTINCT Таблица1.a
FROM Таблица1;
и он вернет все не повторяющиеся записи из столбца a...
Ничто так не ограничивает полёт мысли программиста, как компилятор

eXRay
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 09.05.2004 (Вс) 0:58
Откуда: Россия, Москва

Сообщение eXRay » 01.06.2004 (Вт) 0:08

distinct рулит ;)

corgi, GSerg, cпасибо большое!!!!!!

З.Ы. Не скучайте - я еще напостю как-нибудь(видимо очень скоро) :D

eXRay
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 09.05.2004 (Вс) 0:58
Откуда: Россия, Москва

Сообщение eXRay » 01.06.2004 (Вт) 12:42

И все-таки, как из листбокса удалить лишнее? Очень надо...

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 01.06.2004 (Вт) 13:10

если правильно помню
тип источника сток - таблица или запрос
источник строк нажимаешь "..." и выбираешь нужный тебе запрос в котором написано select distinct ...
Ничто так не ограничивает полёт мысли программиста, как компилятор

eXRay
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 09.05.2004 (Вс) 0:58
Откуда: Россия, Москва

Сообщение eXRay » 01.06.2004 (Вт) 23:26

добился я того чего хотел.... :)

по-другому не знаю как: дистинктом выбирал все записи, потом кидал их в массив и из него уже удалял лишнее...

вот! пасиба всем за помощь! ;)


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 112

    TopList