Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / пятизначный счетчик (00001) / 23 сообщений из 23, страница 1 из 1
27.12.2005, 11:08:29
    #33458934
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
че-то я наверное туплю... но не могу придумать как такой счетчик реализовать
нумерация нажна 00001, 00002....
все это нужно записывать в базу(!!!)
1. вопрос какой тип поля должно иметь мое поле?
2. 00001... 00009.... 00049 и так пока не будет 99999, потом опять начинать с 00001
...
Рейтинг: 0 / 0
27.12.2005, 11:50:57
    #33459044
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
если именно в таком выражении, то
Код: plaintext
VARCHAR( 5 )
только в этом случае придется писать свои ф-ции изменения счетчика
...
Рейтинг: 0 / 0
27.12.2005, 11:54:25
    #33459054
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
хотя можно и как
Код: plaintext
INT
но ф-цию все одно писать самому, чтоб на 99999 сбрасывало в 0
...
Рейтинг: 0 / 0
27.12.2005, 14:32:29
    #33459619
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
а если например пока без сброса на 0 после 99999 много кода писать? хотя бы как начть?
...
Рейтинг: 0 / 0
27.12.2005, 15:17:02
    #33459796
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
В смысле все записи обнавить на 0 или последующие после 99999
...
Рейтинг: 0 / 0
27.12.2005, 15:36:30
    #33459858
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
нет, после 99999 должно снова начаться 00001
...
Рейтинг: 0 / 0
27.12.2005, 15:54:07
    #33459901
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
лучший способ использовать функцию Max() в SQL



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

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

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


или так
"Select * from table where счетчик='999999'"
если есть возврат то меняем оцифровку
...
Рейтинг: 0 / 0
27.12.2005, 16:38:57
    #33460037
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
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
27.12.2005, 16:52:58
    #33460091
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
Код: 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
27.12.2005, 17:38:12
    #33460222
пятизначный счетчик (00001)
Правильно, что вываливается, имя кто указывать будет?

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

надо еще одно поле вводить типа timestamp и от него уже плясать
...
Рейтинг: 0 / 0
28.12.2005, 10:17:58
    #33461111
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
я пока придумал так реализовать счетчик (по предложению 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
28.12.2005, 10:30:47
    #33461150
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
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
28.12.2005, 10:42:53
    #33461188
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
да, нолик действоительно лишний, но сути дела это не меняет. ТекстБокс пустой...
Код: plaintext
Text5.Text = s +  1 
так вот пишет все правильно, 3 (т.к. в базе макс. значение 2), но почему отказывается прибавлять четыре нуля перед тройкой?
...
Рейтинг: 0 / 0
28.12.2005, 11:12:51
    #33461273
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
может поможет привести к текстовому типу ?
Код: plaintext
"0000" & CSTR(s +  1 )
...
Рейтинг: 0 / 0
28.12.2005, 11:21:21
    #33461307
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
:( не помогает :(
странно даже как-то... длинну-то строки определяет.
...
Рейтинг: 0 / 0
28.12.2005, 11:23:38
    #33461316
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
че-то я протупил... вот ведь как нужно было :)
Код: 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
28.12.2005, 11:27:55
    #33461333
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
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
28.12.2005, 12:23:44
    #33461575
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
можно попроще нолики вставлять
возврат максимума числовой так что можно сделать так
Format(455, "00000")
возврат 00455
s = rs_num!MaxPos + 1
если условия для того чтобы вводить нолики но можно без условий и по проще
D=Format(s, "00000")
где "00000" количество требуемых символов а число s автоматом
заполнит нолики
...
Рейтинг: 0 / 0
28.12.2005, 12:31:17
    #33461609
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пятизначный счетчик (00001)
Прикольный код, сейчас обязательно это запишу, чтобы не забыть. Спаибо
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / пятизначный счетчик (00001) / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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