none
OBTENER DATOS DESDE UN DATAGRIDVIEW RRS feed

  • Pregunta

  • Hola, les cuento , tengo este codigo que me muestra todos los Analisis de una empresa en Comun,

    tengo una tabla que se llama Muestra que enlaza a las demas.. (subo que enlaza solamente a dos Organolepticos, y materiasEstrañas

    Muestra


    Organolepticos


    MateriasExtrañas


    al momento de cargar los datos me muestra algo mas o menos asi ...




    ahora lo que necesito es mandar a unos label un porcentaje de cumplimiento, por ejemplo que todas son normales tener un 100% si tengo 3 normales y 7 Anormales tener un 30% de cumplimiento..


    algo asi como esto..


    para rellenar todo tengo este codigo que encontre en internet y modifique y que me sirve de lo mas bien...

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     Select Case ComboBox1.Text
    
    
    
      Case "Foraneos/Platos Preparados"
    
    
    
      'enviar el control ComboBox y la consulta 
    
    
    
      data1(data, 

    SELECT

    Empresa.Nombre as [Nombre Empresa],

    Muestra

    .Protocolo,

    Muestra

    .Fecha as [Fecha],

    Muestra

    .TipoExamen as [Tipo Muestra],

    Muestra

    .Producto,

    Muestra

    .Descripcion,

    Organolepticos

    .Resultado AS [Organolepticos],

    MateriaExtrana

    .Resultado as [MateriasExtrañas],

    OtrosAnalisis

    .Resultado as [OtrosAnalisis]

    FROM

    Empresa INNER JOIN

    Muestra

    ON Muestra.Rol = Empresa.Rol INNER JOIN

    Organolepticos

    ON Muestra.Protocolo = Organolepticos.NumProtocolo INNER JOIN

    MateriaExtrana

    On Muestra.Protocolo = MateriaExtrana. NumProtocolo INNER JOIN

    OtrosAnalisis

    on Muestra.Protocolo = OtrosAnalisis.NumProtocolo

    " WHERE Muestra.Rol = " & My.Forms.Informe1.Rol & "") End Class



    TENGO ESTE CODIGO AHORA, PERO EL PROBLEMA ES QUE ME SIGUE MOSTRANDO VALOR 0 (CERO)

     

    Private Sub CalcularValores()
    
    
    
    
    
    
    
     ' contador de organoelepticos
    
    
    
     Dim co As Double = 0
    
    
    
     'contador de Rotulacion
    
    
    
     Dim ce As Double = 0
    
    
    
     Dim i As Integer
    
    
    
     For i = 0 To data.RowCount - 1
    
    
    
      ' pregunta por la posicion donde esta el organoeleptico
    
    
    
      If data.Item(6, i).Value Is "Normal" Then
    
    
    
      co += 1
    
    
    
      End If
    
    
    
      ' pregunta por la posicion donde esta Rotulacion
    
    
    
      If data.Item(7, i).Value Is "Normal" Then
    
    
    
      ce += 1
    
    
    
      End If
    
    
    
     Next
    
    
    
    
    
    
    
     ' obtener porcentaje por regla de tres
    
    
    
    
    
    
    
     Dim poro As Double = CInt(co * 100)
    
    
    
     Dim pore As Double = CInt(ce * 100) 
    
    
    
     ' al final mostramos en los label
    
    
    
    
    
    
    
     Label20.Text = (poro) & " %"
    
    
    
     Label21.Text = (pore) & " %"
    
    
    
    
    
    
    
     Label28.Text = CStr(co)
    
    
    
     Label29.Text = CStr(ce)
    
    
    
    
    
    
    
     
    
    
    
    
    
    
    
     End Sub
    
    
    
    

     

     

     

     

    DE ANTEMANO MUCHAS GRACIAS POR LA AYUDA

    lunes, 23 de agosto de 2010 12:39

Todas las respuestas

  • Hola, Podrias tener una Función que haga lo siguiente:

    dim dlbPorcentajeOrgano as double=0

    dim dlbPorcentajeMateria as double=0

    for Each row as DataGridViewRow in tuDataGridView.Rows

    if row.Cells("organoLepticos").Value="Normal") then

    dlbPorcentajeOrgano  + =1

    end if

    if row.Cells("Materia").Value="Normal") then

    dlbPorcentajeMateria+ =1

    end if

    next

    dlbPorcentajeOrgano  =dlbPorcentajeOrgano  * 100 / tuDataGridView.RowCount

    dlbPorcentajeMateria=dlbPorcentajeMateria* 100 / tuDataGridView.RowCount

    tuLabel1.Text=dlbPorcentajeOrgano.ToString() & "%"

    tuLabel2.Text=dlbPorcentajeMateria.ToString() & "%"


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    lunes, 23 de agosto de 2010 12:45
    Moderador
  • hola

    podrias ejecutar dos coneslta para recuperar stas cantidades que necesitas

    lo prmero por obtener es la cantidad total de registros

    "SELECT COUNT(*) As Cantidad " & _
        "FROM   Empresa INNER JOIN " & _
                " Muestra ON Muestra.Rol = Empresa.Rol INNER JOIN " & _
                " Organolepticos ON Muestra.Protocolo = Organolepticos.NumProtocolo "

     

    la seguna la cantidad la debes agrupar por resulado

    "SELECT Organolepticos.Resultado AS [Organolepticos]," & _
        "COUNT(*) As Cantidad " & _
        "FROM   Empresa INNER JOIN " & _
                " Muestra ON Muestra.Rol = Empresa.Rol INNER JOIN " & _
                " Organolepticos ON Muestra.Protocolo = Organolepticos.NumProtocolo " & _
        "GROUP BY Organolepticos.Resultado"

     

    teniendo los dos valoes puedes realiar el calculo de porcentaje

    lo mismo aplicas para materias extrañas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 23 de agosto de 2010 12:55
  • Hola, Podrias tener una Función que haga lo siguiente:

    dim dlbPorcentajeOrgano as double=0

    dim dlbPorcentajeMateria as double=0

    for Each row as DataGridViewRow in tuDataGridView.Rows

    if row.Cells("organoLepticos").Value="Normal") then

    dlbPorcentajeOrgano  + =1

    end if

     

    if row.Cells("Materia").Value="Normal") then

    dlbPorcentajeMateria+ =1

    end if

     

    next

    dlbPorcentajeOrgano  =dlbPorcentajeOrgano  * 100 / tuDataGridView.RowCount

    dlbPorcentajeMateria=dlbPorcentajeMateria* 100 / tuDataGridView.RowCount

    tuLabel1.Text=dlbPorcentajeOrgano.ToString() & "%"

    tuLabel2.Text=dlbPorcentajeMateria.ToString() & "%"


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    Algo asi es lo que andaba buscando , pero aun me siguen mostrando los valores en cero. no me cambian de valor...
    lunes, 23 de agosto de 2010 13:31
  • help Me !!
    lunes, 23 de agosto de 2010 16:29

  • has probado ejecutando las queries en donde agrupas y evuelves los valors concretos para realzar el calculo

    de esta forma no necesitas recorrer las rows de ningun control

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 23 de agosto de 2010 16:35

  • has probado ejecutando las queries en donde agrupas y evuelves los valors concretos para realzar el calculo

    de esta forma no necesitas recorrer las rows de ningun control

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    si si eh intentado, pero el problema es que no son solo esas dos consultar son alrededor de 12, asi que me sale mas facil recorrer el data..

     

    lunes, 23 de agosto de 2010 16:44
  • Con la forma que te  indique mas arriba, has ido depurando, para ver que está todo correcto? has puesto bien los nombres de los campos.

     

    Podrias comparar los datos en mayusculas con un ToUpper()...


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    martes, 24 de agosto de 2010 6:43
    Moderador
  • Hola:
    La consulta que estas poniendo no es correcta.
    Esta linea
    INNER JOIN MateriaExtrañas. NumProtocolo On Muestra.Protocolo = Rotulacion.NumProtocolo
    la cambias por esta
    INNER JOIN MateriaExtrañas On Muestra.Protocolo = MateriaExtrañas.NumProtocolo
    Esta linea
    INNER JOIN OtrosAnalisis on Muestra.Protocolo = MateriaExtrañas. NumProtocolo
    la cambias por esta
    INNER JOIN OtrosAnalisis on Muestra.Protocolo = OtrosAnalisis.NumProtocolo

    Un saludo desde Bilbo
    Carlos

    martes, 24 de agosto de 2010 7:49
  • Hola:
    La consulta que estas poniendo no es correcta.
    Esta linea
    INNER JOIN MateriaExtrañas. NumProtocolo On Muestra.Protocolo = Rotulacion.NumProtocolo
    la cambias por esta
    INNER JOIN MateriaExtrañas On Muestra.Protocolo = MateriaExtrañas.NumProtocolo
    Esta linea
    INNER JOIN OtrosAnalisis on Muestra.Protocolo = MateriaExtrañas. NumProtocolo
    la cambias por esta
    INNER JOIN OtrosAnalisis on Muestra.Protocolo = OtrosAnalisis.NumProtocolo

    Un saludo desde Bilbo
    Carlos

    Si Chaval, resulta que fue un error de tipeo, al momento de copiar la informacion a este posteo, muchas gracias y lo modificare ahora...
    martes, 24 de agosto de 2010 12:49