none
necesito filtrar desde el form al crystal report usando mysql y visual studio 2013 en lenguaje vb.net RRS feed

  • Pregunta

  • tengo pocas cosas para hacerlo mas fácil

    la conexión a la base de datos.

    Imports MySql.Data
    Imports MySql.Data.Types
    Imports MySql.Data.MySqlClient
    
    Module conexion
        Public _cadena As String
        Public _conexion As New MySqlConnection
    
        Public Function conectardb() As Boolean
            Dim estado As Boolean = True
            Try
                _cadena = ("server=192.168.0.2;user id=wuser;password=worldpassword;database=laser")
                _conexion = New MySqlConnection(_cadena)
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                estado = False
    
            End Try
            Return estado
    
        End Function
        Public Sub cerrardb()
            _conexion.Close()
        End Sub
        Public Sub opendb()
            _conexion.Open()
    
        End Sub
        Private _adaptador As New MySqlDataAdapter
        Public _dtsbusdatos As New DataSet
        Public _dtvbusdatos As New DataView
        Public Sub buscargrid()
            Try
                conectardb()
                _adaptador.SelectCommand = New MySqlCommand("SELECT * FROM laser.datos", _conexion)
                _adaptador.Fill(_dtsbusdatos)
                _dtvbusdatos.Table = _dtsbusdatos.Tables(0)
                _conexion.Open()
                _adaptador.SelectCommand.Connection = _conexion
                _adaptador.SelectCommand.ExecuteNonQuery()
    
            Catch ex As MySqlException
                MessageBox.Show(ex.Message)
            Finally
    
                cerrardb()
    
            End Try
        End Sub
    End Module

    los filtros del datagrid

    Imports MySql.Data
    Imports MySql.Data.Types
    Imports MySql.Data.MySqlClient
    Public Class BUSCAR
        
    
        Shared Function BusModelo(ByVal dato As String) As DataTable
            Dim _adaptador As New MySqlDataAdapter
            Dim tablaUni As New DataTable
            Try
                _adaptador.SelectCommand = New MySqlCommand("SELECT * FROM datos where MODELO LIKE '%" + dato.Trim + "%'", _conexion)
                _adaptador.SelectCommand.CommandType = CommandType.Text
                _adaptador.Fill(tablaUni)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Return tablaUni
        End Function
        Shared Function BusLaser(ByVal dato As String) As DataTable
            Dim _adaptador As New MySqlDataAdapter
            Dim tablaUni As New DataTable
            Try
                _adaptador.SelectCommand = New MySqlCommand("SELECT * FROM datos where LASER LIKE '%" + dato.Trim + "%'", _conexion)
                _adaptador.SelectCommand.CommandType = CommandType.Text
                _adaptador.Fill(tablaUni)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Return tablaUni
        End Function
    End Class
    y el formulario
    Public Class LASER
        Private Sub LASER_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick
            'If Button3.Visible = False Then
            ' Button3.Visible = True
            'Else
            'Button3.Visible = False
            'End If
        End Sub
        Private Sub LASER_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'Button3.Visible = False
            _dtsbusdatos.Tables.Clear()
            _dtsbusdatos.Clear()
            buscargrid()
            DataGridView1.DataSource = _dtvbusdatos
            DataGridView1.AutoResizeColumn(3)
            _dtvbusdatos.Table.Columns(0).ColumnName = "Id"
            _dtvbusdatos.Table.Columns(1).ColumnName = "Modelo"
            _dtvbusdatos.Table.Columns(2).ColumnName = "Linea"
            _dtvbusdatos.Table.Columns(3).ColumnName = "Laser"
            _dtvbusdatos.Table.Columns(4).ColumnName = "Maquina"
        End Sub
        Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
            DataGridView1.DataSource = BUSCAR.BusModelo(TextBox3.Text)
        End Sub
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            DataGridView1.DataSource = BUSCAR.BusLaser(TextBox1.Text)
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            TextBox1.Text = ""
            TextBox3.Text = ""
        End Sub
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Me.Close()
        End Sub
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            'Editar.Show()
        End Sub
    End Class

    ok información adicional.

    tengo un dataset creado con una tabla que tiene el nombre de la tabla en la base de datos mysql

    y tengo el reporte creado de crystal report estandar con los datos del dataset

    como lleno el dataset con los datos del mysql?

    y luego como muestro el reporte en mi form2 que tiene un crystal report viewer.

    agradezco desde ya su ayuda.

    otra cosa adicional si quisiera filtrar el reporte desde un textbox1.text

    como quedaria el codigo al final?



    • Editado garrid0b lunes, 8 de junio de 2015 19:24
    lunes, 8 de junio de 2015 19:22

Respuestas

  • listo ya encontre la solucion.

    aca la dejo

      Dim mydataset As New DataSet1 'el nombre del dataset creado
            Dim mydatatable As New DataSet1.datosDataTable 'es la tabla a la que hace referencia creada en dataset DATOS
            Dim rptlaser As New CrystalReport1 'reporte de crystal report con los datos del dataset
            Dim mostrar As New Editar ' el form que contiene el crystal viewer
    
            Dim filas As Integer = Me.DataGridView1.Rows.Count
            Dim i As Integer = 0
            For i = 0 To filas - 1 'despues de esto agregamos la cantidad de datos necesarios es decir los que contenga el datagrid en mi caso solo son 5 datos
                mydatatable.Rows.Add(Me.DataGridView1.Rows(i).Cells("iddatos").Value,
                                     Me.DataGridView1.Rows(i).Cells("modelo").Value,
                                      Me.DataGridView1.Rows(i).Cells("linea").Value,
                                       Me.DataGridView1.Rows(i).Cells("laser").Value,
                                        Me.DataGridView1.Rows(i).Cells("maquina").Value)
            Next (i)
            mydataset.Tables("datos").Merge(mydatatable)
            rptlaser.SetDataSource(mydataset)
            mostrar.CrystalReportViewer1.ReportSource = rptlaser
            mostrar.Show()

    • Marcado como respuesta garrid0b lunes, 8 de junio de 2015 20:31
    lunes, 8 de junio de 2015 20:31