почему Val (oldP) получает 1, когда oldP = "32"? - PullRequest
2 голосов
/ 27 августа 2010

у меня есть старая строка, скажем oldString="abc-2" я хочу изменить ее на "abc-3" так что я сделал это

myArray = Split(oldString, "-")
oldP = myArray(UBound(myArray))
myArray(UBound(myArray))= Str(val(oldP) + 1)
newString=join(myArray,"-")

почему я получаю неправильный номер ?? и если я пытаюсь использовать Cint(), то я получаю сообщение об ошибке.

пожалуйста, помогите ...

только что нашел реальную проблему. Я случайно изменил свой режим ввода и поместил «Двухбайтовый» номер 2 в то же поле, где я получил свою старую строку другой записи. И после этого CInt распознает мою старую строку как неправильный тип. Кажется, что ms-Access неявно изменил кодировку этого поля, так что Cint не знает, что делать, и Val получает неправильное значение. Они должны были сделать Textfield в Access, функции String независимыми от кодировки или использовать UTF-8. По крайней мере, он должен предупредить меня, когда он изменит кодировку этого текстового поля. Может быть, я должен сообщить об этом MS?

1 Ответ

0 голосов
/ 27 августа 2010

Если ваша совместная функция работает хорошо, все должно быть хорошо.Вы можете попробовать следующее:

Откройте VBA в Access, а затем откройте свое окно Immediate (View-> Immediate window). Затем выполните эти строки один за другим и опубликуйте результаты.

oldString="abc-2"
myArray = Split(oldString, "-")
oldP = myArray(UBound(myArray))
?oldP

Это должно вызвать 2 в качестве ответа на? OldP

myArray(UBound(myArray))= Str(val(oldP) + 1) 
?myArray(1)

Это должно подсказать 3

newString=joint(myArray,"-")
?newString

Это должно подсказать "А-3"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...