изменить код кредитной карты - PullRequest
0 голосов
/ 01 марта 2019

У меня есть код VBA слияния почты:

If GetField(oDS, "mCCNumber") <> "" Then
    sCCNumber = Right(GetField(oDS, "mCCNumber"), Len(GetField(oDS, "mCCNumber")) - 12) 

, но теперь наши CC # - это всего 4 символа без токенов, но некоторые по-прежнему идут с 16 символами.

как мне изменить этот код, чтобы добавить «ИЛИ» 3 символа (некоторые из них 3, а другие 4).

Кроме того, я не могу закомментировать это, чтобы остановить эту часть

1 Ответ

0 голосов
/ 01 марта 2019

Во-первых, 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)

Это оставляет нам либо:

  • 1234
  • *234

Оттуда вы можете использовать IsNumeric, чтобы определить, является ли вся подстрока числовой (при условии, что есть нечисловой символ заполнения) - если это не так, то вы знаете, что смотрите на трехсимвольный вариант:

If Not IsNumeric(sCCNumber) Then sCCNumber = Right$(sCCNumber, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...