Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Код формирования EAN-13 есть у кого?  [new]
DarkCat
Member

Откуда: 142000
Сообщений: 12331
Нужен TSQL код, который сможет выполнить преобразование: 123456789012 -> 1CDOFQR*ijabci+

Процедура стандартная, может есть у кого?
10 июн 10, 17:53    [8926330]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
DarkCat
Нужен TSQL код, который сможет выполнить преобразование: 123456789012 -> 1CDOFQR*ijabci+

Процедура стандартная, может есть у кого?
Процедура, которая алгоритм преобразования угадывает, что ли?
10 июн 10, 18:05    [8926417]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
DarkCat
Member

Откуда: 142000
Сообщений: 12331
Гавриленко Сергей Алексеевич
DarkCat
Нужен TSQL код, который сможет выполнить преобразование: 123456789012 -> 1CDOFQR*ijabci+

Процедура стандартная, может есть у кого?
Процедура, которая алгоритм преобразования угадывает, что ли?

Нужна процедура которая берет 12 чисел, добавляет к ним контрольный разряд, и преобразует всё это в 15-значную последовательность символов, которую если изобразить шрифтом EAN13 то получится баркод для его последующего распечатывания..
10 июн 10, 18:22    [8926543]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
BorodaSoft
Member

Откуда: Ростов-на-Дону
Сообщений: 35
DarkCat,

Смотрите тут и тут
10 июн 10, 23:18    [8927742]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
DarkCat
Member

Откуда: 142000
Сообщений: 12331
BorodaSoft
DarkCat,

Смотрите тут и тут

спасибо, похоже то что нужно
11 июн 10, 10:36    [8929021]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
DarkCat
Member

Откуда: 142000
Сообщений: 12331
если вдруг кому интересно, вот перевод в TSQL

create PROCEDURE BARTOTXT ( @chaine varchar(13))
as

declare @i integer
declare @first integer
declare @checksum integer
declare @CodeBarre varchar (25) 
declare @tableA integer

begin

set @CodeBarre = ''
set @checksum = 0

set @i = 2
while (@i<13) 
begin
  set @checksum = @checksum + CAST(substring(@chaine,@i,1) AS int)
  set @i = @i + 2
end
set @checksum = @checksum*3;

set @i = 1
while (@i<13) 
begin
  set @checksum = @checksum + CAST(substring(@chaine,@i,1) AS int)
  set @i = @i + 2
end

set @chaine = substring(@chaine,1,12) + CAST((10 - @checksum % 10) % 10 as varchar(1))

set @CodeBarre = SubString(@chaine,1,1) + CHAR(65 + CAST(SubString(@chaine,2,1) as int));

set @first = CAST(SubString(@chaine,1,1) as int)

set @i = 3
while (@i<=7) 
begin
   set  @tableA = 0;

   if (@i = 3 and @first >= 0 and @first <= 3) set @tableA = 1;
   if (@i = 4 and (@first=0 or @first=4 or @first=7 or @first=8)) set @tableA = 1;
   if (@i = 5 and (@first=0 or @first=1 or @first=4 or @first=5 or @first=9)) set @tableA = 1;
   if (@i = 6 and (@first=0 or @first=2 or @first=5 or @first=6 or @first=7)) set @tableA = 1;
   if (@i = 7 and (@first=0 or @first=3 or @first=6 or @first=8 or @first=9)) set @tableA = 1;

   if @tableA = 1
      set @CodeBarre = @CodeBarre + char(65 + CAST(SubString(@chaine,@i,1) as int));
   else
      set @CodeBarre = @CodeBarre + char(75 + CAST(SubString(@chaine,@i,1) as int));

   set @i = @i + 1
end

set @CodeBarre = @CodeBarre + '*'

set @i = 8
while (@i<=13) 
begin
   set @CodeBarre = @CodeBarre + char(97 + CAST(SubString(@chaine,@i,1) as int));
   set @i = @i + 1
end

set @CodeBarre = @CodeBarre + '+'

select @chaine as code, @CodeBarre as ean13txt

end

шрифт во вложении

К сообщению приложен файл (ean13.ttf - 8Kb) cкачать
15 июн 10, 16:11    [8944861]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Код формирования EAN-13 есть у кого?  [new]
alik-os
Member

Откуда:
Сообщений: 8
Спасибо, помогло!
5 дек 12, 11:51    [13579967]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Код формирования EAN-13 есть у кого?  [new]
Настаев
Member

Откуда:
Сообщений: 475
DarkCat

if @tableA = 1
set @CodeBarre = @CodeBarre + char(65 + CAST(SubString(@chaine,@i,1) as int));
else
set @CodeBarre = @CodeBarre + char(75 + CAST(SubString(@chaine,@i,1) as int));

set @i = @i + 1
end



А где тут закрывается условие IF?
1 окт 19, 20:45    [21984348]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4257
оно тут нигде не закрывается. читайте синтаксис IF
1 окт 19, 21:03    [21984353]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
Вообще-то, перед ELSE точка с запятой стоять не может.
1 окт 19, 21:48    [21984367]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
iap
Вообще-то, перед ELSE точка с запятой стоять не может.

С каких это пор?

DECLARE @t int;
IF 1 > 0 SET @t = 0; ELSE SET @t = 1;
PRINT @t;


Lepsik
оно тут нигде не закрывается. читайте синтаксис IF

Я бы поправил, что оно нигде явно не закрывается.
Неявно else работает строго на один стейтмент после него, после чего закрывается.
Если нужно несколько стейтментов по условию - их нужно явно обернуть в begin ... end
2 окт 19, 09:52    [21984557]     Ответить | Цитировать Сообщить модератору
 Re: Код формирования EAN-13 есть у кого?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49529
Minamoto
С каких это пор?

С пор, когда некоторые особо выдающиеся некрофилы стали путать T-SQL и Pascal.
2 окт 19, 13:41    [21984854]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить