Вверх ↑
Этот топик читают: Гость
Ответов: 9
Рейтинг: 0
#1: 2019-10-16 12:01:55 ЛС | профиль | цитата
Есть такая задача:

Необходимо собирать в базу данных данные для 3х полей. Назовем их условно:
1. Номер контракта
2. Серийный номер устройства
3. Номер отправного документа

Каждые эти 3 поля должны быть привязаны друг к другу.

Процесс сбора информации и вывода отчета происходит в два этапа:

1й этап:

Привязывается номер контракта к серийному номеру устройства.

2й этап:

К готовой связке контракт+серийник привязывается номер отправного документа

В итоге в базе должна быть связка по каждому устройству:
номер контракта+серийный номер+номер отправного документа.

Все данные сканируются сканером штрих-кода. Сканер подключен в разрыв клавиатуры по этому все данные вводятся аналогично вводу с клавиатуры. Есть возможность программировать их на ввод с ентером или без.
На втором этапе сканируется серийный номер устройства и программа должна найти запись в базе согласно этому серийному номеру и при следующем сканировании добавляет в базу номер отправного документа.
Так же программа должна проверять дубли сканированной информации.

По итогу работы необходимо сформировать отчет в виде файла csv,xls или др. разбитый на 3 колонки с собранными данными.

Из доп сложностей, вывод на печать стикера со штрих-кодом после сканирования серийного номера устройства.
карма: 0

0
Ответов: 8927
Рейтинг: 823
#2: 2019-10-16 12:30:21 ЛС | профиль | цитата
Ой, у меня тоже есть аналогичные задачи, правда на четыре и пять полей! Наверное в Excel надо сделать (только с силами собраться), там с печатью никаких сложностей
карма: 19

0
Ответов: 9
Рейтинг: 0
#3: 2019-10-16 13:04:58 ЛС | профиль | цитата
Та не, ексель не вариант это надо искать или писать макросы чтобы курсор скакал по клеткам после считывания данных.
Там макрос будет наверное весить больше чем программа собранная на хиазме
А по принтерам там тоже надо библиотеки подключать или драйвер а у меня термопринтера специальные для этикеток.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#4: 2019-10-16 22:01:41 ЛС | профиль | цитата
Dizzy, так ?
Мне ( почему-то ) кажется, что не хватает двух Дат.

Редактировалось 1 раз(а), последний 2019-10-16 22:04:25
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9
Рейтинг: 0
#5: 2019-10-17 10:23:58 ЛС | профиль | цитата
Tad, Спасибо!
Пытаюсь скомпилить выдает при отладке ошибки:


Compiling RichEdit.pas
kol.pas(5566,69) Warning: range check error while evaluating constants
kol.pas(5570,76) Warning: range check error while evaluating constants
kol.pas(6743,56) Warning: range check error while evaluating constants
kol.pas(6897,56) Warning: range check error while evaluating constants
kol.pas(10706,30) Warning: range check error while evaluating constants

Compiling C:\Program Files (x86)\HiAsm\Elements\delphi\code\hiCharset.pas
hiDS_SQLite.pas(192,4) Warning: Label not defined "error"
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#6: 2019-10-17 10:57:15 ЛС | профиль | цитата
Установи HiAsm не в C:\Program Files (x86)
Dizzy писал(а):
Пытаюсь скомпилить выдает при отладке ошибки:
"Warning" - это не ошибка. Это "Предупреждение"

Редактировалось 1 раз(а), последний 2019-10-17 11:02:36
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9
Рейтинг: 0
#7: 2019-10-17 11:19:14 ЛС | профиль | цитата
Tad,

Поставил в корень диска. Прога скомпилировалась но ничего не происходит. На клаву или сканер не реагирует.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#8: 2019-10-17 12:08:25 ЛС | профиль | цитата
Двойной клик ПКМ на таблице.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9
Рейтинг: 0
#9: 2019-10-17 13:03:32 ЛС | профиль | цитата
Tad,

Да есть такое...но.. там процедура такая что кликать не вариант... необходим захват сразу ввода с клавиатуры или же по кнопке старт начинался захват. И что первое выплевывает сканер кидает в колонку контракта а то что следом в колонку серийного номера. То есть необходимо свести ручную работу к минимуму.
карма: 0

0
Ответов: 8927
Рейтинг: 823
#10: 2019-10-17 13:44:22 ЛС | профиль | цитата
Tad, а ведь Минздрав предупреждал!
Dizzy, "если бы директором был я", то начал хотелку с примеров того, что выдаёт сканер, какие строки/цифры что обозначающие и лишь потом куда их распихивать/записывать/обрабатывать
карма: 19

0
Ответов: 9
Рейтинг: 0
#11: 2019-10-17 15:21:03 ЛС | профиль | цитата
Леонид,

А что даст пример кроме показать визуально количество символов?
Тут просто надо понимать как работает сканер штрих-кода в разрыв клавиатуры.
Он выплевывает сразу данные, его можно настроить в конце добавлять энтер или не добавлять.
Я просто описал работу программы так как я это понимаю..но некоторые моменты описанием не передать... а такое подгоняется в процессе тестовой работы софта я так думаю

Мне бы понять как добавить события по записи данных а остальные функции буду пробывать допиливать сам наверное...а то еще будут писать что вообще уже обнаглел, возьми ему и все напиши

Редактировалось 1 раз(а), последний 2019-10-17 15:21:32
карма: 0

0
Ответов: 4630
Рейтинг: 749
#12: 2019-10-17 15:34:25 ЛС | профиль | цитата
Леонид писал(а):
что выдаёт сканер, какие строки/цифры
По своему опыту. В самом простом случае сканер работает как клавиатура: просто по порядку выдаются символы штрих-кода "1", "2", "3" и т.д., как будто просто на клавиатуре нажимаются соответствующие клавиши (или с помощью KeyEvent). В конце - генерируется "нажатие" Enter (клавиша с кодом 13). В этом режиме конец ввода отследить легко - нажатие Enter. А вот начало ввода...

Так вот, не знаю как во всех сканерах, но в моём случае сканер можно было настроить на выдачу отдельного нажатия (кода клавиши) ПЕРЕД выдачей штрих-кода. Условно говоря, если в программе ловить нажатие, например, F5, по которому открывать окно с полем ввода, либо просто переводить фокус на нужное поле ввода в текущем окне, то последующие цифры штрих-кода будут заноситься в это поле. Сканер генерирует сначала F5, затем последовательность цифр, затем нажатие Enter. После чего с этим кодом уже что-то можно делать. Но я так далеко не заходил.

Редактировалось 1 раз(а), последний 2019-10-17 15:35:05
карма: 26

0
Ответов: 16884
Рейтинг: 1239
#13: 2019-10-17 16:03:49 ЛС | профиль | цитата
Номер контракта - тоже сканер выдаёт ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9
Рейтинг: 0
#14: 2019-10-17 17:00:29 ЛС | профиль | цитата
Tad,

Да все собирается методом сканирования.

Контракт 0059440031 (10 символов)
Серийный номер 770001101111115 (15 символов)
Отправной документ 22150152015015 (14 символов)
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#15: 2019-10-18 09:32:28 ЛС | профиль | цитата
Ну и проверяй по Len.
Полная анархия - порядок сканирования не имеет никакого значения.
15 знаков - это Серийный номер. Ставим на 2-е место.
10 знаков - номер контракта. Ставим на 1-е место.
Общая Len = 39? Да - проверяем на дубликат
(SELECT count() FROM log WHERE Контракт||Серийный номер||Отправной документ=0059440031||770001101111115||22150152015015; ). |
Если 0, то добавляем запись, если <>0, то табличка "ПОВТОР"

Редактировалось 1 раз(а), последний 2019-10-18 09:33:21
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)