Home | .net | Genereaza un barcode folosind Reporting Services

Genereaza un barcode folosind Reporting Services

Cum putem genera un cod de bare in aplicatia noastra .net?
Dupa indelungi cautari la cum pot genera un cod de bare in reporting services nu am gasit o metoda open source, toate aceste librari fiind librarii fiind cu plata la preturi destul de mari incepand de la cateva sute de euro pana la cateva mii.

Barcode lib

Tarcode

De aceea am decis sa scriu un tutorial cu o metoda total gratuita si foarte buna pentru a adauga intr-un raport un cod de bare.

Pentru acest proiect voi folosi un site ASP.Net dar aceasta metoda poate fi folosita pentru MVC dar si pentru reporting services. Pentru realizarea proiectul este recomandat sa folositi Visual Studio 2013, dar acesta poate realizat cu versiuni mai vechi ale aplicatiei.

Pasul 1: Se realizeaza un nou proiect web.

Pasul 1

Pasul 2: Se adauga un nou item la acest proiect, acesta trebuie sa fie o pagina ASPX goala (Default.aspx).

Pasul 2

Pasul 3: Se va adauga in pagina noua Default.aspx un Control ReportViewer folosind drag and drop din componentele toolbox.

Pasul 3

Pasul 4: Daca se ruleaza acest proiect in stadiul in care se afla acum, acesta va genera eroarea “The Report Viewer Web Control requires a System.Web.UI.ScriptManager on the web form. ”

Pasul 4

Pasul 5:  Pentru a rezolva aceasta eroare se adauga din toolbox un control de tip Script Manager folosind drag and drop.

Pasul 5

Pasul 6: Se adauga in proiect un raport rdlc.

Pasul 6

Pasul 7: Se ataseaza acest nou raport la Report Viewer pentru a fi afisat default in pagina.

Pasul 7

Daca este rulat site-ul va arata ca in imaginea de mai jos, controlul de vizualizare a raportului o sa afiseze o pagina goala deoarece raportul nou nu contine nimic. Acum ca proiectul afiseaza raportul fara nici o eroare trebuie adaugat doar codul de bare.

Pasul 8

Pasul 8: Se adauga un nou item la proiect numit generic handler denumit “Image.ashx” care o sa afiseze o imagine cu codul de bare.

Pasul 9

Pasul 9: Pentru a genera o imagine cu codul de bare o sa se adauge la proiect o librarie din NuGet Packages. Acest lucru se face prin selectarea proiectului din Solution Explorer si prin click dreapta pe acesta se alege Manage NuGet Packeges. La search se scrie barecode si o sa fie afisate numeroase librarii care pot genera coduri de bare. Pentru exemplu sa ales libraria ZXing.Net si se apasa install.

Pasul 10

Pasul 10: Pentru a genera imaginea cu codul de bare, in Handler (“Image.ashx”) se scrie urmatoarea secventa de cod.

Pasul 11

Aceasta secventa face ca atunci cand handler-ul primeste ca variabila GET “ID” un text sau un numar sa genereze o imagine cu codul de bare aferent inputului.

Pasul 12

In acest exemplu am generat codul de bare pentru textul “www.totpe.ro” folosind URL-ul : http://numesite:numarport/Image.ashx?ID=coddebaretext.

Pasul 11: Se adauga imaginea cu codul de bare in raport, folosind un control de tip imagine care se adauga in raport si la care trebuie selectata ca si sursa External. Acest lucru este necesa. In inputul “Use this image” se adauga link-ul catre pagina care genereaza codul de bare iar dupa variabila GET ID se poate adauga o variabila din raport care de exemplu se poate aduce dintr-un dataset sau seta programatic.

Pasul 13

Pe raport in designer o sa apara codul de bare generat:

Pasul 14

Daca este rulat proiectul o sa afiseze o eroare “the enableexternalimages property has not been set for this report”.

Pasul 15

Pasul 12: Pentru a corecta aceasta eroare trebuie setat din ReportViewer ->local Report proprietatea enableexternalimages sa aiba atribuita valoarea true.

Pasul 16

Acum daca este rulat proiectul o sa fie afisat raportul care contine codul de bare.

Pasul 17

Daca ati ajuns deja la acest pas veti avea un  barcode generator foarte usor de realizat si cel mai important ca este total gratis aceasta metoda. La acest tutorial este atasat si proiectul din demonstratie.

Proiect Barcode .net

About TotPeRo

Leave a Reply

Your email address will not be published. Required fields are marked *