Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как прибавить 1, не меняя формат числа? / 12 сообщений из 12, страница 1 из 1
30.05.2016, 16:19
    #39246339
Rikozenit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как прибавить 1, не меняя формат числа?
Здравствуйте! Подскажите, пожалуйста, у меня серийные номера у изделий имеют маску ####-ТК. По факту серийники бывают, к примеру такими: 1245-ТК, 243-ТК, 023-ТК и 005-ТК. И всё бы хорошо, но я сделал формулу, которая при выборе из списка изделия - предлагает для него серийник, учитывая какой старший серийник у этого изделия был и прибавляет к нему 1.
В случае с 1245-ТК, 243-ТК - всё ОК (1246-ТК и 244-ТК). Но в случае с 023-ТК и 005-ТК - они превращаются в 24-ТК и 6-ТК.
Т.Е. маска слетает((
Подскажите, как накинуть 1, не сбрасывая формат числа?
Спасибо!
...
Рейтинг: 0 / 0
30.05.2016, 16:26
    #39246344
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как прибавить 1, не меняя формат числа?
Отделить числовую часть в строковом формате, прибавить 1, конвертировать в строку, добавить недостающее количество нулей, довесить не-числовую часть.
Проще всего написАть пользовательскую функцию.
...
Рейтинг: 0 / 0
31.05.2016, 08:05
    #39246666
Rikozenit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как прибавить 1, не меняя формат числа?
Akina,
не понимаю, как это сделать( Никогда не пользовался такими функциями и не ясно сколько нулей добавлять в зависимости от исходного серийника((
...
Рейтинг: 0 / 0
31.05.2016, 08:44
    #39246685
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как прибавить 1, не меняя формат числа?
Код: 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
31.05.2016, 12:02
    #39246981
как прибавить 1, не меняя формат числа?
Rikozenit как прибавить 1, не меняя формат числа?
...
у меня серийные номера у изделий имеют маску ####-ТК .
...
Т.Е. маска слетает((
Подскажите, как накинуть 1, не сбрасывая формат числа?
Спасибо! Так у вас проблемы с маской или форматом? Поле в таблице числовое или текстовое?
Для числового поля формат #000"-ТК" будет отображать значение правильно.
Если значение текстовое, то:
Код: vbnet
1.
2.
3.
4.
?Format(Val("005-ТК")+1,"000") & "-ТК"
006-ТК
?Format(Val("1005-ТК")+1,"000") & "-ТК"
1006-ТК
...
Рейтинг: 0 / 0
31.05.2016, 13:35
    #39247145
Rikozenit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как прибавить 1, не меняя формат числа?
Анатолий ( Киев ),
Формат поля в таблице - "Текстовое". (С числовым пробовал - он нули убирает напрочь)
Сейчас у меня маска ввода ####"-АК".

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

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

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

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

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

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

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


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