powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / О повторяющихся значениях
15 сообщений из 15, страница 1 из 1
О повторяющихся значениях
    #32282200
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть функция для заполнения Rowsource поля со списком:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Sub List(frm As Form, Ctrl As Control, i As Long)

    Dim rs As DAO.Recordset
    Dim Str As String
    Dim strSQL As String
     
    Set rs = frm.RecordsetClone
    Str =  "" "  - третья кавычка отсутствует :)
    If rs.RecordCount <>  0  Then
        rs.MoveFirst
        Do Until rs.EOF
            Str = Str & rs.Fields(i).Value &  "; " 
            rs.MoveNext
        Loop
            Ctrl.RowSource = Str
        rs.Close
    End If

End Sub

Rowcource, что естесственно, заполняется всеми значениями из соответствующего поля. Но в этом поле слишком много повторяющихся значений. Как мне это исправить???
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282223
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самый простой способ:

рекордсету сказать, чтобы он был DISTINCT или GROUP BY

- получишь уникальный набор.

способ сложнее:

брать в МАССИВ, потом сортировать, затем проходить по массиву, вытирать повторы
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282232
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рекордсет - это ЛОГ, т.е там все нужно :)

А вот как работать с массивом я понятия не имею :)
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282238
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запонять Rowsource
таким способом
не советую - ограничение
по длинне.
лучше подсунь
рекордсет или запрос
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282246
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)Для проверки уникальности можно использовать класс Scripting.Dictionary
2)RowSource в виде строки ограничен 2048 символами.
3)Использовать в качестве имени переменной Str имя функции не очень удачное решение
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282260
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хам трамвайный
Согласен :)
Но:
1) Нихрена у меня не получилось такой запрос сделать, что выбирал отображающиеся в подчиненной форме записи
2) если значения не будут повторяться, то до ограничения по длине я не доберуусь :)
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282268
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PA
Первое не понял
Второе знаю
С третьим согласен
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282275
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
работать с массивом просто

в заголовке процедурки

dim myArray()

когда получишь длину своего рекорсета

ReDim myArray(длина)

а потом НЕ STR$() =

!!! ЭТО ФУНКЦИЯ, народ праильно взмущается!!!!


а
i=i+1
myArray(i)=данные


А вот после заполнения будешь дого радоваться.

в частности по поводу сортировки - очень долго вб ее будет делать если данных много

и алгоритм искать нужно

рекомендую пузырьковую если найдешь
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282281
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подсунь полю со списком
то же выражение, что
и форме, но только добавь
distinct и убери лишние
столбцы
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282297
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хам трамвайный
Интересно о чем я думал, когда пытался сделать такой запрос :)
Спасибо!
Но все же я лучше с массивами по играю - писанины меньше :)
Уже доделал почти
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282336
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эт ты здря. щаз будешь сортировать да копии ловить.
Легче было повесить подч форму на запрос,
а на него (запрос) навесить новый с дистинкт - и получил бы что нада.

кстати, глянь правда есь ли в вба спец коллекции "словарь"
(dictionary) - они не дают ввести одинаковые элементы,
избавишься сразу и от массивов и от соритовки-отлова повторов.
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282470
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexus12
Насчет запросов скажу только, что НЕ ПОКАТИТ стопудово. От объяснений воздержусь.

По поводу Dictionary
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Public Sub List(frm As Form, Ctrl As Control, i As Long)

    Dim rs As DAO.Recordset
    Dim StrArr, StrRow, ArrRow
    Dim x As Integer

    Set StrArr = CreateObject( "Scripting.Dictionary" )
    Set rs = frm.RecordsetClone
    StrArr.removeall
    StrRow =  ""
    ArrRow = "  "
    x = 1 

    rs.MoveFirst
        Do Until rs.EOF
            x = x +  1 
            StrArr.Add x, rs.Fields(i).Value & "; "
            rs.MoveNext
        Loop
        
        ArrRow = StrArr.items
        For x =  0  To StrArr.Count -  1 
             StrRow = StrRow & ArrRow(x)
        Next
        Debug.Print StrRow
End Sub

Этот код вполне позволяет вводить одинаковые значения

С этим Dictionary у меня два вопроса:
1) где посмотреть его свойства
2) как сравнивать добавляемые значения с уже имеющимися в масиве?
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282573
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убедительно всех прошу проявить активность :)
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32282601
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня появился вариант и я никак не пойму почему он не работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Public Sub List(frm As Form, Ctrl As Control, i As Long)

    Dim rs As DAO.Recordset
    Dim StrArr, StrRow, ArrRow
    Dim X As Integer
    
    Set StrArr = CreateObject( "Scripting.Dictionary" )
    Set rs = frm.RecordsetClone
    StrArr.removeall
    StrRow =  ""
    ArrRow = "  " " 
    X =  0 

    rs.MoveFirst
        Do Until rs.EOF
            X = X +  1 
            StrArr.Add X, rs.Fields(i).Value &  "; " 
            rs.MoveNext
        Loop
        
        ArrRow = StrArr.Items

        rs.MoveFirst
        For X =  0  To StrArr.Count -  1  And rs.EOF
            If rs.Fields(i).Value &  "; "  = ArrRow(X) Then
                rs.MoveNext
            Else
                StrRow = StrRow & ArrRow(X)
                rs.MoveNext
            End If
        Next X
            
Debug.Print StrRow
End Sub

Debug.Print StrRow = ПУСТО :(
В чем тут дело??
...
Рейтинг: 0 / 0
О повторяющихся значениях
    #32283136
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> StrArr.Count - 1 And rs.EOF

На каком это языке??? Это логическое выражение, оно может дать в результате только или 0, или -1.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / О повторяющихся значениях
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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