Есть две возможные причины для этого.Наиболее распространенным является то, что вы делаете это в операторе SQL с ORDER BY, и в этом случае поля memo усекаются до 255 символов.Однако это маловероятно, поскольку ваша функция возвращает строку длиной более 255 символов, так что это не должно быть проблемой.Действительно, один из способов обойти усечение 255 символов при наличии ORDER BY - это обернуть поле memo в функцию, подобную Left([MyMemoField], 4096)
.
Другая причина связана с конкатенацией полей memo.в этом случае MemoField1 & MemoField2
будет обрезано до 255 символов (и часто заканчивается тарабарщиной).Вы ничего не говорите о типах данных исходных полей, так что это маловероятно.
Итак, я в основном подозреваю вашу Coalsce()
функцию.Мое первое предположение состоит в том, что вы определили тип возвращаемого значения:
Public Function Coalsce()
..., который будет возвращать тип варианта, поскольку вы явно не указали тип возвращаемого значения.Итак, вы должны изменить это на это:
Public Function Coalsce() As String
Однако, возможно, вы решили, что хотите вернуть Null, когда все поля имеют значение Null, и в этом случае вам придется объявитьтип возвращаемого значения в качестве Variant:
Public Function Coalsce() As Variant
Мне кажется, что это плохая практика, поскольку с вариантами сложно иметь дело.
Это также может быть проблемой ByRef / ByVal.Вы действительно хотите, чтобы вещи обрабатывались ByVal в этом случае, поскольку именно ситуация ByRef приводит к проблеме конкатенации памятных полей (а ByVal избегает этого).
Все, что сказано, мне интересно, почему в миреВы не можете просто объединить поля в своем операторе SQL, вместо того, чтобы нуждаться в функции, чтобы сделать это.
Кроме того, возвращенные данные, которые вы храните в поле memo, вызывают у меня что-то вроде реакции WTF- похоже, что вы храните дубликаты данных в формате, который практически невозможно использовать.
Так что, в основном, без более подробной информации о том, что вы делаете, как вы это делаете и почемувы делаете это, никто не может ответить на ваш вопрос.