none
Referencia a objeto no establecida como instancia a un objeto RRS feed

  • Pregunta

  • Hola a todos

    les explico mi problema, necesito ocultar columnas de un datagridview y que las columnas que oculte también lo hagan en un reporte que genero después. Cuando quise ocultar las columnas utilizando controles checkbox, no tuve muchos problemas(a nivel de datagridview) eso el programa lo hace perfecto, pero cuando genero el reporte las columnas siguen estando ahí, creo que es por que declaro el código que hace el filtro después de

    Dim adaptador As New SqlDataAdapter(comando)
                    Dim datatable As New DataTable()
                    Dim ds As New DataSet
                    adaptador.Fill(datatable)
                    DataGridView1.DataSource = datatable

     . Pero cuando lo intento declarar antes de este código para que sea tomado en cuenta a la hora de hacer el filtro(No me muestra ningún error de código), me muestra un error cuando ejecuto la aplicación: Referencia a objeto no establecida como instancia a un objeto.

    No se a que se debe este error, alguien seria tan amable de explicarme por que me muestra ese error? y si pudiese decirme la forma de corregirlo. Aun si no sabe la forma de corregirlo también me basta para aprender, que solo me digan el por que de ese error. Les dejo el código Saludos

    Private Sub btnconsulta_Click(sender As System.Object, e As System.EventArgs) Handles btnconsulta.Click
    
            Try
    
                Using conexionSQL As New SqlConnection(My.Settings.prueba3)
    
                    Dim comando As SqlCommand = conexionSQL.CreateCommand()
    
                    comando.CommandText = "sp_ReportePatagon1"
                    comando.CommandType = CommandType.StoredProcedure
                    comando.Parameters.AddWithValue("@FechaInicio", fechaHoraIni)
                    comando.Parameters.AddWithValue("@FechaFin", fechaHoraFin)
                    comando.Parameters.AddWithValue("@Bodega1", If(chbxBabor.Checked, "Babor", "-"))
                    comando.Parameters.AddWithValue("@Bodega2", If(chbxEstribor.Checked, "Estribor", "-"))
    
    'If chbxCO2.Checked Then
                    '    comando.Parameters.AddWithValue("@CO2",
                    '        Me.DataGridView1.Columns("CO2").Visible = True)
                    'Else
                    '    comando.Parameters.AddWithValue("@CO2",
                    '        Me.DataGridView1.Columns("CO2").Visible = False)
                    'End If
    
                    'If chbxOxi1.Checked Then
                    '    comando.Parameters.AddWithValue("@Oxigeno_1",
                    '    Me.DataGridView1.Columns("Oxigeno_1").Visible = True)
                    'Else
                    '    comando.Parameters.AddWithValue("@Oxigeno_1",
                    '    Me.DataGridView1.Columns("Oxigeno_1").Visible = False)
                    'End If
    
                    'If chbxOxi2.Checked Then
                    '    comando.Parameters.AddWithValue("@Oxigeno_2",
                    '    Me.DataGridView1.Columns("Oxigeno_2").Visible = True)
                    'Else
                    '    comando.Parameters.AddWithValue("@Oxigeno_2",
                    '    Me.DataGridView1.Columns("Oxigeno_2").Visible = False)
                    'End If
    
                    'If chbxTemp.Checked Then
                    '    comando.Parameters.AddWithValue("@Temperatura",
                    '    Me.DataGridView1.Columns("Temperatura").Visible = True)
                    'Else
                    '    comando.Parameters.AddWithValue("@Temperatura",
                    '    Me.DataGridView1.Columns("Temperatura").Visible = False)
                    'End If
    
                    'If chbxPh.Checked Then
                    '    comando.Parameters.AddWithValue("@Ph",
                    '    Me.DataGridView1.Columns("Ph").Visible = True)
                    'Else
                    '    comando.Parameters.AddWithValue("@Ph",
                    '    Me.DataGridView1.Columns("Ph").Visible = False)
                    'End If
    
                    'If chbxFlujo.Checked Then
                    '    comando.Parameters.AddWithValue("@Flujo",
                    '    Me.DataGridView1.Columns("Flujo").Visible = True)
                    'Else
                    '    comando.Parameters.AddWithValue("@Flujo",
                    '    Me.DataGridView1.Columns("Flujo").Visible = False)
                    'End If
    
                    'If chbxDosis.Checked Then
                    '    comando.Parameters.AddWithValue("@Dosis",
                    '    Me.DataGridView1.Columns("Dosis").Visible = True)
                    'Else
                    '    comando.Parameters.AddWithValue("@Dosis",
                    '    Me.DataGridView1.Columns("Dosis").Visible = False)
                    'End If
    
                    'If chbxTrasmit.Checked Then
                    '    comando.Parameters.AddWithValue("@Trasmit",
                    '    Me.DataGridView1.Columns("Trasmit").Visible = True)
                    'Else
                    '    comando.Parameters.AddWithValue("@Trasmit",
                    '    Me.DataGridView1.Columns("Trasmit").Visible = False)
                    'End If
    
    
                    Dim adaptador As New SqlDataAdapter(comando)
                    Dim datatable As New DataTable()
                    Dim ds As New DataSet
                    adaptador.Fill(datatable)
                    DataGridView1.DataSource = datatable
    
                    DataGridView1.Columns(5).HeaderText = "Oxígeno 1"
                    DataGridView1.Columns(6).HeaderText = "Oxígeno 2"
    
                    If chbxCO2.Checked Then
                        Me.DataGridView1.Columns("CO2").Visible = True
                    Else
                        Me.DataGridView1.Columns("CO2").Visible = False
                    End If
    
                    If chbxOxi1.Checked Then
                        Me.DataGridView1.Columns("Oxigeno_1").Visible = True
                    Else
                        Me.DataGridView1.Columns("Oxigeno_1").Visible = False
                    End If
    
                    If chbxOxi2.Checked Then
                        Me.DataGridView1.Columns("Oxigeno_2").Visible = True
                    Else
                        Me.DataGridView1.Columns("Oxigeno_2").Visible = False
                    End If
    
                    If chbxTemp.Checked Then
                        Me.DataGridView1.Columns("Temperatura").Visible = True
                    Else
                        Me.DataGridView1.Columns("Temperatura").Visible = False
                    End If
    
                    If chbxPh.Checked Then
                        Me.DataGridView1.Columns("Ph").Visible = True
                    Else
                        Me.DataGridView1.Columns("Ph").Visible = False
                    End If
    
                    If chbxFlujo.Checked Then
                        Me.DataGridView1.Columns("Flujo").Visible = True
                    Else
                        Me.DataGridView1.Columns("Flujo").Visible = False
                    End If
    
                    If chbxDosis.Checked Then
                        Me.DataGridView1.Columns("Dosis").Visible = True
                    Else
                        Me.DataGridView1.Columns("Dosis").Visible = False
                    End If
    
                    If chbxTrasmit.Checked Then
                        Me.DataGridView1.Columns("Trasmit").Visible = True
                    Else
                        Me.DataGridView1.Columns("Trasmit").Visible = False
                    End If
                End Using
            Catch ex As Exception
                MessageBox.Show("Se produjo un error : " & ex.Message)
    
            End Try
    
    
        End Sub
    
        Private Sub 
    
     
    
        Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click
            Dim dt As New DataTable
            dt = CType(Me.DataGridView1.DataSource, DataTable)
    
            Dim cr As New CrystalReport79
            cr.SetDataSource(dt)
    
            Dim R As New Reporte
            R.crvReporte.ReportSource = cr
            R.ShowDialog()
    

    • Cambiado Enrique M. Montejo martes, 31 de mayo de 2016 6:11 Pregunta relacionada con el acceso a datos con SQL Server.
    miércoles, 25 de mayo de 2016 14:30

Respuestas

  • Hola:
    ¿Porque no haces la consulta en funcion de los checkbox que tienes marcados?
    Ejemplo:
    If Me.CheckBox1.Checked=True Then
       Cargar Grid con Consulta1
    ElseIf Me.CheckBox2.Checked=True Then
       Cargar Grid con Cosulta2
    End If

    Luego como origen de datos para el Crystal, pones el datatable que tiene el Grid

    Un saludo desde Bilbo
    Carlos
    • Marcado como respuesta adriian.91 viernes, 3 de junio de 2016 20:57
    lunes, 30 de mayo de 2016 5:07

Todas las respuestas

  • ¿Desde dónde de estás llamando a se código? Si por casualidad es desde algún evento Change del formulario ten en cuenta que esos eventos se ejecutan en el Load del formulario.

    Si es así puedes controlar esto con algo como

    Dim Cargando as boolean = True

    Public sub form1_load()

    // ....
    // al final de tu codigo
    Cargando = False

    end sub

    Public Sub CboPorEjemplo_SelectedIndexChanged()
    if Not Cargando then
    // Aquí pones lo que quieres hacer, si es que hubiera codigo
    end if
    end sub


    Saludos, Javier J

    miércoles, 25 de mayo de 2016 17:10
  • lo primero decirte es que si esta variable no la usas la elimines

    Dim ds As New DataSet
    lo segundo es que hagas un buen control de excepciones. Intenta hacer un log a fichero para poder ver en qué parte de tu código realmente está el problema.cuando dices que se produce en tiempo de ejecución te refieres a una vez creado el exe? O en depuración pulsando F5. Si es esto ultimo puedes activar Depurar/Excepciones/marca casilla Common Runtime Language. Esto provoca que en depuración la ejecución de tu programa se detenga en la linea que genere una excepción. Así podemos ver donde está el error.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 26 de mayo de 2016 6:36
  • Don Javier el codigo no lo llamo desde ningun evento, y don Sergio el error es en depuracion realice lo que me dijo y el error me lo marca en esta linea

    comando.Parameters.AddWithValue("@CO2",
                            Me.DataGridView1.Columns("CO2").Visible = True)




    • Editado adriian.91 jueves, 26 de mayo de 2016 15:32
    jueves, 26 de mayo de 2016 15:29
  • hola. Entonces parece que el error está en que no existe una columna llamada CO2. Puedes verificarlo?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 26 de mayo de 2016 15:42
  • Ese es el problema, por que si existe...  Todas las columnas especificadas si existen. Lo que me aconsejaron es hacerlo fuera del procedimiento almacenado, por ejemplo 

     Sub seleccioncolumnas()
            Dim columnaOxig_1, columnaOxig_2, columnaTemp, columnaPh, columnaCO2, columnaFlujo, columnaDosis, columnaTrasmit As String
    
            If chbxOxi1.Checked = True Then
                columnaOxig_1 = ", ppa.Oxigeno_1"
    
            ElseIf chbxOxi2.Checked Then
                columnaOxig_2 = ", ppa.Oxigeno_2"
    
            ElseIf chbxTemp.Checked = True Then
                columnaTemp = ", ppa.Temperatura"
    
            ElseIf chbxPh.Checked = True Then
                columnaPh = ", ppa.Ph"
    
            ElseIf chbxCO2.Checked = True Then
                columnaCO2 = ", ppa.CO2"
    
            ElseIf chbxFlujo.Checked = True Then
                columnaFlujo = ", ppa.Flujo"
    
            ElseIf chbxDosis.Checked = True Then
                columnaDosis = ", ppa.Dosis"
    
            ElseIf chbxTrasmit.Checked = True Then
                columnaTrasmit = ", ppa.Trasmit"
    
            End If
    
            
        End Sub

    Pasarle los datos 

    Sub callcolumnas(columnaOxig_1 As String, columnaOxig_2 As String, columnaTemp As String, columnaPh As String, columnaCO2 As String, columnaFlujo As String, columnaDosis As String, columnaTrasmit As String)
            Dim conexionSQL As New SqlConnection(My.Settings.prueba3)
            Dim query As String
            query = " select ppa.Id, ppa.FechaHora, ppa.Latitud, ppa.Longitud, Velocidad, ppa.Oxigeno_1, ppa.Oxigeno_2, ppa.Temperatura, ppa.Ph, ppa.CO2, ppa.Flujo, ppa.Dosis, ppa.Trasmit, ppa.Bodega from T_Reporte1 where FechaHora between FechaInicio and FechaFin'" & "" & columnaOxig_1 & "" & columnaOxig_2 & "" & columnaTemp & "" & columnaPh & "" & columnaCO2 & "" & columnaFlujo & "" & columnaDosis & "" & columnaTrasmit
    
        End Sub
    y llamarla 
        Private Sub btnconsulta_Click(sender As System.Object, e As System.EventArgs) Handles btnconsulta.Click
    
            Dim fecha As DateTime = DtpFechaIni.Value.Date
            Dim hora As DateTime = CDate(DtpHoraIni.Value.ToString)
            Dim fechaHoraIni As New DateTime(
                fecha.Year, fecha.Month, fecha.Day, hora.Hour, hora.Minute, hora.Second)
    
            fecha = DtpFechaFin.Value.Date
            hora = CDate(DtpHoraTer.Value.ToString)
            Dim fechaHoraFin As New DateTime(
                fecha.Year, fecha.Month, fecha.Day, hora.Hour, hora.Minute, hora.Second)
    
    
    
            Try
    
                Using conexionSQL As New SqlConnection(My.Settings.prueba3)
    
                    Dim comando As SqlCommand = conexionSQL.CreateCommand()
    
                    comando.CommandText = "sp_ReportePatagon1"
                    comando.CommandType = CommandType.StoredProcedure
                    comando.Parameters.AddWithValue("@FechaInicio", fechaHoraIni)
                    comando.Parameters.AddWithValue("@FechaFin", fechaHoraFin)
                    comando.Parameters.AddWithValue("@Bodega1", If(chbxBabor.Checked, "Babor", "-"))
                    comando.Parameters.AddWithValue("@Bodega2", If(chbxEstribor.Checked, "Estribor", "-"))
    
                    seleccioncolumnas()
                    callcolumnas(columnaOxig_1, columnaOxig_2, columnaTemp, columnaPh, columnaCO2, columnaFlujo, columnaDosis, columnaTrasmit)
    
    
                    
                    Dim adaptador As New SqlDataAdapter(comando)
                    Dim datatable As New DataTable()
                    adaptador.Fill(datatable)
                    DataGridView1.DataSource = datatable
    
                    DataGridView1.Columns(5).HeaderText = "Oxígeno 1"
                    DataGridView1.Columns(6).HeaderText = "Oxígeno 2"
                    
    
    
                End Using
            Catch ex As Exception
                MessageBox.Show("Se produjo un error : " & ex.Message)
    
            End Try
    
    
        End Sub

    pero no se si lo estoy haciendo bien, o si se podra de esta forma 



    jueves, 26 de mayo de 2016 15:48
  • yo verificaria poniendo un punto de interrupción donde salta la excepción y con el puntero del raton situarte en Columns para poder ver toda la colección y verificar que existe. La verdad es un poco enrevesado lo wue intentas hacer. Yo devolveria todas las columnas desde tu consulta en el datatable y luego las ocultaria las que no hicieran falta. Basta que que en el datatable nobtengas una columna especificada para wue te salte esa excepcion

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 26 de mayo de 2016 16:00
  • también puedes intentar el hacer alias a las columnas.

    columnaCO2 = ", ppa.CO2 AS CO2"


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 26 de mayo de 2016 16:01
  • Cree el punto de interrupción don salta la excepción y al situar el puntero en columns me muestra esto

    Me.DataGridView1.Columns("CO2") = Nothing

    Como le digo la columna y todas las demás existen, si hago ese if después de este código

    Dim adaptador As New SqlDataAdapter(comando)
                    Dim datatable As New DataTable()
                    Dim ds As New DataSet
                    adaptador.Fill(datatable)
                    DataGridView1.DataSource = datatable

    La grilla oculta las columnas que deseo no ver, a que se deberá la expresion Nothing? a que no existe la columna? como puede no existir si insisto, al hacer el if después de esa linea de código no me muestra errores? ni siquiera al depurar...   Muchas gracias por la paciencia y espero pueda seguir ayudándome.

    jueves, 26 de mayo de 2016 16:34
  • alguien mas que me pueda ayudar?

    viernes, 27 de mayo de 2016 1:16
  • Deberías poner algún punto de interrupción en tu código y depurar paso a paso. Seguro que en algún momento estas asignando in datasource al dgv que no tiene esa columna (por lo menos) especificada

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 27 de mayo de 2016 4:06
  • Hola:
    > el error me lo marca en esta linea >
    comando.Parameters.AddWithValue("@CO2",Me.DataGridView1.Columns("CO2").Visible = True)
    Cambiala por esta
    Comando.Parameters.Add(New SqlParameter("@CO2", Me.DataGridView1.Columns("CO2")))

    Un saludo desde Bilbo
    Carlos

    viernes, 27 de mayo de 2016 5:50
  • Hola J.Carlos

    al hacer el cambio no me da ningún error de código, pero al depurarlo me dice:

    El procedimiento o la función 'sp_ReportePatagon1' esperaba el parámetro '@Oxigeno_1', que no se ha especificado.

    siendo que lo estas especificando...  

    Este es el procedimiento almacenado:

    ALTER procedure [dbo].[sp_ReportePatagon1]
    	@FechaInicio DateTime,
    	@FechaFin datetime,
    	@Bodega1 varchar(50),
    	@Bodega2 Varchar(50),
    	@Oxigeno_1 Varchar(50),
    	@Oxigeno_2 Varchar(50),
    	@Temperatura Varchar(50),
    	@Ph Varchar(50),
    	@CO2 Varchar(50),
    	@Flujo Varchar(50),
    	@Dosis Varchar(50),
    	@Trasmit Varchar(50)	
    
    AS
    BEGIN
     SET NOCOUNT ON;
    
     SELECT 
      ppa.Id,
      ppa.FechaHora,
      ppa.Latitud,
      ppa.Longitud,
      ppa.Velocidad,
      ppa.Oxigeno_1,
      ppa.Oxigeno_2,
      ppa.Temperatura,
      ppa.Ph,
      ppa.CO2,
      ppa.Flujo,
      ppa.Dosis,
      ppa.Trasmit,
      ppa.Bodega
     FROM  
     [T_Reporte1]  ppa 
      WHERE 
    		(ppa.FechaHora Between @FechaInicio and @FechaFin)	  
          AND ((ppa.Bodega = @Bodega1) OR (ppa.Bodega = @Bodega2))
    	and (ppa.Oxigeno_1 = @Oxigeno_1)
    	and (ppa.Oxigeno_2 = @Oxigeno_2)
      and (ppa.Temperatura = @Temperatura)
      and (ppa.Ph = @Ph)
      and (ppa.CO2 = @CO2)
      and (ppa.Flujo = @Flujo)
      and (ppa.Dosis = @Dosis)
      and (ppa.Trasmit = @Trasmit)
     
    
    Order by FechaHora DESC;
    END

    y así he dejado el código

     If chbxCO2.Checked Then
                        comando.Parameters.Add(New SqlParameter("@CO2", Me.DataGridView1.Columns("CO2")))
                    Else
                        comando.Parameters.AddWithValue("@CO2",
                            Me.DataGridView1.Columns("CO2").Visible = False)
                    End If
    
                    If chbxOxi1.Checked Then
                        comando.Parameters.Add(New SqlParameter("@Oxigeno_1", Me.DataGridView1.Columns("Oxigeno_1")))
                    Else
                        comando.Parameters.AddWithValue("@Oxigeno_1",
                        Me.DataGridView1.Columns("Oxigeno_1").Visible = False)
                    End If
    
                    If chbxOxi2.Checked Then
                        comando.Parameters.Add(New SqlParameter("@Oxigeno_2", Me.DataGridView1.Columns("Oxigeno_2")))
                    Else
                        comando.Parameters.AddWithValue("@Oxigeno_2",
                        Me.DataGridView1.Columns("Oxigeno_2").Visible = False)
                    End If
    
                    If chbxTemp.Checked Then
                        comando.Parameters.Add(New SqlParameter("@Temperatura", Me.DataGridView1.Columns("Temperatura")))
                    Else
                        comando.Parameters.AddWithValue("@Temperatura",
                        Me.DataGridView1.Columns("Temperatura").Visible = False)
                    End If
    
                    If chbxPh.Checked Then
                        comando.Parameters.Add(New SqlParameter("@Ph", Me.DataGridView1.Columns("Ph")))
                    Else
                        comando.Parameters.AddWithValue("@Ph",
                        Me.DataGridView1.Columns("Ph").Visible = False)
                    End If
    
                    If chbxFlujo.Checked Then
                        comando.Parameters.Add(New SqlParameter("@Flujo", Me.DataGridView1.Columns("Flujo")))
                    Else
                        comando.Parameters.AddWithValue("@Flujo",
                        Me.DataGridView1.Columns("Flujo").Visible = False)
                    End If
    
                    If chbxDosis.Checked Then
                        comando.Parameters.Add(New SqlParameter("@Dosis", Me.DataGridView1.Columns("Dosis")))
                    Else
                        comando.Parameters.AddWithValue("@Dosis",
                        Me.DataGridView1.Columns("Dosis").Visible = False)
                    End If
    
                    If chbxTrasmit.Checked Then
                        comando.Parameters.Add(New SqlParameter("@Trasmit", Me.DataGridView1.Columns("Trasmit")))
                    Else
                        comando.Parameters.AddWithValue("@Trasmit",
                        Me.DataGridView1.Columns("Trasmit").Visible = False)
                    End If
    
    
    
                    Dim adaptador As New SqlDataAdapter(comando)
                    Dim datatable As New DataTable()
                    adaptador.Fill(datatable)   '---> aqui me da el error
                    DataGridView1.DataSource = datatable

     

    • Editado adriian.91 viernes, 27 de mayo de 2016 13:29
    viernes, 27 de mayo de 2016 13:11
  • Sigo sin entender por que me dice que no se ha especificado el parámetro, lo siento soy bastante inexperto en el tema y necesito resolver esto con suma urgencia. Por favor alguien que me pueda orientar a como hacer esto si es que de esta forma no se puede
    viernes, 27 de mayo de 2016 19:33
  • Debes especificar los parámetros en el mismo orden en que los has declarado en tu procedimiento almacenado. Por tanto tu codigo debería setear el parámetro CO2 después de setear Ph.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 27 de mayo de 2016 22:59
  • Lo acabo de ordenar, exactamente como lo tengo ordenado en el SP pero me sigue dando el error:

    el procedimiento almacenado esperaba el parámetro 'Oxigeno_1' , que no se ha especificado.

    lo intento también dejando por ejemplo solo un parámetro de las columnas que deseo ocultar, el que sea y comento las demás para que no las tome en cuenta ni el procedimiento ni el código, pero me sigue dando el mismo problema, creo que algo en el código

                        comando.Parameters.Add(New SqlParameter("@CO2", Me.DataGridView1.Columns("CO2")))
    

    no permite que identifique el parámetro que esta esperando.

     
    viernes, 27 de mayo de 2016 23:10
  • Que deseas en tu ultimo,codigo? Meter el contenido de la columna "CO2"?? Debes especificar la propiedad a usar. Tal vez deseas recuperar el valor de la celda? No se si me explico. Ahora en tu codigo estas enviando un objeto de tipo DataGridViewColumn a tu parametro no el contenido de la misma

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 27 de mayo de 2016 23:30
  • Estimado Sergio

    si se explica bien, pero aunque le especifique que quiero ocultar la columna 

    If chbxOxi1.Checked Then
                        comando.Parameters.Add(New SqlParameter("@Oxigeno_1", Me.DataGridView1.Columns("Oxigeno_1").Visible = True))
                    Else
                        comando.Parameters.AddWithValue("@Oxigeno_1",
                        Me.DataGridView1.Columns("Oxigeno_1").Visible = False)
                    End If
    vuelvo a insistir en que no se por que me arroja el error de que no se ha especificado el parámetro. Siendo que esta declarado

    viernes, 27 de mayo de 2016 23:50
  • Hola..por qué haces dos formas diferentes de declarar parámetros? Yo usaría siempre el AddWithValues(). Deja tu código así, estableciendo la forma de crear parámetros igual

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    sábado, 28 de mayo de 2016 0:10
  • Otra cosa... Tu variable comando no estará definida a nivel de clase? Si es así es mala idea. Instancia un comando cada vez que quieras acceder a datos

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    sábado, 28 de mayo de 2016 0:11
  • Hola:
    Comentarios de esta parte del codigo
      If chbxOxi1.Checked Then
      'Si el checkbox esta marcado
          comando.Parameters.Add(New SqlParameter("@Oxigeno_1", Me.DataGridView1.Columns("Oxigeno_1")))
      'Añade el parametro @Oxigeno_1 al comando, y le da como valor el valor de la celda Oxigeno_1     
      Else
          comando.Parameters.AddWithValue("@Oxigeno_1",Me.DataGridView1.Columns("Oxigeno_1").Visible = False)
          'Sentencia erronea porque no le el valor de la celda Oxigeno_1, tienes que poner el valor que debe tomar ese parametro en el caso de que el checkbox NO esta marcado, en cambio le estas poniendo que la columna se invisible
      End If

    P.D.
    Espero que se entienda, porque yo no te entiendo que es lo que realmente quires hacer

    Un saludo desde Bilbo
     Carlos
    sábado, 28 de mayo de 2016 11:08
  • Don J.Carlos 

    Lo que quiero es exactamente ocultar la columna, en el DataGridView y a la vez en el Crystal report, eso lo dije en el encabezado, la verdad es que no se a que se refiere cuando dice que tengo que colocar el valor que debe tomar el parametro, en el caso de que el checkbox No este marcado, por que lo que quiero es que sea invisible si no esta marcada. Me entiende? 


    • Editado adriian.91 domingo, 29 de mayo de 2016 21:13
    domingo, 29 de mayo de 2016 21:13
  • Hola:
    ¿Porque no haces la consulta en funcion de los checkbox que tienes marcados?
    Ejemplo:
    If Me.CheckBox1.Checked=True Then
       Cargar Grid con Consulta1
    ElseIf Me.CheckBox2.Checked=True Then
       Cargar Grid con Cosulta2
    End If

    Luego como origen de datos para el Crystal, pones el datatable que tiene el Grid

    Un saludo desde Bilbo
    Carlos
    • Marcado como respuesta adriian.91 viernes, 3 de junio de 2016 20:57
    lunes, 30 de mayo de 2016 5:07