Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > автоматизация ввода и учета. или одно из 8


Автор: Partizanen 1.2.2006, 21:32
smile Хелп Вам существам из параллельного мира цифр и пр. Обращается с призывом спасти обыкновенный людь с планеты Земля. Вопрос - как автоматизировать учет номерных бланков, вводя их не отдельными номерами а диапазоном с № по №, при том что расход осуществляется не строго по порядку? Блин, я думаю что моя проблема не смертельна? Или как smile

Автор: Papirus 2.2.2006, 09:30
http://www.sql.ru/forum/actualthread.aspx?tid=225295&hl=%e1%eb%e0%ed%ea%e8

Автор: Akina 2.2.2006, 11:47
А в чем проблема?

Структура таблицы:

ID (уникальный ИД записи)
Nstart (начальный номер диапазона)
Nend (конечный номер диапазона)
DT (дата-время выделения бланков)
Rem (дополнительные данные)

Если вдруг выдается 1 бланк - то Nstart = Nend


Автор: Partizanen 9.3.2006, 20:24
Загвоздка вот в чем - допустим я получил три пачки бланков одной серии с номерами с 1 по 1000, с 1001 по 2000 и с 4001 по 6000. Если с первыми двумя пачками понятно - номерной диапазон не прерывается все чики пики, то третья пачка идет с пропуском!!!! Каким образом сделать так чтоб на остатке отображались два интеравала с 1 по 2000 и с 4001 по 6000??????? И такого будет очень и очень много.
Очень прошу ПОМОГИТЕ smile

Заранее всем откликнувшимся - много счестья в дом smile smile

Автор: Papirus 10.3.2006, 09:45
вариант:
Делаешь таблицу как сказал Акина, а к ней дополнительную для учета расхода, в которой сразу после ввода данных в таблицу Акины вставляшь уже развернутые номера документов.
Таблица T2:
ID (FK - с таблицей Акины)
NumDoc (номер документа)
Used (логическое - использован)
DateUsed (дата использования, если надо)
UserID (кто использовал)

Как развернуть - думаю вариантов может быть несколько. Вот один из них:
После вставки данных в таблицу Акины узнаем ID новой записи, диапазон номеров бланков и заряжаем цикл.
Например:
Код

Dim I As Long

For I = 4001 To 6000
     CurrentDB.Execute "Insert Into T2 (ID, NumDoc) Values(" & Forms!MyForm.txtBlankID & ", " & I & ")"
Next I


Автор: Akina 10.3.2006, 10:31
Цитата(Partizanen @ 9.3.2006, 21:24 Найти цитируемый пост)
Каким образом сделать так чтоб на остатке отображались два интеравала с 1 по 2000 и с 4001 по 6000??????? И такого будет очень и очень много.

Очень просто. Структура хранения выше уже описана. А для получения результатов ее нужно программно обработать и сделать слияние соседствующих поддиапазонов.

Примечание: категорически не советую делать этого в исходной таблице хранения. Из-за потери данных о дате-времени выдачи пачки и фамилии ответственного.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)