Haremos un buscador de datos de un empleado y mostraremos los resultados en un reporte de Crystal Report, para esto utilizaremos VB2010 y la base de datos: empleado, la cual tiene los siguientes campos
el termino de búsqueda sera el código del empleado, el cual en mi caso tiene tres números y para realizar esta búsqueda haremos uso de un formulario el cual solo tiene un campo de texto y un botón les deje los nombres por defecto a cada control(Form1, TextBox1 y Button1) pues lo importante es el funcionamiento, ustedes sabrán como darle una vista apropiada.
Ahora agreguemos un Dataset, para esto click derecho sobre el proyecto y seleccionamos dentro de la categoría Data al dataset y de nombre le dejamos Datos.xsd
y desde nuestro Server Explorer agregamos desde nuestra base de datos, la tabla empleado y guardamos
Ahora agregamos un reporte de Crystal Report, de nuevo click derecho sobre nuestro proyecto y agregamos un nuevo item
escogemos Crystal Report y de nombre le dejamos Reporte
Escogemos usar el asistente y seleccionamos el origen de datos, que sera la tabla empleado y todos los campos de esta tal como se muestra
Ahora agregamos un nuevo formulario al que llamare Show y sobre este agrego un control CrystalreportViewer, luego sobre el Form1, que es el que tiene el botón y la caja de texto, ponemos este código:
Imports
System.Data
Imports
System.Data.SqlClient
Public
Class Form1
Private Sub Button1_Click(sender As
System.Object, e As
System.EventArgs) Handles
Button1.Click
Dim codigo As String = TextBox1.Text 'de aquí tomo el
valor del código a buscar
Dim ds As New Datos 'referencia al Dataset creado: Datos
Dim rpt As New Reporte 'referencia al reporte en Crystal Report
Dim muestra As New Show 'nombre
del formulario con el CrystalReportViewer
Try
Using
Sql As New SqlConnection(My.Settings.cnn) 'cnn conexión en app.config
Sql.Open()
Using
cmd As New SqlCommand()
cmd.Connection = Sql
cmd.CommandText = "select * from
empleado where codigo=@codigo"
cmd.Parameters.AddWithValue("@codigo",
codigo)
Using da As
New SqlDataAdapter(cmd)
da.Fill(ds, "busqueda")
rpt.SetDataSource(ds.Tables("busqueda"))
muestra.CrystalReportViewer1.ReportSource = rpt
muestra.ShowDialog()
End Using
End
Using
End
Using
Catch
ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
End
Class
y solo ejecutamos, como ven toda la información se obtiene en Form1 y luego solo presentamos el Formulario show con el reporte.
************************************************************************************
PERO si lo que quieren es que el formulario que contenga el CrystalreportViewer sea el que haga la busqueda, pues hagamos esto en Form1
Imports
System.Data
Imports
System.Data.SqlClient
Public Class Form1
Private Sub Button1_Click(sender As
System.Object, e As
System.EventArgs) Handles
Button1.Click
Dim formulario As New Show
formulario.buscar(TextBox1.Text)
formulario.ShowDialog()
End Sub
End
Class
y en el formulario Show para que este realice la búsqueda, debemos poner esto:
Imports
System.Data
Imports
System.Data.SqlClient
Public
Class Form2
Public Sub buscar(ByVal
codigo As String)
Dim
codigoB As String
= codigo
Dim ds As New Datos
Dim rpt
As New Reporte
Try
Using
Sql As New SqlConnection(My.Settings.cnn)
Sql.Open()
Using
cmd As New SqlCommand()
cmd.Connection = Sql
cmd.CommandText = "select * from empleado where codigo=@codigo"
cmd.Parameters.AddWithValue("@codigo", codigoB)
cmd.ExecuteNonQuery()
Using
da As New SqlDataAdapter(cmd)
da.Fill(ds, "tblBusqueda")
rpt.SetDataSource(ds.Tables("tblBusqueda"))
CrystalReportViewer1.ReportSource = rpt
End
Using
End
Using
End
Using
Catch ex As Exception
End Try
End Sub
End
Class
eso es todo :)