Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Как убрать лишние нули из текстового поля?  [new]
archangel1408
Member

Откуда:
Сообщений: 2
Здравствуйте. Есть таблица в Access, в которой указаны номера кадастровых участков в формате "область:район:квартал:номер", например: 57:14:0050102:0012. Задача в том, чтобы автоматически убирать лишние нули после двоеточия:
57:14:0050102:012 -> 57:14:50102:12
57:14:0000000:135 -> 57:14:0:135 и т.д.
Проблема в том, что количество нулей может быть разным. Каким образом можно решить задачу в Access? До этого разбивали столбец по ":" в Excel, получалось что-то вроде 57|14|0|135 и уже в отдельном столбце формулой сцепляли значения, такой вариант в Access'e в принципе тоже бы устроил, но как реализовать это я не знаю. Заранее спасибо за советы.
19 июн 19, 10:36    [21911281]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6002
archangel1408,
?replace("57:14:0050102:012","0","")
57:14:512:12
19 июн 19, 10:54    [21911301]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
archangel1408
Member

Откуда:
Сообщений: 2
sdku,
не вариант, удалить нужно нули до первой цифры, которая больше нуля, здесь, например, номер квартала - 50102 (57:14:0050102:012)
19 июн 19, 11:13    [21911318]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1512
Public Function cutOf(strCode As String) As String
    Dim arrNumbers() As String
    Dim i As Long
    arrNumbers = Split(strCode, ":")
    For i = LBound(arrNumbers) To UBound(arrNumbers)
        arrNumbers(i) = Val(arrNumbers(i))
    Next i
    cutOf = Join(arrNumbers, ":")
End Function


?cutOf("57:14:0050102:012")
57:14:50102:12
19 июн 19, 11:15    [21911321]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
Чотакакта
Member

Откуда:
Сообщений: 89
sdku
archangel1408,
?replace("57:14:0050102:012","0","")
57:14:512:12
Топикстартеру нужно убирать только лидирующие нули, а ваш вариант убирает все, посему решение не подходит(

archangel1408,
вам нужно разбирать строку на составляющие (используя символ двоеточия в качестве разделителя отдельных строк), затем отдельные кусочки строк-цифр приводить к числу, после чего из чисел собирать строку обратно уже без лидирующих нулей.. Задача не сложная, но как мне видится простой одной-двумя командами не обойтись, нужно делать цикл
19 июн 19, 11:18    [21911326]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
Чотакакта
Member

Откуда:
Сообщений: 89
какие тут шустрые отвечающие.. или я медленный)
сорри, в общем
19 июн 19, 11:19    [21911329]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6002
если убрать "0" в начале группы и писать "0" если вся группа (цифры между ":") из "0" то так:
Function my(myTxt)
Dim myAr, i, str
myAr = Split(myTxt, ":")
For i = 0 To UBound(Split(myTxt, ":"))
       If myAr(i) = 0 Then
                    str = str & ":0"
            Else
                    str = str & ":" & Val(myAr(i))
      End If
Next
my = Mid(str, 2)
End Function
?my("57:14:0050102:012")
57:14:50102:12
?my("57:14:0000000:135")
57:14:0:135
19 июн 19, 11:26    [21911339]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 519
archangel1408,
Public Function cutOf(strCode$) As String
const delimit$=":"
    Dim arrNumbers() As String
    Dim i As Long
    arrNumbers = Split(strCode, delimit)
    For i =0 To UBound(arrNumbers)
If arrNumbers(i)<>"" then
        arrNumbers(i) = CLng((arrNumbers(i)))
else
arrNumbers(i) ="0"
end if
    Next i
    cutOf = Join(arrNumbers, delimit)
End Function
?cutOf("57:14:0050102:012")
57:14:50102:12
19 июн 19, 15:21    [21911612]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4290
Что-то никто не вспомнил про регулярные выражения...
Public Function RemoveLeadingZero(strExpression As String) As String
Dim objRegExp As Object
On Error Resume Next
   
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
objRegExp.Pattern = "(?=:|\b)0+(?!:|$)"
RemoveLeadingZero = objRegExp.Replace(strExpression, vbNullString)
Set objRegExp = Nothing
End Function

Как-то так...
20 июн 19, 04:35    [21911948]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6002
Панург,
Не просто не вспомнил,а даже не знал-порекомендуй что почитать и вообще это стоящее дело?
20 июн 19, 14:11    [21912238]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
DarkMan
Member

Откуда:
Сообщений: 516
sdku
Панург,
Не просто не вспомнил,а даже не знал-порекомендуй что почитать и вообще это стоящее дело?

Регулярные выражения

P.S В инете можно скачать электронную версию на халяву. :))
20 июн 19, 14:30    [21912259]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать лишние нули из текстового поля?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4290
sdku, ну про книжки написали уже, Можно в сети посмотреть ресурсы - Объект RegExp
sdku
вообще это стоящее дело?
Ну а как же!
20 июн 19, 15:07    [21912289]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить