Curso Completo Base de datos

Archivo

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Archivo

    OK AQUI ESTA EL ARCHIVO
    EXPLICO UN POCO LO QUE DEBE HACER
    SELECCIONAR TEF
    HACER UN FILTRO POR FECHAS, TIPO DE FALLA Y EQUIPO

    EL RESULTADO TEF MOSTRARA LAS DETENCIONES DE LAS MAQUINAS EN HORAS, ES DECIR CADA CUANTAS HORAS ESTA FALLANDO, FINALMENTE DEBO SACAR UN PROMEDIO DE TODOS LOS TEF DE LA GRILLA (AUN NO LO HAGO)
    Y VA ADJUNTO UNA PLANILLA CON LOS DATOS MANUALES DE LAS FALLAS MECANICAS DE LA LINEA SPRINGER PARA COMPROBAR RESULTADOS.

    LO IDEAL PARA REALIZAR LOS CALCULOS SERIA TOMAR EL CAMPO:
    FECHA1 Y HORA TERMINO1
    FECHA2 Y HORA INICIO2
    COMO General Date PARA REALIZAR LOS CALCULOS

    EJ: 11-12-2009/ 4:39:00
    12-12-2009/ 22:39:00
    1 DIA, 18 HRS SEGUN EL SISTEMA - ESTA MAL-
    18 HRS ES LO CORRECTO



    OJALA SE COMPRENDA

  • #2
    Re: Archivo

    Estimada EstrellaVB:

    Llevo toda la mañana tratando de comprender la aplicación y no lo consigo. Trato de seguir tus indicaciones de filtrar TEF de un determinado equipo y tipo de fallo y no hay forma humana de que resuelva dato alguno.

    He entrado a las tablas de la base de datos CMPC.MDB y no acierto a vislumbrar la forma en la que relacionas la tabla TEF con los equipos que tienen fallos por las razones enumeradas.

    La tabla TEF tiene 5791 registros de los cuales solo unos pocos tienen información ¿Ya nos explicarás las causas?

    Por otra parte muchos botones de la aplicación te llevan a 1.- En Construcción...2.- Hacen falta mínimo 2 registros.


    Comprenderás que en estas condiciones poco podemos ayudarte si no sabemos que es lo que quieres hacer, si además tenemos en cuenta lo poco intuitiva que es la aplicación y la cantidad de 'flecos sueltos' que tiene.

    ¿Dónde se encuentra la planilla con los datos de las incidencias de una determinada máquina?

    Observo que tines unas opciones para seleccionar el tipo de distribución que quieres emplear, pero en tu mensaje hablas de promedios....

    Creas este nuevo mensaje que para todo aquel que no haya seguido los anteriores, desde luego no va a saber de que cosa 'más o menos' estamos hablando.


    No sé, Estrella, como no des más pistas va a ser complicado acertar.
    Un cordial saludo
    -Acalanto-

    Madrid - España

    Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

    Comentario


    • #3
      Re: Archivo

      Coicido totalmente con acalanto, me ha pasado igual estuve tratando de ver que pasaba o que asi pero asi es dificil. lo que le quiere resolver no vi en parte

      Comentario


      • #4
        Re: Archivo

        ok, aparecI
        sorry fds no me conecto
        explico el formulario con el que estoy trabajando es FRMTEF, al ejecutarlo yo selecciono un periodo de tiempo, tipo de falla y equipo y se filtran los datos desdela base de datos CMPC. Mdb (TABLA CONFIABILIDAD), luego me entrga resultados TEF que corresponden a horas de detencion, esta es la diferencia entre la fecha 1, hora de termino y fecha2 hora inicio.
        ej
        FECHA 05/11/2009 05/11/200
        FALLA Electrica
        EQUIPO Linea De Alimentación Springer Aserradero

        DATOS QUE APARECEN EN LA GRILLA

        FECHA MAQUINA LOGICA F INICIO F TERM TEF
        05/11/2009 Linea De Alimentación Springer 0:00:00 0:12:00
        05/11/2009 Linea De Alimentación Springer 6:23:00 6:26:00 96 HRS 09-11-2009 3:19:00 3:50:00 3


        SI LOGRAN VISUALIZAR ESTOS SE DARAN CUENTA QUE LA DIFERENCIA ENTRE EL 1º Y 2º DIA ES MENOS DE 24 HORAS Y NO 96 HRS
        Y ENTRE 05 Y 09 SON 4 DIAS * 22,5 HRS - (HTERM - HINICIO) NO PUEDE SER 3


        EL MENSAJE QUE DEBE EXISTIR MAS DE 2 REGISTROS ES SOLO INFORMACION YA QUE CON UN REGISTRO NO PUEDE ENTREGAR RESULTADOS,
        DESPUES DE EL MENSAJE SE CARGA LA GRILLA

        SALUDOS

        Comentario


        • #5
          Re: Archivo

          Francamente estimada EstrellaVB. Con el ánimo de ayudarte, he dedicado un par de horas largas de esta misma tarde a simular lo que haces con el formulario TEF.

          De verdad que todo lo que te diga no es para ofenderte ni para que te sientas ridícula en el foro, pero tienes un galimatías en el código que no hay por donde cogerlo.

          Estás tratando de diseñar y construir una aplicación que tiene cierta complejidad pero a mi juicio sin los conocimientos mínimos necesarios para llegar a buen término.

          Insertas componentes asociados a origenes de datos tipo ADODC pero luego abres por tu cuenta conexiones a las bases de datos y haces consultas mediante funciones que devuelven recordsets, funciones que te van a dejar probablemente recordsets cargados en memoria y que se te irán acumulando hasta que reinicies el ordenador.

          He tratado de hacer la consulta por otros medios (Insertando un nuevo control ADODC en el formulario TEF), creando la consulta en su propiedad DataSource y refrescándolo en el DataGrid.

          No sé donde estará el truco pero el número de filas que devuelven estas fechas son 23 registros, mientras que lo que se muestra en el grid son más o menos 30 que es lo que devuelve la propiedad ApproxCount. Sin embargo, sorprendentemente, el número de filas coincide con los registros que devuelve la consulta, no así lo que realmente muestra el grid.

          Entiendo que además tratas de calcular un pronóstico de las futuras averías mediante un cálculo estadístico de desviaciones estandar, distribución normal de los sucesos y seguramente un intérvalo de confianza. No sé, no sé como lo puedes finalizar correctamente.

          Mi mejor consejo es que antes de continuar con lo que tienes, te asesores con buenos tutoriales de programación en VB y de acceso a bases de datos así como de los componentes que puedes utilizar para ello.

          Siento que pueda desilusionarte, pero es que no puedo decirte otra cosa más allá de lo que me parece la realidad, y lamento no poder ayudarte más que con este áspero consejo.
          Un cordial saludo
          -Acalanto-

          Madrid - España

          Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

          Comentario


          • #6
            Re: Archivo

            Ok
            Es Cierto Solo Tengo Estudios De Ing Comerial, Y Me Meti En Esta Investigacion, Y Estaba Bastante Contenta Con Lo Poco Y Nada Que Aprendi De Visual, Pero Entre Prueba Y Prueba Salio Parte De Lo Que Yo Coincidero Funciona, Por Lo Tanto Tratare De Rescatar Lo Que Tengo Y Empezar Un Proyecto Nuevo
            Y Sin Lugar A Dudas Seguire Aprendiendo Vb, En Estos 2 Meses Es Bien Poco Lo Que He Aprendido, Pero Tampoco Pretendo Quedar Como Experta.
            Seguire Intentandolo

            Muchas Gracias
            Por Las Aclaraciones

            Comentario


            • #7
              Re: Archivo

              Mira Estrella, desde que he insertado el mensaje he seguido peleándome con el código y he empezado por un nuevo proyecto. Antes de continuar permiteme algún consejo más.

              Obtienes de la tabla CONFIABILIDAD datos tales como el tipo de máquina y el fallo catalogado y todo esto lo haces mediante una consulta tipo DISTINC ROW en esa misma tabla; que consideras que sucederá cuando esa tabla en vez de 10092 registros tenga varios cientos de miles.. !!Le vas a dar mucho trabajo el procesador!!.

              Es mucho mejor que diseñes dos tablas en la base de datos que contengan los equipos, el tipo de incidencia y cualquier otro tipo de datos auxiliar. De esta forma si un día la fábrica prescinde de un tipo de máquina, simplemente con eliminarla de la tabla, ya no te aparecerá nunca más.

              Personalmente trataría de utilizar componentes diferentes a Datagrid que te permitirán ser mucho más ágil en los cálculos que tienes que realizar (Por ejemplo un Flexgrid).

              También te aconsejo que pongas en la tabla Confiabilidad un campo que identifique unívocamente el registro (Un campo autonumérico por ejemplo) y que amplies un campo con la fecha de fin de incidencia, pues fíjate que tienes hora de inicio y fin, pero solamente fecha de inicio...¿que sucederá si la incidencia comienza hoy a las 23:00 y acaba mañana a las 03:00?

              Si consigo acabar el proyecto te lo adjuntaré en un nuevo mensaje y piensa que yo en ningún momento he sugerido que pretendas quedar como una experta ni mi mensaje ha tratado de molestarte lo más mínimo, mis reflexiones y consejos han sido siempre con la mejor de mis intenciones.


              Espero que así sepas comprenderlo.
              Un cordial saludo
              -Acalanto-

              Madrid - España

              Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

              Comentario


              • #8
                Re: Archivo

                hola:
                para calcular los minutos en que una máquina estuvo detenida por día:

                Código:
                SELECT FECHA, MAQ_LOGICA,TIPO,HORA_INICIO,HORA_TERMINO, TEF, sum(datediff("n", HORA_INICIO,HORA_TERMINO ))  as minutos
                FROM CONFIABILIDAD 
                where tipo = 'electrica'
                and maq_logica =   'Linea De Alimentación Springer Aserradero'
                and weekday(fecha) <> 1
                and fecha between cdate('11/12/2009') and cdate('12/12/2009')
                group by FECHA, MAQ_LOGICA,TIPO,HORA_INICIO,HORA_TERMINO, TEF
                Order By FECHA

                Comentario


                • #9
                  Re: Archivo

                  Sr Acalanto
                  Primero Que Nada Le Agradesco Que Dedique Su Tiempo A Mi Codigo, Seguire Sus Consejos, Diseñare Tabalas Por Cada Equipo, Ya Que Pronto Tengo Que Cargar Los Datos Correspondientes A Años Anteriores, Con Respecto Al Flexgrid Para Mi Seria Volver A Foja Cero, Ya Que No He Trabajado Nunca Con Ella, Pero Habra Que Estudiarlo Nada Mas.

                  Y Ahora Bien Yo Estoy Restando Las Fechas Y En Realidad Me Dio Cuenta Gracias A Su Comentario Que Si Tomo 2 Fechas Iguales No Me Puede Dar Como Resultado 1 Dia Y La Diferencia En Horas, Sino Que Un Par De Horas Para Completar El Dia.

                  Y Disculpe Si Mi Comentario Se Noto Un Tanto Molesto, Simplemente He Hecho Lo Imposible Por Aprender En Tan Poco Tiempo, Y Menos Mal Que Existen Foros Por Que O Sino Todavia Estaria Conectandome A La Base De Datos Ajajja, Ya Que Los Manuales De La Universidadno No Me Han Ayudado Lo Suficiente.


                  Ojala Pueda Ayudarme
                  Saludos

                  Comentario


                  • #10
                    Re: Archivo

                    He creado el proyecto que te adjunto que se limita al formulario de consulta, cálculo de TEF y actualización.

                    Para ello he utilizado una base de datos (copia de la tuya) en la que he modificado la tabla CONFIABILIDAD, añadiéndole un campo ID (Identificador unívoco del registro) y otro FECHA_FIN que he igualado a la fecha existente.

                    La aplicación se inicia en el método MAIN desde el que establezco la conexión con la base de datos, dando por hecho que éste se encuentra en la misma carpeta que el ejecutable.

                    No utilizo componentes de acceso a datos y todo lo controlo mediante SQL, procurando tener un mayor control de lo que se procesa aunque oblige a escribir algo más de código.

                    Te ha puesto tambien tres funciones que calculan el promedio TEF de la muestra seleccionada, su varianza y la desviación típica, funciones que debería comprobar porque hace tiempo que no uso cálculo estadístico y puedo haber confundido la formulación de cada una de sus funciones.

                    Aunque cada maestrillo tiene su librillo, creo que es un ejemplo de código que te puede ir muy bien para aclarar ciertos conceptos que te permitirán desarrollar una aplicación robusta y equilibrada.

                    Insisto en que debes de rediseñar la estructura de la base de datos porque tal como la tienes te provocará más de un callejón sin salida, al margen de la lentitud que puedes tener al aumentar el número de datos.

                    Observa la nueva tabla CONFIABILIDAD de la nueva base de datos adjunta y verás que además de los campos he añadido los siguientes índices de acceso:

                    ID, TEF

                    Los índices de una base de datos son similares a los de un libro, índices que nos permiten ir directamente a una página o tema sin necesidad de empezar el libro desde la primera hoja.

                    Cuando una tabla comienza a tener muchos datos, los índices agilizan la búsqueda de datos. No conviene tampoco abusar por el propio límite establecido por el motor de la DB y porque con muchos índices las actualizaciones pueden ralentizarse.

                    No se me ocurre nada más, espero que el ejemplo te sirva para alcanzar tus propósitos.
                    Un cordial saludo
                    -Acalanto-

                    Madrid - España

                    Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

                    Comentario


                    • #11
                      Re: Archivo

                      Sr Acalanto:
                      Agradesco Su Preocupacion Para Ayudarme Adesarrollar Mi Sistema,
                      He Descargado El Archivo Pero Me Dice Que El Archivo Esta Dañado Y Solo Descarga 38 Kb, Solicito Por Favor Adjuntar De Nuevo.

                      Desde Ya Muchas Gracias
                      Saludos

                      Comentario


                      • #12
                        Re: Archivo

                        Ok
                        Ahora Si Lo Pude Descargar Voy A Analizar Como Funciona
                        Que Increible Y Yo Me Tome 2 Meses En Desarrollar Lo Que Tenia
                        Voy A Comprobar Los Resultados Tef Y Escribo Nuevamente
                        Muy Agradecida

                        Comentario


                        • #13
                          Re: Archivo

                          Se me ha olvidado poner en el proyecto algo que es muy importante para que toda aplicación acabe bien.

                          En el módulo, bajo la función MAIN inserta este otro método.


                          Código:
                           
                          Public Sub deploy()
                              On Local Error Resume Next
                              'Cerrar formularios abiertos
                              Dim cf              As Form
                              For Each cf In Forms
                                  Unload cf
                              Next cf
                              'Cerrar bases de datos
                              db.Close: Set db = Nothing
                              cn.Close: Set cn = Nothing
                              'Eliminar arrays
                              Erase bookmk
                              Erase vals
                          End Sub

                          y en el formulario frmTEF, bajo el procedimiento form_load(), copia este otro:


                          Código:
                           
                          Private Sub Form_Unload(Cancel As Integer)
                              On Local Error Resume Next
                              deploy
                          End Sub

                          Este mecanismo (Se puede hacer de otras maneras, esta es la que yo acostumbro) descarga todos los objetos instanciados en memoria, liberándola y garantizando que la aplicación finaliza satisfactoriamente.


                          Espero que todo te vaya bien.
                          Un cordial saludo
                          -Acalanto-

                          Madrid - España

                          Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

                          Comentario


                          • #14
                            Re: Archivo

                            ok
                            estube revisando y los calculos que realiza son erroneos, ya que esta sacando la diferencia entre hora final y hora inicio de cada fila,
                            y yo necesito que saque la diferencia entre la fila sgte y la anterior

                            Ademas el filtro del dtpicker si selecciono el dia me muestra el mes, no se enrealidd como esta filtrando,

                            pero estoy sacando ideas y aprendiendo
                            adjunto planilla donde saque manualmente los resultados.


                            ademas si entre las fechas de las filas existen dias jueves debo descontar 7,5 hrs y si es domingo 24 hrs, ya que el jueves se realiza mantencion a las maquinas y el domingo no se trabaja.

                            Comentario


                            • #15
                              Re: Archivo

                              No te digo que no sea lo que tienes que hacer, de hecho recuerdo que uno de los problemas era el número de líneas erróneo que te provocaba el DBGrid. Tiene fácil solución, como tienes todos los datos accesibles mediante .TextMatrix(r,c)...pues se trata de en vez de restar la fecha fin de avería de la fecha inicio, restar la de inicio de la columna R con la de R+1. Con esto puedes llegar a estimar -efectivamente- los días que una máquina tarda en averiarse...con el cálculo que yo hago, además, puedes estimar el costo en horas de inactividad; ambos datos son muy interesantes para estimar costes de producción (o de inproduccion mejor dicho).


                              Los dataPickers no filtran, sencillamente te devuelven la fecha seleccionada, No comprendo que es lo que estás haciendo con ellos. Tanto si seleccionas un año, un mes como un día, al final te devuelve la fecha que se muestra en el calendario, no el mes ni el día ni el año por separado.

                              El proyecto es un ejemplo para que tomes ides de como acceder a datos y como manejarlos correctamente en un grid, así como actualizarlos y tener la seguridad de que cuando te refieres a un determinado registro, estás actualizando ese, no otro.

                              Tomando ideas de este ejemplo, te será más fácil realizar el resto si comprendes todo lo que te transmito.
                              Un cordial saludo
                              -Acalanto-

                              Madrid - España

                              Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

                              Comentario

                              Trabajando...
                              X