powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / У кого нибудь есть процедура для создание Штрих кода последовательном образе?
25 сообщений из 38, страница 1 из 2
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37193833
mr.Ulugbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
Заранее благодарен
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37193908
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.UlugbekУ кого нибудь есть процедура для создание Штрих кода последовательном образе?What is it "последовательном образе"? Это имеет какое-то отношение к ФБ?
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37194180
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.UlugbekУ кого нибудь есть процедура для создание Штрих кода последовательном образе?

Штрих-код - это всего лишь способ записи цифр полосками. Не более.

Для QReport есть TQRBarCode, у FastReport-а тоже есть компонент на подобие.
Выставляешь у компонента свойство DataSource и DataField, а также тип штрих-кода, например, EAN13 - и все.

Если тебе нужно выводить цифры, которые не соответствуют правилам формирования штрих-кода (да-да, этот набор цифр не просто так), например - номер документа для автоматизированного считывания номеров в системе документооборота, то у компонент отображения штрих-кода есть свойство CheckSum. Поставь его в true (или Modulo10, какие там компоненты у тебя) - и штрих-код будет "правильным".
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37194335
mr.Ulugbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне надо создать штрих код
Допустим есть товары у которых нет штрих код вот для них я хочу генерировать штрих код сам
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37194507
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.UlugbekМне надо создать штрих код
Допустим есть товары у которых нет штрих код вот для них я хочу генерировать штрих код сам
Штрихкод не генерируется. Это просто шрифт - как тут уже сказали система отображения текста (не только цифр) полосками.
Соответственно в базе хранится этот текст, а генератор отчетов преобразует этот текст в штрихкод для печати. Для того чтобы содать его в базе, ты должен придумать/принять алгоритм по которому он создается. Если штрихкод чисто для себя (как у нас), то можешь создавать его как хочешь - у нас состоит: первые три цифры - код типа документа (например 201 это альбом с чертежами), последующие это ID в базе - например 201487 означает, что это альбом чертежей с номером 487, он же инвентарный номер в бумажном архиве. 202002 - накладная и т.д.
Если требуется для повсеместного применения, то надо придерживатся общепринятых правил создания этого текста, но это вроде регистрироваться надо.
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37194646
rstrelba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.Ulugbek,

у меня есть UDF, которая на базе какого-нибудь кода, например id товара
генериреут EAN13.
Если избавиться от константного массива, то можно и хранимую процедуру
сделать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 function  IntToEAN13( var  Value:Int64):PChar; cdecl; export;
 var  S: String ;
    i:Integer;
    _check, _sum, _odd, _even : Integer;
 const  zArray :  array  [ 1 .. 11 ]  of   String  =
(
'20000000000',
'2000000000',
'200000000',
'20000000',
'2000000',
'200000',
'20000',
'2000',
'200',
'20',
'2'
);

 begin 
    // 
   S := IntToStr(Value);
   S := zArray[Length(S)] + S;
   _odd :=  0 ;
   _even :=  0 ;
    for  i:= 0   to   11   do 
    begin 
       if  (i  div   2 )* 2 =i
       then  _even := _even + StrToInt(Copy(S,i+ 1 , 1 ))
       else  _odd  := _odd +  StrToInt(Copy(S,i+ 1 , 1 ));
    end ;
   _odd := _odd *  3 ;
   _sum := _odd + _even;
   _check := (_sum  div   10 )* 10 ;
    if  _check=_sum
    then  _check :=  0 
    else  _check := _check +  10  - _sum;
    // 
   Result := PChar(S + IntToStr(_check));
 end ;

...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37194654
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, Екатеринбургmr.UlugbekМне надо создать штрих код
Допустим есть товары у которых нет штрих код вот для них я хочу генерировать штрих код сам
Штрихкод не генерируется. Это просто шрифт


Уточняю. Если для ВНУТРЕННИХ нужд надо самостоятельно генерировать коды товаров, то надо только, чтобы они начинались на «2». Ну и последняя, 13-я цифра должна расчитываться по стандартному алгоритму. Остальные 11 цифр - на усмотрение разработчика.

Уточняющий вопрос для ТСа - тебе нужна реализация этого алгоритма на SQL? Или полученных ответов достаточно?
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37195515
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineЕвгений, Екатеринбургпропущено...

Штрихкод не генерируется. Это просто шрифт


Уточняю. Если для ВНУТРЕННИХ нужд надо самостоятельно генерировать коды товаров, то надо только, чтобы они начинались на «2». Ну и последняя, 13-я цифра должна расчитываться по стандартному алгоритму. Остальные 11 цифр - на усмотрение разработчика.

Это если EAN-13 использовать. Если CODE39, то количество символов может быть и меньше, к тому же в этом стандарте контрольная сумма не обязательный параметр. Мне code39 удобнее показался - проще формировать текст получилось - 201 код товара, просто "склеиваем" с ID этого товара, никакой реализации алгоритма не надо. Ну у меня он так, как фенька для Заказчиков пока используется.
Про первую цифру 2 для внутреннего применения, да забыл написать...
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37195528
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургЭто если EAN-13 использовать. Если CODE39, то количество символов может быть и меньше, к тому же в этом стандарте контрольная сумма не обязательный параметр. Мне code39 удобнее показался - проще формировать текст получилось - 201 код товара, просто "склеиваем" с ID этого товара, никакой реализации алгоритма не надо.

Если компонента для отображения штрих-кода "умная" (например, TQRBarCode или компонента из FastReport-а), то этой фигней вообще заморачиваться не надо. В качестве DataField ей присваиваешь 'TMC_ID' (ID товара), а она сама уже дополняет цифрами слева (нолями и первой двойкой) необходимое количество знаков и рассчитывает последний знак после кода, как контрольную сумму.

А после считывания выделяем функцией подстроки ID товара.
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37195647
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и изба говорильня. Тут кода на 5 копеек, а разговоров...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
CREATE PROCEDURE ID2EAN13 (
    prefix varchar( 10 ),
    id integer)
returns (
    barcode varchar( 13 ))
as
declare variable n integer;
begin
      barcode = prefix || lpad(id,  12 -char_length(prefix), '0');

      n = (cast (substring (barcode from  2  for  1 ) as integer)+
           cast (substring (barcode from  4  for  1 ) as integer)+
           cast (substring (barcode from  6  for  1 ) as integer)+
           cast (substring (barcode from  8  for  1 ) as integer)+
           cast (substring (barcode from  10  for  1 ) as integer)+
           cast (substring (barcode from  12  for  1 ) as integer))* 3 +
           cast (substring (barcode from  1  for  1 ) as integer)+
           cast (substring (barcode from  3  for  1 ) as integer)+
           cast (substring (barcode from  5  for  1 ) as integer)+
           cast (substring (barcode from  7  for  1 ) as integer)+
           cast (substring (barcode from  9  for  1 ) as integer)+
           cast (substring (barcode from  11  for  1 ) as integer);

      n = mod(n, 10 );
      if (n> 0 ) then n =  10 -n;
      barcode = barcode || cast (n as varchar( 20 ));
  suspend;
end
На входе чиселко, на выходе баркод еан13 с контрольной суммой. желающие кормить оную процедуру мусором могут сами написать эксепшны, на случай переполнения. Проверено на версии сервера 2.1, никаких УДФ не требуется.

Желающие могут пользоваться кодом без ограничений.
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37195666
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyНу и изба говорильня. Тут кода на 5 копеек, а разговоров...
Желающие могут пользоваться кодом без ограничений.

Думаю, это нужно увековечить =)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37802281
a-phone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет
у меня сервер бд Firebird 2.5.1

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

вот исходник:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Attribute VB_Name = "Barcode"
Option Explicit
Private Function Code_39_Ch(Ch As String) As String
    Dim S As String
    Select Case Ch
        Case "1": S = "28002"
        Case "2": S = "0:002"
        Case "3": S = "2:000"
        Case "4": S = "08202"
        Case "5": S = "28200"
        Case "6": S = "0:200"
        Case "7": S = "08022"
        Case "8": S = "28020"
        Case "9": S = "0:020"
        Case "0": S = "08220"
        Case Else: S = ""
    End Select
    Code_39_Ch = S
End Function
Public Function CODE_BAR(CARD As String)
    Dim I As Integer
    Dim S As String
    S = ""
    For I = 1 To Len(CARD)
        S = S & Code_39_Ch(Mid(CARD, I, 1))
    Next I
    CODE_BAR = "80220" & S & "80220"
End Function
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37802306
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1000 руб.
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37802324
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отформатировал тэгами исходник.
"с вас пятьдесят копеек"(с).
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37802353
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a-phoneЕсть исходник на vb из него хотелось бы сделать хранимую процедуру, но я новичек в этом деле и один не осилю прошу помощи гуру.
мне регулярно вспоминается анекдот про слесаря, канализацию, и практиканта. Соответственно, вопрос - вы нам предоставите в этом г..не плавать, а сами будете только ключи подавать? Или вы предполагаете, что тут собрались спецы по VB? Вы сами что сделали, и что не получилось?
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37802450
a-phone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

честно, сам только укоротил vb исходник , но читал книжки и уроки про sql , правда понял мало.решил что моих только что полученных "знаний" не хватит. И пришел к Вам. А на счет ключей и практиканта наверное правда со стороны так смотрится.Сорри.
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37802465
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитайте, как пишутся процедуры
http://www.ibase.ru/devinfo/sp_call.htm
посмотрите примеры в базе employee и в документации. Сопоставьте язык VB и язык PSQL (процедур в ФБ). Перепишите процедуру с VB на FB.
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37803122
a-phone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо получилось хоть и криво но работает , код нужен чтобы заменять 7 -ми значный код полученый с штрихсканера обратно в штрихкод в связке с шрифтом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
CREATE or alter PROCEDURE BC (
    CARD integer)
returns (
    bartxt varchar(256))
as
declare variable i integer;
declare variable ls varchar(1);
declare variable bartxtl varchar(256);
declare variable CODE0 varchar(5);
declare variable CODE1 varchar(5);
declare variable CODE2 varchar(5);
declare variable CODE3 varchar(5);
declare variable CODE4 varchar(5);
declare variable CODE5 varchar(5);
declare variable CODE6 varchar(5);
declare variable CODE7 varchar(5);
declare variable CODE8 varchar(5);
declare variable CODE9 varchar(5);

begin
   bartxt='80220';
   bartxtl ='';
   CODE1='28002';
   CODE2='0:002';
   CODE3='2:000';
   CODE4='08202';
   CODE5='28200';
   CODE6='0:200';
   CODE7='08022';
   CODE8='28020';
   CODE9='0:020';
   CODE0='08220';

   i = 1;
   while (i < 8 ) do
   begin
   ls= substring (CARD from i for 1);

   if (ls='0') then bartxtl=CODE0;
   if (ls='1') then bartxtl=CODE1;
   if (ls='2') then bartxtl=CODE2;
   if (ls='3') then bartxtl=CODE3;
   if (ls='4') then bartxtl=CODE4;
   if (ls='5') then bartxtl=CODE5;
   if (ls='6') then bartxtl=CODE6;
   if (ls='7') then bartxtl=CODE7;
   if (ls='8') then bartxtl=CODE8;
   if (ls='9') then bartxtl=CODE9;
   bartxt=bartxt||bartxtl;
   i = i+1;
   end
end



С циклами еше не разобрался ,но если кто усовершенствует то заранее благодарен.
Модератор: Поправил и оформил тэгами, ЧИТАТЬ__ВСЕМ,__КТО__ПРИШЕЛ__СЮДА__В__ПЕРВЫЙ__РАЗ!
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37803277
Фотография Exteris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a-phonedeclare variable CODE0 varchar(5);
declare variable CODE1 varchar(5);
declare variable CODE2 varchar(5);
...

Зачем вам эта куча переменных. Писали бы сразу: if (ls='0') then bartxtl='08220' ...
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37803370
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ExterisЗачем вам эта куча переменных. Писали бы сразу: if (ls='0') then bartxtl='08220' ...Не торопись, человек учится, приятно когда хоть кто-то из студентов что-то делает сам. Там вообще была портянка кода 7 раз длиннее, я ее малёху подрезал. Погоди и следующий шаг будет. Да и нет в переменных ничего такого уж плохого. :)
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37804738
a-phone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevsky,

надо так - там старт-стоп символ потерялся
конец кода :

...
Код: plsql
1.
2.
3.
4.
5.
bartxt=bartxt||bartxtl;
   i = i+1;
   end
bartxt=bartxt||'80220';
end



Спасибо за укорочение кода .
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37804877
a-phone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.Господа ,хотел спросить Вас ,можно ли малыми усилиями из процедуры которая выше сделать функцию?
чтобы table.field1=function( table.fild2)

я бы field1 так создал
ALTER TABLE UNITS
ADD CODE_BAR GENERATED ALWAYS AS (bc (units.card))

2.Будет ли это работать?
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37804912
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a-phoneнадо так - там старт-стоп символ потерялсяЯ ж писал "прямо из мозга", ты уж сам потестируй. ;)
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37804915
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a-phoneможно ли малыми усилиями из процедуры которая выше сделать функцию?
а. УДФ, для этого и не надо было твой код переписывать. скомпилил бы его в виде ДЛЛ (следуя правилам, см. ibase.ru) УДФ имеет свои преимущества и недостатки. Я лично предпочитаю по возможно не использовать УДФ, как повод мне необходима кроссплатформенность, компились УДФ под разные линухи и винды просто лениво.
б. дождаться третьей версии ФБ.
...
Рейтинг: 0 / 0
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
    #37804918
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a-phoneможно ли
Попробуй. Раз уж используешь тройку - тебе и эксперименты ставить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / У кого нибудь есть процедура для создание Штрих кода последовательном образе?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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