Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / сохранить лучшее... не получается / 3 сообщений из 3, страница 1 из 1
07.05.2004, 12:45
    #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
07.05.2004, 13:35
    #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
07.05.2004, 13:41
    #32510663
schakh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сохранить лучшее... не получается
Звиняйте попутал тут

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


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