Indicadores access

Otra vez yop... Soy el de los indicadores de los motores... Aja le explico, yo hice lo que me dijo y salio muy bien... Y adicionalmente se lo hice también a otra tabla que es de las distintas plantas y sus estados.. Claro cambie el nom de la tabla y del campo...
Aja mi pregunta es... Así saco los datos generales.. ¿pero si quisiera hacer un filtro se puede?
Le explico...
Tengo 30 plantas, y cada planta tiene N cantidades de equipos.
De la tabla sistema, esta el campo troquel de equipo y estado del troquel, como le había dicho..
Hay otra tabla que se llama inventario de motores donde allí están varios campos entre los cuales están troquel del equipo y planta, estas dos tablas tienen una relación.
Quisiera saber si hay alguna forma de que por ejemplo seleccione una planta y me calcule los indicadores de esa planta con respecto a los troqueles de equipo y estado del troquel..
En pocas palabras lo que me hiciste pero filtrando por plantas.. Noc si me entiendes.. Si no entiendes

1 Respuesta

Respuesta
1
No se entiende muy bien, si me pudieras un ejemplo me quedaría más claro como lo tienes estructurado y como lo quieres ver.
Oki oki... le explico... tengo una tabla que se llama sistemaque tiene dos campos, el primer campo se llama troquel del equipo, y el otro campo se llama estado del troquel. El campo estado de troquel se llena unicamente con los datos bueno, alerta y peligro dependiendo el caso. Y el campo troquel del equipo se llenan con datos de texto (combinación de números con texto). En fin usted me resolvió el problema que yo tenia de que no sabia sacar indicadores.
Numero de equipos en alerta/total de equipos*100
numero de equipos en peligro/total de equipos*100
numero de equipos en alerta/total de equipos *100...
Ok todo esto salio bien con la solución que me diste, pero esos serian datos generales de la empresa... ahora quiero ir un poco más internamente...
Cada troquel del equipo pertenece a una planta (pueden haber N cantidades de troqueles de equipos por planta), pero en la tabla Sistema salen todos los troqueles sin especificación de quew a que planta pertenecen.
Yo tengo otra tabla que se llama inventario de motores, que tiene varios campos entre los cuales están los campos "planta" (planta a la que pertenece el troquel equipo) y el campo "troquel del equipo".
Estas dos tablas que son "Sistema" y "inventario de motores" están relacionadas...
Aja experto lo que yo deseo y no se si se pueda.. es que yo seleccione una planta cualquiera y me saque los indicadores con los troqueles del equipo de esa planta nada más... ¿me entiendes?
Bueno si no entiendes muy bien si quieres me mandas un correo y te mando la base...
muchas gracias... espero puedas ayudarme
Hm, ¿o sea que quieres que te muestre esas fórmulas para algún criterio especifico?
Si eso mismo quisiera que me diera esos 3 indicadores para un criterio especifico... que en este caso seria las plantas...
Por ejemplo: que seleccione vamos a suponer Planta de pellas... y me saque los indicadores con respecto a los equipos de troquel que pertenecen a esa planta...
gracias por responder experto..
Bien, pues para eso lo único que tienes que hacer es añadirle el criterio en la linea del código.
strSql = "SELECT " & NomCamp & " FROM " & NomTabla & ";"
Quedaria así:
strSql = "SELECT " & NomCamp & " FROM " & NomTabla & " where <aquí ponle el criterio> " & ";"
¿Aja no entendí muy bien... en que parte le agrego eso?
Aja le explico yo lo que tengo es un formulario con 3 textbox donde muestra cada uno de los indicadores y el botón que ejecuta esa acción... osea esto es según me recomedaste la vez pasada... para la parte general pues...
¿Ahora bien donde coloco este criterio?
¿En el botón?
noc mucho de esto je je
ajap...
Me da un mensaje que dice se ha producido el error 3075 en tiempo de ejecución.
Error de sintaxis (falta operador) en la expresión de consulta ´<BARRAS>´.
y esta expresion se puso en resaltador amarillo, Set rst = CurrentDb.OpenRecordset(strSql)
Private Sub Comando10_Click()
Dim rst As DAO.Recordset
 Dim strSql As String
 Dim NomCamp As String
 Dim NomTabla As String
 Dim xtotal, xbueno, xpeligro, xalerta As Integer
 NomCamp = "[Estado del troquel]"
 NomTabla = "sistema"
 xtotal = 0
 xbueno = 0
 xpeligro = 0
 xalerta = 0
 If Nz(NomCamp, "") <> "" Then
    If Nz(NomTabla, "") <> "" Then
       strSql = "SELECT " & NomCamp & " FROM " & NomTabla & " where <BARRAS> " & ";"
        Set rst = CurrentDb.OpenRecordset(strSql)
        With rst
            If (Not .EOF) And (Not .BOF) Then
                Do While Not .EOF
                    xtotal = xtotal + 1
                    If .Fields(0) = "alerta" Then
                          xalerta = xalerta + 1
                    End If
                    If .Fields(0) = "bueno" Then
                          xbueno = xbueno + 1
                    End If
                    If .Fields(0) = "peligro" Then
                          xpeligro = xpeligro + 1
                    End If
                    .MoveNext
                Loop
            End If
        End With
    End If
 End If
 bueno.Value = Round(xbueno / xtotal * 100)
 alerta.Value = Round(xalerta / xtotal * 100)
 peligro.Value = Round(xpeligro / xtotal * 100)
End Sub
strSql = "SELECT " & NomCamp & " FROM " & NomTabla & " where <BARRAS> " & ";"
El fallo esta en el criterio.
¿Cómo se llama el campo? ¿Y dónde tienes guardado el valor que deseas que te filtre?
Si yo creo que esta allí el error aja te explico
- Tengo la tabla "sistema" que tiene 2 campos: troquel de equipo y estado del troquel. (De aquí es que he estado utilizando los datos para los indicadores).
- Y tengo la tabla "inventario de motores" en los cuales tengo los campos: Plantas y troquel de equipo.
Ambas tablas tienen una relación.
Osea el campo para hacer el filtro esta en la tabla "inventario de motores" y el campo para hacer ese filtro es el que se llama plantas.
Por eso te preguntaba que no sabia si se podía hacer eso, pues como están en tablas diferentes. Aunque ambas tablas tienen una relación.
gracias por responder m ipana..
Entonces se nos va a complicar un poco.
Vamos por pasos, primero create una consulta sobre esas dos tablas que te muestre los campos que deseas ver (es decir el campo con el criterio que dices y el campo donde hay los valores.
Después de eso, vete a vista sql de esa consulta y copia lo que haya aquí mismo.
Ok ok... ya hice la consulta, se llama "Consulta planta"
Y la vista sql me dice esto
SELECT [INVENTARIO DE MOTORES].PLANTA, sistema.[troquel de equipo], sistema.[Estado del troquel]
FROM sistema INNER JOIN [INVENTARIO DE MOTORES] ON sistema.[troquel de equipo] = [INVENTARIO DE MOTORES].TROQUEL;
Bien, ahora en el código VB, sustituiremos:
strSql = "SELECT " & NomCamp & " FROM " & NomTabla & " where <BARRAS> " & ";"
por:
strSql = "SELECT [INVENTARIO DE MOTORES].PLANTA, sistema.[troquel de equipo], sistema.[Estado del troquel] FROM sistema INNER JOIN [INVENTARIO DE MOTORES] ON sistema.[troquel de equipo] = [INVENTARIO DE MOTORES].TROQUEL;"
Y así tenemos que .fields(0) se refiere a Planta, .fields(1) a troquel y .fields(2) a estado.
Como lo que queremos es contar estados, sustituimos:
If .Fields(0) = "alerta" Then
    xalerta = xalerta + 1
End If
If .Fields(0) = "bueno" Then
    xbueno = xbueno + 1
End If
If .Fields(0) = "peligro" Then
     xpeligro = xpeligro + 1
End If
por:
If .Fields(2) = "alerta" Then
    xalerta = xalerta + 1
End If
If .Fields(2) = "bueno" Then
    xbueno = xbueno + 1
End If
If .Fields(2) = "peligro" Then
     xpeligro = xpeligro + 1
End If
Y espero y deseo que con esto ya funcione

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas