powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / пятизначный счетчик (00001)
23 сообщений из 23, страница 1 из 1
пятизначный счетчик (00001)
    #33458934
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
че-то я наверное туплю... но не могу придумать как такой счетчик реализовать
нумерация нажна 00001, 00002....
все это нужно записывать в базу(!!!)
1. вопрос какой тип поля должно иметь мое поле?
2. 00001... 00009.... 00049 и так пока не будет 99999, потом опять начинать с 00001
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33459044
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если именно в таком выражении, то
Код: plaintext
VARCHAR( 5 )
только в этом случае придется писать свои ф-ции изменения счетчика
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33459054
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя можно и как
Код: plaintext
INT
но ф-цию все одно писать самому, чтоб на 99999 сбрасывало в 0
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33459619
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если например пока без сброса на 0 после 99999 много кода писать? хотя бы как начть?
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33459796
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В смысле все записи обнавить на 0 или последующие после 99999
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33459858
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, после 99999 должно снова начаться 00001
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33459901
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лучший способ использовать функцию Max() в SQL



создать рекордсет с запросом
"Select max(счетчик) from table"
если возврат рекордсета >= 99999 тогда

вводть новый с номером 000001
и при каждом вводе нового значения проверять по максу
если возврат рекордсета >= 99999 тогда
новый = 000001
иначе
присидание до 999999(шутка)
конецфильма
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33459956
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мах в SQL я и хотел использовать, но как он будет выбирать если тип поля будет текстовый?? По крайней мере он мне ошибку говорит :(
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33459997
Так попробуй.

Код: plaintext
1.
SELECT Max(Val([Столбец1]))
FROM Таблица1
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33460006
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуй
Max(Clng(счетчик))


или так
"Select * from table where счетчик='999999'"
если есть возврат то меняем оцифровку
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33460037
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadyмах в SQL я и хотел использовать, но как он будет выбирать если тип поля будет текстовый?? По крайней мере он мне ошибку говорит :(

if len(a) = 1 then a = "0000" & a
if len(a) = 2 then a = "000" & a
if len(a) = 3 then a = "00" & a
if len(a) = 4 then a = "0" & a

создать рекордсет с запросом
"Select max(счетчик) from table"

if len(a) = 5 and val(a) > 99999 then a = "00001"
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33460091
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Set rs_num = New ADODB.Recordset
      rs_num.Open "select max(Clng(npos)) from users", conn
    
       s = rs_num("").Value
    If s =  99999  Then n =  1  Else n = s
    
    Text5.Text = rs_num("").Value
ошибка вываливается... неудается найти объект в семействе, соответствующий имени или требуемому имени или порядковому номеру

на вот этом
Код: plaintext
s = rs_num("").Value
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33460222
Правильно, что вываливается, имя кто указывать будет?

Код: plaintext
1.
2.
    rs_num.Open "select max(Clng(npos)) As MaxPos from users", conn
    
    s = rs_num!MaxPos
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33460950
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не ребят, так дело не пойдет
что вы будете делать, когда счетчик на второй круг перекинется, по MAX() искать значение? тогда при достижении "99999" все новый записи будут с номером "0"

надо еще одно поле вводить типа timestamp и от него уже плясать
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461111
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я пока придумал так реализовать счетчик (по предложению vkodor )
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 
Set rs_num = New ADODB.Recordset
        rs_num.Open "select max(Clng(npos)) As MaxPos from users", conn
    
    s = rs_num!MaxPos
    
    Select Case s
        Case Len(s) =  1 
        Text5.Text = "00000" & s +  1 
        Case Len(s) =  2 
        Text5.Text = "000" & s +  1 
        Case Len(s) =  3 
        Text5.Text = "00" & s +  1 
        Case Len(s) =  4 
        Text5.Text = "0" & s +  1 
        Case Len(s) =  5 
        Text5.Text = s +  1 
    End Select
но вот только не понимаю почему в текстбоксе не отображается 00001, хотя в базе поле я сделал числовое, длинна его макс. значения 1 знак, но почему-то не подставляется :( и ошибки ни какой не пишет
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461150
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadyя пока придумал так реализовать счетчик (по предложению vkodor )
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 
Set rs_num = New ADODB.Recordset
        rs_num.Open "select max(Clng(npos)) As MaxPos from users", conn
    
    s = rs_num!MaxPos
    
    Select Case s
        Case Len(s) =  1 
        Text5.Text = "00000" & s +  1  'помойму нолик лишний
        Case Len(s) =  2 
        Text5.Text = "000" & s +  1 
        Case Len(s) =  3 
        Text5.Text = "00" & s +  1 
        Case Len(s) =  4 
        Text5.Text = "0" & s +  1 
        Case Len(s) =  5 
        Text5.Text = s +  1 
    End Select
но вот только не понимаю почему в текстбоксе не отображается 00001, хотя в базе поле я сделал числовое, длинна его макс. значения 1 знак, но почему-то не подставляется :( и ошибки ни какой не пишет
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461188
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, нолик действоительно лишний, но сути дела это не меняет. ТекстБокс пустой...
Код: plaintext
Text5.Text = s +  1 
так вот пишет все правильно, 3 (т.к. в базе макс. значение 2), но почему отказывается прибавлять четыре нуля перед тройкой?
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461273
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может поможет привести к текстовому типу ?
Код: plaintext
"0000" & CSTR(s +  1 )
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461307
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:( не помогает :(
странно даже как-то... длинну-то строки определяет.
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461316
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
че-то я протупил... вот ведь как нужно было :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 Select Case Len(numpos)
        Case  1 
        num = "0000" & CStr(numpos +  1 )
        Case  2 
        num = "000" & CStr(numpos +  1 )
        Case  3 
        num = "00" & CStr(numpos +  1 )
        Case  4 
        num = "0" & CStr(numpos +  1 )
        Case  5 
        num = CStr(numpos +  1 )
    End Select
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461333
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadyда, нолик действоительно лишний, но сути дела это не меняет. ТекстБокс пустой...
Код: plaintext
Text5.Text = s +  1 
так вот пишет все правильно, 3 (т.к. в базе макс. значение 2), но почему отказывается прибавлять четыре нуля перед тройкой?

1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Set rs_num = New ADODB.Recordset
        rs_num.Open "select max(Clng(npos)) As MaxPos from users", conn
    
    s = rs_num!MaxPos +  1 
    
    Select Case s
        Case Len(s) =  1 
        Text5.Text = "00000" & s
        Case Len(s) =  2 
        Text5.Text = "000" & s
        Case Len(s) =  3 
        Text5.Text = "00" & s 
        Case Len(s) =  4 
        Text5.Text = "0" & s 
        Case Len(s) =  5 
        Text5.Text = s 
    End Select
2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Set rs_num = New ADODB.Recordset
        rs_num.Open "select max(Clng(npos)) As MaxPos from users", conn
    
    s = rs_num!MaxPos +  1 
    
    Select Case s
        Case Len(s) =  1 
        Text5.Text = "00000" + s
        Case Len(s) =  2 
        Text5.Text = "000" + s
        Case Len(s) =  3 
        Text5.Text = "00" + s 
        Case Len(s) =  4 
        Text5.Text = "0" + s 
        Case Len(s) =  5 
        Text5.Text = s 
    End Select
3
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Set rs_num = New ADODB.Recordset
        rs_num.Open "select max(Clng(npos)) As MaxPos from users", conn
    
    s = rs_num!MaxPos +  1 
    
    Select Case s
        Case Len(s) =  1 
        Text5.Value = "00000" + s
        Case Len(s) =  2 
        Text5.Value = "000" + s
        Case Len(s) =  3 
        Text5.Value = "00" + s 
        Case Len(s) =  4 
        Text5.Value = "0" + s 
        Case Len(s) =  5 
        Text5.Value = s 
    End Select
пробуй разные варианты
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461575
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно попроще нолики вставлять
возврат максимума числовой так что можно сделать так
Format(455, "00000")
возврат 00455
s = rs_num!MaxPos + 1
если условия для того чтобы вводить нолики но можно без условий и по проще
D=Format(s, "00000")
где "00000" количество требуемых символов а число s автоматом
заполнит нолики
...
Рейтинг: 0 / 0
пятизначный счетчик (00001)
    #33461609
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прикольный код, сейчас обязательно это запишу, чтобы не забыть. Спаибо
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / пятизначный счетчик (00001)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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