! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

Barcode 셀타입 궁금한 점이 있어 문의드립니다. > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 Barcode 셀타입 궁금한 점이 있어 문의드립니다.

페이지 정보

작성자 편도준 작성일 2024-01-15 14:25 조회 75회 댓글 1건
제품 버전 : 13.45.20203.0
컨트롤 이름 : FpSpread

본문

안녕하세요. 항상 친절한 답변 감사드립니다. 


다름이 아니라 FpSpread에 바코드 셀타입으로 셀타입을 지정해준 후 특정 번호를 

입력하게 되면 끝자리가 사라져서 바코드 인식이 제대로 되지 않는 경우가 발생하여 문의드립니다. [그림 1]과 같이 셀타입을 지정해준 후 값을 2400123-011-01로 설정하게 되면 [그림 2]처럼 마지막 1값이 사라집니다. 실제로 바코드를 인식하면 1이 사라져서 나오게 되고요


하지만 [그림 3]에 있는 속성 중 AcceptCheckDigit란 속성값을 False로 변경해주면 또 바코드값이 제대로 나오게 되는데 혹시 해당 문제가 발생하는 이유가 무엇인지 알 수 있을까요 만약 AcceptsCheckDigit가 False라서 발생한 이유라면 AcceptsCheckDigit의 속성이 정확히 어떤 역할인지 궁금합니다.


감사합니다. 



[그림 1]



[그림 2]



[그림 3]
 

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

MESCIUS써니님의 댓글

MESCIUS써니 작성일

편도준 님, 안녕하세요.
메시어스입니다.

구체적인 설명 및 참고 이미지와 함께 문의주심에 감사드립니다.

현재 문의하신 현상에 대하여 본사 개발팀에서 확인 중입니다.
관련 내용이 업데이트 되는 대로 안내드리겠습니다.

답변이 지연되는 점 죄송합니다.

감사합니다.
메시어스 드림

2 답변

WinForms윈폼 Re: Barcode 셀타입 궁금한 점이 있어 문의드립니다.

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 MESCIUS써니 작성일 2024-01-22 09:31 댓글 2건

본문

편도준 님, 안녕하세요.

메시어스입니다.


기다려주셔서 감사합니다.


AcceptsCheckDigit 속성이 true로 설정되면, Spread는 바코드의 값에 기반하여 Check Digit을 필터링하는 로직을 호출합니다.

Check Digit에 대한 설명은 링크된 문서에서 살펴보실 수 있습니다.

- Code 39 바코드


문서에 따르면 바코드 자체는 Check Digit을 포함하지 않기 때문에, AcceptsCheckDigit을 true로 설정하면 Spread는 바코드 값에서 Check Digit을 제거하도록 동작합니다. (이는 바코드 셀 타입의 아주 오래된 구현 방식입니다.)


이러한 이유로, 입력된 바코드 셀의 값을 온전하게 유지하고 싶으신 경우, AccpetsCheckDigit 속성을 False로 설정하셔서 Spread에서 Check Digit을 필터링하는 로직을 호출하지 않도록 사용해주시기 바랍니다.


감사합니다.

메시어스 드림

댓글목록

편도준님의 댓글

편도준 작성일

먼저 답변 감사합니다 ^^

추가적으로 질문드리고 싶은 게 있는데 그렇다면
바코드값의 사용자가 임의로 체크디짓값을 넣어주어서 
만약 2400123-011-01의 체크디짓값으로 마지막에 17을 더해 2400123-011-0117 로 바코드를 생성한다면, AcceptsCheckDigit의 속성값을 True로 지정해주면 로직을 호출해 마지막 체크디짓값인 17을 제거하여 최종적으로 2400123-011-01 바코드를 그리게 되는게 맞는건가요 ???

MESCIUS써니님의 댓글의 댓글

MESCIUS써니 작성일

@편도준 님 안녕하세요.

정확한 안내를 위하여, 본사 측으로 로직에 대한 확인을 요청한 상황입니다.
다만 본사 측 문의량이 급증하여 확인이 지연되고 있는 점 양해 부탁드립니다.
관련 내용이 업데이트 되는 대로 다시 안내드리겠습니다.

회신이 늦어져 죄송합니다.

감사합니다.
메시어스 드림

WinForms윈폼 Re: Barcode 셀타입 궁금한 점이 있어 문의드립니다.

추천0 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 MESCIUS써니 작성일 2024-01-29 17:05 댓글 1건

본문

편도준 님, 안녕하세요.

메시어스입니다.


기다려주셔서 감사합니다.


"예, 아니오"로 답변드리기 모호한 부분이기에, 아래와 같이 간단한 예시와 함께 안내드립니다.


먼저 Check Digit는 다음과 같이 계산됩니다.


  1. 입력된 문자열에서 각 문자에 대응하는 숫자의 합을 구합니다.
    * 숫자 0~9는 각각 숫자 0~9에 대응됩니다.
    * 알파벳 A~Z는 각각 숫자 10~ 35에 대응됩니다.
    * 하이픈은 숫자 36에 대응됩니다.
  2. 1에서 구한 합을 43으로 나눴을 때의 나머지를 구합니다.
  3. 2에서 구한 나머지가 입력된 바코드 값의 Check Digit가 됩니다.


Code39 타입 바코드에서 AcceptsCheckDigit 속성이 True로 되어있을 때, Spread는 Check Digit 필터 로직을 호출합니다.


이때, 입력된 문자열의 끝에 Check Digit이 포함되어 있으면 해당 Check Digit을 제거하고, 만약 입력된 문자열의 끝이 Check Digit과 다른 경우 아무 문자도 제거하지 않습니다.


예시로 다음과 같습니다.


[입력 값이 2400123-011 인 경우]

  1. 입력 값의 각 문자에 대응되는 값들의 합을 계산하면 50이 나옵니다.
  2. 50을 43으로 나누었을 때의 나머지는 7입니다. 즉, 해당 입력값의 Check Digit은 7이 됩니다.
  3. Check Digit 7에 대응되는 숫자/문자는 7입니다.
  4. 7은 입력 값 "2400123-011"의 끝에 있지 않으므로, 필터링 되지 않습니다.


[입력 값이 2400123-011-01 인 경우]

  1. 입력 값의 각 문자에 대응되는 값들의 합을 계산하면 87이 나옵니다.
  2. 87을 43으로 나누었을 때의 나머지는 1입니다. 즉, 해당 입력 값의 Check Digit은 1이 됩니다.
  3. Check Digit 1에 대응되는 숫자/문자는 1입니다.
  4. 1은 입력 값 "2400123-011-01"의 끝에 있으므로, 필터링 됩니다.


다만, AcceptsCheckDigit 속성은 UI를 통해 사용자가 셀에 값을 입력했을 때에만 영향이 있어야 하며, 코드단에서 Cell.Value를 입력한 경우에는 Cell.Value에 입력된 값 그대로를  바코드 바에 그려야합니다. 현재 해당 부분에서 개선 필요한 사항이 있어 Spread.NET V17 서비스팩에서 픽스될 예정입니다. 해당 버전이 출시되었을 때, 다시 한 번 안내 드리겠습니다.


말씀하신 "2400123-011-01"로 바코드 셀 값을 설정하고 해당 값에 대한 바코드를 그리고자 하시는 경우, AcceptsCheckDigit 속성을 False로 설정하여 사용하시는 것을 권장드립니다. 


감사합니다.

메시어스 드림.

댓글목록

편도준님의 댓글

편도준 작성일

아 예시가 있어서 덕분에 이해하는데 많은 도움이 되었습니다!
감사합니다~ 

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.