powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / сохранить лучшее... не получается
3 сообщений из 3, страница 1 из 1
сохранить лучшее... не получается
    #32510546
Вопрос знатокам :)

Пишу на VBA модуль класса в Access. В классе объявляются переменные:
Код: plaintext
1.
2.
' класс Mill
Public pack As New Collection
Private bestpack As Collection

В состав pack входят экземпляры класса UnedgedBoard, в состав которых также входит объект типа Collection, который во время исполнения набивается экземплярами классa EdgedBoard:
Код: plaintext
1.
' класс UnedgedBoard
Public EdgedBoards As New Collection

Вот после того как pack укомплектован, если его коэффициент больше максимального (if Coeff >MacCoeff), то надо его сохранить в bestpack, и присвоить MaxCoeff = Coeff.

Если просто написать bestpack = pack, то затем, если изменяю pack, изменяется и bestpack. Я так понимаю, что bestpack - это указатель на pack. A как мне его перекопировать со всем содержимым.

Я попробовал такой вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
'класс Mill
Public Sub FixThisMill()
    Set bestpack = New Collection
    For i =  1  To pack.Count
        bestpack.Add pack(i)
    Next i
End Sub

Получилось, но лишь частично, потому, что не перекопировалось содержимое коллекций pack(i).EdgedBoards. Они в bestpack ничего не содержат. Как же быть?

С уважением,
Геннадий
...
Рейтинг: 0 / 0
сохранить лучшее... не получается
    #32510651
Фотография schakh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объявляется метод
Class UnedgedBoard

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public sub CopyValues(oSource as UnedgedBoard)
  Dim EdgedBoard AS Object ' тип данных, который хранится в коллекции
                                      '  если тип простой то Variant
  
  For each EdgedBoard in Me.EdgedBoards
       oSource.EdgedBoards.Add EdgedBoard
  next EdgedBoard

end sub

и снаружи сожно писать так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub FixThisMill()
    Dim vntPack as Variant
    Dim oUnedgedBoard as UnedgedBoard
    Set bestpack = New Collection
    
    For i =  1  To pack.Count
        Set oUnedgedBoard = New UnedgedBoard
        oUnedgedBoard.CopyValues(pack(i))
        bestpack.Add oUnedgedBoard
    Next i
End Sub

Это я на ходу написал, но что-то в этом роде идею надеюсь смог донести
...
Рейтинг: 0 / 0
сохранить лучшее... не получается
    #32510663
Фотография schakh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Звиняйте попутал тут

Код: plaintext
1.
2.
3.
'CopyValues
  For each EdgedBoard in oSource.EdgedBoards
       Me.EdgedBoards.Add EdgedBoard
  next EdgedBoard
наоборот :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / сохранить лучшее... не получается
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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