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

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

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

Если тебе нужно выводить цифры, которые не соответствуют правилам формирования штрих-кода (да-да, этот набор цифр не просто так), например - номер документа для автоматизированного считывания номеров в системе документооборота, то у компонент отображения штрих-кода есть свойство CheckSum. Поставь его в true (или Modulo10, какие там компоненты у тебя) - и штрих-код будет "правильным".
...
Рейтинг: 0 / 0
01.04.2011, 14:11
    #37194335
mr.Ulugbek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
Мне надо создать штрих код
Допустим есть товары у которых нет штрих код вот для них я хочу генерировать штрих код сам
...
Рейтинг: 0 / 0
01.04.2011, 15:21
    #37194507
Евгений, Екатеринбург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
mr.UlugbekМне надо создать штрих код
Допустим есть товары у которых нет штрих код вот для них я хочу генерировать штрих код сам
Штрихкод не генерируется. Это просто шрифт - как тут уже сказали система отображения текста (не только цифр) полосками.
Соответственно в базе хранится этот текст, а генератор отчетов преобразует этот текст в штрихкод для печати. Для того чтобы содать его в базе, ты должен придумать/принять алгоритм по которому он создается. Если штрихкод чисто для себя (как у нас), то можешь создавать его как хочешь - у нас состоит: первые три цифры - код типа документа (например 201 это альбом с чертежами), последующие это ID в базе - например 201487 означает, что это альбом чертежей с номером 487, он же инвентарный номер в бумажном архиве. 202002 - накладная и т.д.
Если требуется для повсеместного применения, то надо придерживатся общепринятых правил создания этого текста, но это вроде регистрироваться надо.
...
Рейтинг: 0 / 0
01.04.2011, 16:09
    #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
01.04.2011, 16:13
    #37194654
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
Евгений, Екатеринбургmr.UlugbekМне надо создать штрих код
Допустим есть товары у которых нет штрих код вот для них я хочу генерировать штрих код сам
Штрихкод не генерируется. Это просто шрифт


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

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

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


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

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

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

А после считывания выделяем функцией подстроки ID товара.
...
Рейтинг: 0 / 0
02.04.2011, 13:36
    #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
02.04.2011, 14:07
    #37195666
PEAKTOP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
Ivan_PisarevskyНу и изба говорильня. Тут кода на 5 копеек, а разговоров...
Желающие могут пользоваться кодом без ограничений.

Думаю, это нужно увековечить =)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
19.05.2012, 20:50
    #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
19.05.2012, 21:46
    #37802306
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
1000 руб.
...
Рейтинг: 0 / 0
19.05.2012, 22:03
    #37802324
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
отформатировал тэгами исходник.
"с вас пятьдесят копеек"(с).
...
Рейтинг: 0 / 0
19.05.2012, 22:23
    #37802353
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
a-phoneЕсть исходник на vb из него хотелось бы сделать хранимую процедуру, но я новичек в этом деле и один не осилю прошу помощи гуру.
мне регулярно вспоминается анекдот про слесаря, канализацию, и практиканта. Соответственно, вопрос - вы нам предоставите в этом г..не плавать, а сами будете только ключи подавать? Или вы предполагаете, что тут собрались спецы по VB? Вы сами что сделали, и что не получилось?
...
Рейтинг: 0 / 0
20.05.2012, 00:04
    #37802450
a-phone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
kdv,

честно, сам только укоротил vb исходник , но читал книжки и уроки про sql , правда понял мало.решил что моих только что полученных "знаний" не хватит. И пришел к Вам. А на счет ключей и практиканта наверное правда со стороны так смотрится.Сорри.
...
Рейтинг: 0 / 0
20.05.2012, 00:28
    #37802465
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
почитайте, как пишутся процедуры
http://www.ibase.ru/devinfo/sp_call.htm
посмотрите примеры в базе employee и в документации. Сопоставьте язык VB и язык PSQL (процедур в ФБ). Перепишите процедуру с VB на FB.
...
Рейтинг: 0 / 0
21.05.2012, 00:01
    #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
21.05.2012, 09:47
    #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
21.05.2012, 10:47
    #37803370
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
ExterisЗачем вам эта куча переменных. Писали бы сразу: if (ls='0') then bartxtl='08220' ...Не торопись, человек учится, приятно когда хоть кто-то из студентов что-то делает сам. Там вообще была портянка кода 7 раз длиннее, я ее малёху подрезал. Погоди и следующий шаг будет. Да и нет в переменных ничего такого уж плохого. :)
...
Рейтинг: 0 / 0
21.05.2012, 20:32
    #37804738
a-phone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У кого нибудь есть процедура для создание Штрих кода последовательном образе?
Ivan_Pisarevsky,

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

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



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


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