У меня есть коллекция (employees
) сотрудника, которая содержит name
, id
, office
и officeto
полей. Мне нужно распечатать эту информацию в одинаково разнесенных столбцах. Поэтому мне нужно найти длину самого длинного имени строки, офиса, officeto ... и добавить пробелы, чтобы сделать столбцы равномерно распределенными.
Я знаю, как это сделать, используя набор записей, отправляющий имена полей в функцию. Итак, мой вопрос ... Можно ли ссылаться на свойство класса (имя, офис, officeto) с помощью переменной (похоже на rst! [Fieldname]). Я попытался настроить его так, как будто это был цикл набора записей в поле, но он не компилируется. Ошибка class.property не определена.Обратитесь к свойству класса с помощью переменной?
Public Function PropertyLen(ByVal Property As String, ByRef Employees As colEmployees) As Integer
'This function uses a passed in class property, and returns the len of the longest class property in collection
On Error GoTo ErrorHandler:
Dim Emp As clsEmployee
Dim intLen As Integer
Dim lngCount As Long
For lngCount = 1 To Employees.Count
Set Emp = Employees.Item(lngCount)
If Len(Trim(Emp.Property)) > intLen Then
intLen = Len(Trim(Emp.Property))
End If
Set Emp = Nothing
Next
FieldLen = intLen
ExitFunc:
'clean up
Set Emp = Nothing
Exit Function
ErrorHandler:
modErrorHandler.DisplayUnexpectedError Err.Number, Err.Description
Resume ExitFunc
End Function
ИМО, которого вы намереваетесь достичь, - это, скажем, чрезмерная гибкость кода. Вы можете поместить постоянную длину, так как имена свойств класса на самом деле также жестко запрограммированы и не могут быть изменены во время выполнения (в отличие от упомянутого вами набора записей). Затем, если вы измените свойства класса, вам нужно изменить данные длины. В качестве альтернативы - в случае, когда свойства нужно менять динамически, лучшим решением является использование словарного объекта вместо класса, оно имеет свойства '.Keys()' и '.Items()', которые возвращают имя ключей и значения элементов в массивах соответственно. – omegastripes
Omegastripes .. Я просто хочу уточнить .. В моем случае у меня есть коллекция сотрудников с свойством name. Я просто хочу найти самое длинное имя из всех сотрудников. Мне также нужно будет найти самое длинное имя офиса. –
Я не пытаюсь изменить имя свойства. Я просто хотел t –