powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как прибавить 1, не меняя формат числа?
12 сообщений из 12, страница 1 из 1
как прибавить 1, не меняя формат числа?
    #39246339
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте! Подскажите, пожалуйста, у меня серийные номера у изделий имеют маску ####-ТК. По факту серийники бывают, к примеру такими: 1245-ТК, 243-ТК, 023-ТК и 005-ТК. И всё бы хорошо, но я сделал формулу, которая при выборе из списка изделия - предлагает для него серийник, учитывая какой старший серийник у этого изделия был и прибавляет к нему 1.
В случае с 1245-ТК, 243-ТК - всё ОК (1246-ТК и 244-ТК). Но в случае с 023-ТК и 005-ТК - они превращаются в 24-ТК и 6-ТК.
Т.Е. маска слетает((
Подскажите, как накинуть 1, не сбрасывая формат числа?
Спасибо!
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39246344
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отделить числовую часть в строковом формате, прибавить 1, конвертировать в строку, добавить недостающее количество нулей, довесить не-числовую часть.
Проще всего написАть пользовательскую функцию.
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39246666
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
не понимаю, как это сделать( Никогда не пользовался такими функциями и не ясно сколько нулей добавлять в зависимости от исходного серийника((
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39246685
\\\\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Public Function counter(vVal As Variant, Optional Delimiter As String = "-") As Variant
Dim vArray As Variant
Dim lngMask As Long, i As Long
On Error Resume Next
counter = Null
    If IsEmpty(vVal) Or IsNull(vVal) Then Exit Function
    If VarType(vVal) = vbString Then
            If Len(vVal) = 0 Then Exit Function
        vArray = Split(vVal, Delimiter)
            Do
                    If IsNumeric(vArray(i)) Then
                        lngMask = Len(vArray(i))
                        vArray(i) = Format$(Val(vArray(i)) + 1, String(lngMask, "0"))
                    End If
                i = i + 1
            Loop Until (UBound(vArray) + 1) = i
        counter = Join(vArray, Delimiter)
        Erase vArray
    Else
        counter = vVal
    End If
End Function


?counter("005-ТК")
006-ТК
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39246981
Rikozenit как прибавить 1, не меняя формат числа?
...
у меня серийные номера у изделий имеют маску ####-ТК .
...
Т.Е. маска слетает((
Подскажите, как накинуть 1, не сбрасывая формат числа?
Спасибо! Так у вас проблемы с маской или форматом? Поле в таблице числовое или текстовое?
Для числового поля формат #000"-ТК" будет отображать значение правильно.
Если значение текстовое, то:
Код: vbnet
1.
2.
3.
4.
?Format(Val("005-ТК")+1,"000") & "-ТК"
006-ТК
?Format(Val("1005-ТК")+1,"000") & "-ТК"
1006-ТК
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39247145
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),
Формат поля в таблице - "Текстовое". (С числовым пробовал - он нули убирает напрочь)
Сейчас у меня маска ввода ####"-АК".

Поэтому воспользовался Вашим п.2
Код: sql
1.
Format(Val("005-ТК")+1,"000") & "-ТК"

, но запрос ругается( Что я не так сделал?
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39247181
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rikozenit,
так зто макрос? (по какому событию он выполняется?)
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39247191
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

ну это скорее просто источник строк для поля Серийный номер. ( то бишь запрос)
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39247254
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),

Сработало!!! Спасибо большое!!! не хотело работать похоже из-за запятой! Заменил на ; и всё ОК!!
Также убрал &"ТК" - ибо потом маска не принимала такой формат!

И вот итоговая формула:
Код: sql
1.
серийник: Max(Format(Val([серийный_№])+1;"000"))
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39247340
RikozenitФормат поля в таблице - "Текстовое"
А вы в курсе, что в этом случае "243-ТК" больше "1245-ТК"?
RikozenitС числовым пробовал - он нули убирает напрочь
Ну это исправляется указанием 000"-ТК" в св-ве "Формат" таблицы/запроса/формы/отчета.
И маска не нужна.
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39248301
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),
авторА вы в курсе, что в этом случае "243-ТК" больше "1245-ТК"?
Вы имеете в виду в случае сортировки?

авторНу это исправляется указанием 000"-ТК" в св-ве "Формат" таблицы/запроса/формы/отчета.
И маска не нужна.
Сейчас попробую переделать! Спасибо большое)))
...
Рейтинг: 0 / 0
как прибавить 1, не меняя формат числа?
    #39248592
Фотография гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rikozenit,
автор
Код: plaintext
серийные номера у изделий имеют маску ####-ТК. По факту серийники бывают, к примеру такими: 1245-ТК, 243-ТК, 023-ТК и 005-ТК

Можно без всяких функций попробовать поизголяться: величина текстового поля - 6 знаков, направление чтение - по-еврейски (арабски), справа налево + маска какая-н нехитрая...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как прибавить 1, не меняя формат числа?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]