Обойти отсутствие функции Left Trim (string, char []) в JET / Access - PullRequest
0 голосов
/ 08 июля 2010

Мне нужно удалить начальные нули из строкового поля в базе данных Access, которая уничтожается и воссоздается каждый раз, когда она используется в программе на C #.Большинство строковых библиотек (даже SQL) включают функцию Trim для удаления начальных или следующих пробелов.К сожалению, в Access нет LTrim (string s, char [] trimChars) или чего-то подобного.Чтобы обойти это, я придумал это чудовище:

Replace(LTrim(Replace(ADDRNO,'0',  ' ')),' ',  '0')

Но это привело к неопределенной ссылке на функцию для Replace, хотя это, очевидно, функция Access.

То, что я ищу, - это способ обрезать эти нули, либо с помощью механизма JET, позволяющего мне использовать функцию Replace, либо с помощью какого-либо другого метода полностью.Заменить функцию.Проблема все еще сохраняется.

Ответы [ 4 ]

3 голосов
/ 08 июля 2010

Я предлагаю

Val(ADDRNO)

Возвращает часть числа без начальных нулей.

0 голосов
/ 08 июля 2010

Я думаю, что это просто порядок ваших параметров, который является неправильным:

debug.? Replace("My string", "i", "o")   -> "My Strong"
0 голосов
/ 08 июля 2010

Вы можете использовать Trim и Replace.

0 голосов
/ 08 июля 2010

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

http://www.techonthenet.com/access/functions/string/replace.php

Replace(LTrim(Replace([ADDRNO], "0",  " "))," ", "0")

Если это приводит к той же ошибке, попробуйте выполнить функцию замены самостоятельно, чтобы сузить проблему:

Replace ("alphabet", "a", "e")

Если это работает, то вы знаете, что работает функция Заменить, и есть другая проблема.

Редактировать: если он вообще не работает, то Replace, скорее всего, является функцией VBA, доступной только в приложении Access, и не является частью Jet. Вы можете попробовать комбинацию функций Left / Right и разрезать строку вверх, это может быть довольно уродливо. Лично я просто перебрал бы набор записей и использовал бы код C # для изменения значений. Надеюсь, у вас нет такого большого количества записей, что это будет проблемой.

...