.
.
La impresion de codigos de barra en crystal reports no es tan complicada, basta con diseñar un reporte como cualquier otro y usar la fuente de codigo que necesites.

aqui esta la configuracion de la pc en la que voy a realizar el ejemplo:

- Windows 7 home basic 32bits
- Visual Studio .Net 2010 (funciona con cualquier .net)
- Crystal Reports para vs .net (el que se instala con vs 2010)
- Access (puede ser sql server, mysql, etc)


Notas:
- La razon de usar access es porque no tengo instalada ninguna base de datos por ahora. Para usar otra base de datos solo debes cambiar la cadena de conexion y asunto arreglado.
- El lenguaje es Visual Basic.
- El codigo de barras a usar es el 39

ANTES DE EMPEZAR seguramente ya sabes que existen varios tipos de codigo de barras, tambien deberias saber que los numeros de los codigos de barra pueden contener informacion de la empresa, producto, ubicacion etc.
aqui no pretendo explicar esos detalles sino solamente la manera en que podemos imprimir unos codigos de barra de manera sencilla y rapida con pocas lineas y pocos minutos.

Bueno, si no tienes instalado el crystal reports descargalo y lo instalas. puedes descargarlo desde aqui:
http://huleronetfiles.sytes.net/cr_cb/crystal_reports_para_vs2010 13.0.1.exe

consigue la fuente del codigo de barra 39. esta puedes descargarla desde la pagina de font river:
http://es.fontriver.com/dingbats/bar_code/

tambien lo puedes descargar desde mi servidor:
http://huleronetfiles.sytes.net/cr_cb/ccode39.zip

DESCOMPRIME EL archivo ccode39.zip en una carpeta nueva en el escritorio.
- Entra a la carpeta donde descomprimiste el archivo zip
- copia el archivo ConnectCode39.ttf a la carpeta c:\windows\fonts
- con esto ya tienes instalada la fuente en windows

ABRE ACCESS y crea una base de datos en blanco
- ahora crea una tabla con 4 campos:
id_producto numero
descripcion texto
codigo numero
precio numero (double)
Imprimiendo codigos de barra en Crystal Reports con .NET

guarda la tabla con el nombre de codigos
guarda la base de datos con el nombre de prueba con FORMATO DE ACCESS 97-2003, osea, extension mdb.

ahora ingresale unos datos, al menos 5 registros
visual

guarda la tabla con los nuevos datos.
y cierras access.
hasta aqui con la base de datos.


ABRE EL Visual studio y crea un proyecto en visual basic de tipo windows forms
ponle el nombre de cc_test
crystal

Cuando se crea un nuevo proyecto de windows forms, vs nos agrega automaticamente un formulario llamado form1. Por ahora no le vamos a hacer caso a form1 y lo cerramos.

Agrega un nuevo item al proyecto
studio

el item que vas a agregar es Crystal Reports
codigo

luego, escoges la opcion de reporte en blanco y le das aceptar
Barras

entonces debe aparecer la pantalla de diseño del crystal reports, que es donde vamos a trabajar.
Visual Studio

a continuacion, primero hacemos la conexion a la base de datos
- sobre cualquier seccion del reporte pulsamos el boton izquierdo del raton y luego elegimos database y luego database expert
codigo de barras

luego, elegimos el item crear nueva conexion y luego access/excel
reports

en la ventana que nos aparece, localizamos la base que creamos hace un rato y le damos finalizar
Crystal Reports

ahora nos aparece la ventana anterior, pero con la conexion hacia la base prueba.mdb activa, la opcion de agregar un comando y con unica tabla disponible de la bd.
kill_spinal

vamos a elegir la opcion de AGREGAR COMANDO y pulsamos el boton de agregar
huleronet

entonces nos aparece una ventana para escribir un comando, o mas bien una consulta en lenguaje sql. Ahi vamos a poner una sentencia que nos devuelva los campos que necesitamos.
Hay que hacer notar que en tiempo de diseño, los datos devueltos seran los que pidamos en nuestro comando, sin embargo, en tiempo de ejecucion vamos a pedir solo los datos que necesitamos mediante el visual basic.
y bueno, en la ventana del comando ponemos:
select id_producto, descripcion, codigo, precio from codigos order by descripcion
y pulsamos aceptar
hulerotux

con esta accion regresamos a la pantalla anterior de datos, pero ahora ya nos muestra que tenemos un comando creado para el reporte.
Imprimiendo codigos de barra en Crystal Reports con .NET

una vez hecho esto, ya podemos cerrar la ventana de datos y centrarnos al disenio del reporte.
- en la parte izquierda de la ventana se encuentra la ventana FIELD EXPLORER en la que se encuentran los componentes que podemos insertar.
Expandimos la seccion Database Fields y luego Comando para visualizar que los campos del comando que creamos estan disponibles para insertarlos al reporte.
visual

y asi lo hacemos, insertamos los 4 campos en la seccion detalle del reporte.
la ubicacion sera cuestion de tu creatividad, pero para el ejemplo los voy a posicionar de la siguiente manera:
- primero inserto id_producto
- a la derecha inmediata de id_producto pongo la descripcion
- abajo de id_producto y ocupando todo el espacio hasta el final de la descripcion, voy a insertar el codigo
- abajo del codigo pongo el precio y ya.

todos los campos son alineados a la izquierda a excepcion del precio.

- en la seccion de ENCABEZADO DE INFORME ponemos un titulo cualquiera para el reporte usando un text object del toolbox con tamaño de letra 20
asi podria verse nuestro reporte:
crystal

El ultimo paso para terminar con el reporte es cambiar la fuente del campo codigo, para eso:
- seleccionamos el campo codigo y luego le cambiamos el tipo de letra por ccode39 (previamente copiada en c:\windows\fonts)
studio

- entonces observamos que el campo codigo ya cambio de numeros al codigo de barras.
codigo

ahora, para comprobar el reporte, le damos vista previa o main report preview (que es lo mismo) y nos debe mostrar el reporte con los cinco registro que ingresamos en access, pero mostrando su respectivo codigo de barra.
Barras

y si hasta aqui todo va bien, entonces ya podemos cerrar el reporte, previo guardado, por supuesto.

nota: para lo que sigue creo necesario aclarar la siguiente nomenclatura y prefijos:
cmd = commandButton o button
txt = textbox o text
lbl = label
cmb = combobox o combo
lst = list o listbox
chk = CheckBox

ademas...asegurate que el framework target no es client profile, sino, no vas a poder ejecutar el proyecto:
eso lo checas entrando a las propiedades del proyecto, luego te vas compilar y abajo buscas un boton que dice advanced compile options y ahi cambias el framework target.
el framework 4 tambien tiene problemas con crystal reports.
para el ejemplo estoy usando el 3.5 y todo corre perfecto.

ABRE EL FORM1 e insertale los siguientes controles:
- listbox con nombre lstItem
- CheckBox con nombre chkPrintAll
- Button con nombre cmdPrint

La ubicacion de cada uno depende de tu creatividad, para el ejemplo los voy a acomodar uno de bajo inmediato del otro como sigue:
primero el lstItem, debajo el chkPrintAll y abajo de este va el cmdPrint

no te olvides de ajustar el tamaño del form segun tu diseño
Visual Studio

lo que sigue es programar los eventos del formulario y sus controles.

primero el evento load del formulario:
aqui se debe cargar el campo descripcion de la tabla codigos. entonces escribimos el siguiente codigo:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dt As New System.Data.DataTable
Dim strQuery As String

strQuery = "select descripcion from codigos order by descripcion"
Dim strCnx As String = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=D:\Documentos\prueba.mdb" ' aqui guarde mi archivo prueba.mdb
Dim da As New System.Data.OleDb.OleDbDataAdapter(strQuery, strCnx)
da.Fill(dt)
If dt.Rows.Count > 0 Then
For Each r As System.Data.DataRow In dt.Rows
Me.lstItem.Items.Add(r(0).ToString)
Next
End If
dt.Clear()
dt.Dispose()
da.Dispose()
End Sub

no olvides cambiar la ruta de tu archivo prueba.mdb para que no te marque error.
pulsa f5 y si el formulario se ha ejecutado y ademas te muestra la lista con las descripciones de los productos, entonces ya podemos continuar con el codigo del ultimo control:
en el evento click del cmdPrint ponemos lo siguiente:

Private Sub cmdPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrint.Click
Dim strSQL As String
Dim strCnx As String
Dim dt As New DataTable
If Me.chkPrint.Checked = False Then
strSQL = "select id_producto, descripcion, codigo, precio from " _
& "codigos where descripcion = '" & Me.lstItem.SelectedItem.ToString & "'"
Else
strSQL = "select id_producto, descripcion, codigo, precio from " _
& "codigos order by descripcion"
End If
strCnx = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=D:\Documentos\prueba.mdb"
Dim da As New System.Data.OleDb.OleDbDataAdapter(strSQL, strCnx)
da.Fill(dt)
If dt.Rows.Count > 0 Then
Dim r As New CrystalReport1
r.SetDataSource(dt)
r.PrintToPrinter(1, True, 0, 0)
r.Close()
r.Dispose()
End If
da.Dispose()
dt.Clear()
dt.Dispose()
End Sub

- faltaria poner su try catch finally para evitar excepciones empty.
- recuerda modificar tambien aqui la ruta de tu archivo prueba.mdb

codigo de barras
reports

y asi, con un reporte y 48 lineas basicas de codigo podemos imprimir nuestros codigos de barra.


Crystal Reports

kill_spinal

huleronet


NOTAS FINALES
- como siempre, el codigo es muy basico y hace falta poner seguridad, pero lo importante es que observes el proceso de imprimir un reporte desde visual basic, y tambien como llenarlo con los datos que quieres imprimir.

- el diseño del reporte es arbitrario y simple porque esto no es una clase de diseño sino un post que muestra una de las tantas maneras de usar crystal reports con .net.

- el reporte puede ser ajustado para imprimir en columnas sobre etiquetas.

saludos.