powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ввод пакета чисел начинающихся с нуля
8 сообщений из 8, страница 1 из 1
Ввод пакета чисел начинающихся с нуля
    #37318538
Macro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Помогите решить следующую задачу.

Пользователь вводит пакет документов, у которых шестизначные номера (номера последовательные).
Я должен заполнить таблицу (дело происходит в Access) этими номерами.
То есть вводится номер первого док-та и последнего. Я циклом их перебираю и ввожу в таблицу.
Конечное поле текстовое (там сводится воедино серия и номер).
Ниже я упростил свой код, получается так:

Код: plaintext
1.
2.
For i = CLng(FirstNumberPutList) To CLng(LastNumberPutList)
    NewZap = CStr(i)
Next i

Но может быть так что номер начинается с 0.
И тогда нули при добавлении убираются.

Как бы обойти эту проблему?
Я с VB знаком недавно, может подскажите что использовать для этой цели?
Буду благодарен за помощь.
...
Рейтинг: 0 / 0
Ввод пакета чисел начинающихся с нуля
    #37318589
DUDALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Macro,

Можно попробовать так, но я не проверял
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
For i = CLng(FirstNumberPutList) To CLng(LastNumberPutList)
    If Len(i) =  5  Then
        NewZap = "0" & CStr(i)
    Else
        NewZap = CStr(i)
    End If
Next i
...
Рейтинг: 0 / 0
Ввод пакета чисел начинающихся с нуля
    #37318627
Macro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DUDALS, огромное спасибо за идею!

я только добавил в проверку длины перевод Лонга в Стринг (иначе неправильно считает длину)
и у меня задача усложнилась - номер может быть вплоть до "000000"

Вот такой код получился (складывается название серии, пробел и сам номер)

For i = CLng(FirstNumberPutList) To CLng(LastNumberPutList)

If Len(CStr(i)) = 5 Then
NewZap = NSeriyaPutList + " " + "0" + CStr(i)
ElseIf Len(CStr(i)) = 4 Then
NewZap = NSeriyaPutList + " " + "00" + CStr(i)
ElseIf Len(CStr(i)) = 3 Then
NewZap = NSeriyaPutList + " " + "000" + CStr(i)
ElseIf Len(CStr(i)) = 2 Then
NewZap = NSeriyaPutList + " " + "000" + CStr(i)
ElseIf Len(CStr(i)) = 1 And i <> 0 Then
NewZap = NSeriyaPutList + " " + "00000" + CStr(i)
ElseIf i = 0 Then
NewZap = NSeriyaPutList + " " + "000000"
End If

Next i


И простите за такой детский вопрос: чем знак + хуже или неправильнее чем &
Уж совсем я плох в VB )
...
Рейтинг: 0 / 0
Ввод пакета чисел начинающихся с нуля
    #37318635
DUDALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Macro,

1 + 2 = 3
...
Рейтинг: 0 / 0
Ввод пакета чисел начинающихся с нуля
    #37318640
DUDALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой. 1 + 3 = 4
1 & 3 = 13
...
Рейтинг: 0 / 0
Ввод пакета чисел начинающихся с нуля
    #37318649
DUDALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Macro,

Тогда уж лучше так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
For i = CLng(FirstNumberPutList) To CLng(LastNumberPutList)
    Select Case Len(CStr(i))
    Case  6 
        NewZap = NSeriyaPutList & " " & CStr(i)
    Case  5 
        NewZap = NSeriyaPutList & " " & "0" & CStr(i)
    Case  4 
        NewZap = NSeriyaPutList & " " & "00" & CStr(i)
    Case  3 
        NewZap = NSeriyaPutList & " " & "000" & CStr(i)
    Case  2 
        NewZap = NSeriyaPutList & " " & "000" & CStr(i)
    Case  1 
        NewZap = NSeriyaPutList & " " & "00000" & CStr(i)
    Case  0 
        NewZap = NSeriyaPutList & " " & "000000"
    End Select
Next i

...
Рейтинг: 0 / 0
Ввод пакета чисел начинающихся с нуля
    #37318661
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
Код: plaintext
1.
2.
3.
For i = CLng(FirstNumberPutList) To CLng(LastNumberPutList)
  NewZap = format(i, "000000")
Next i
а раз "дело происходит в Access" - то вообще было бы проще запросом это сделать
...
Рейтинг: 0 / 0
Ввод пакета чисел начинающихся с нуля
    #37318686
Macro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ё
Код: plaintext
1.
2.
3.
For i = CLng(FirstNumberPutList) To CLng(LastNumberPutList)
  NewZap = format(i, "000000")
Next i
а раз "дело происходит в Access" - то вообще было бы проще запросом это сделать

Да, этот код работает! Спасибо.

Я добавляю вот так (код нашел на форуме по аксесс):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  Dim i As Long, db As Database, rst As DAO.Recordset
  Set db = CurrentDb
  Set rst = db.OpenRecordset("Select NomerPutList From PUTEVIE_LISTY")
  i =  0 
  For i = CLng(FirstNumberPutList) To CLng(LastNumberPutList)
    rst.AddNew
    rst( 0 ) = NSeriyaPutList & " " & Format(i, "000000")   
    rst.Update
      
  Next i
  Set rst = Nothing

Может и лучше запросом, я не против, хотя и не оч. знаю как правильно, но в принципе и так быстро добавляются даже тысячи записей.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ввод пакета чисел начинающихся с нуля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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