Во-первых, GetField(oDS, "mCCNumber")
разыменовывается 3 раза только в этих двух строках - перетащите его в свою локальную переменную:
Dim ccNumberField As Field
Set ccNumberField = GetField(oDS, "mCCNumber")
На самом деле нас больше интересует содержимое поля.Ваш код делает неявный член по умолчанию , вызывающий объект Field
, но свойство Field
по умолчанию - это Code
:
Код поля - это все, что заключено в символы поля ({ }
), включая символы начального и конечного пробела.
Это означает, что строка, с которой вы работаете, длиннее, чем ожидает ваш код.Я думаю, что вас больше заинтересует Text
из Result
поля:
Dim ccNumberFieldValue As String
ccNumberFiedValue = ccNumberField.Result.Text
If ccNumberFieldValue <> "" Then
'...
Теперь ccNumberFieldValue
должно содержать фактическое содержимое поля.Я не на 100% ясно из ОП, что именно он содержит.Итак, я собираюсь предположить один из таких:
- Последние 4 цифры:
**** **** **** 1234
- Последние 3 цифры:
**** **** **** *234
- Вупси, все 16 цифр:
1234 1234 1234 1234
Итак, первое, что нужно сделать, это взять последние 4;Right$
делает это:
sCCNumber = Right$(ccNumberFiedValue, 4)
Это оставляет нам либо:
Оттуда вы можете использовать IsNumeric
, чтобы определить, является ли вся подстрока числовой (при условии, что есть нечисловой символ заполнения) - если это не так, то вы знаете, что смотрите на трехсимвольный вариант:
If Not IsNumeric(sCCNumber) Then sCCNumber = Right$(sCCNumber, 3)