none
Consulta para crear un reporte de bitacora

    Pregunta

  • Buenas noches en mi proyecto deseo crear un reporte de bitácora por cada usuario del sistema o por todos q me muestre todo el historial de acciones ya sea d solo un usuario o de todos en general. Yo hice el código p crear y eliminar los datos de los reportes x 1/2 d consultas a la BD, hice 2 INSERTS d las tablas de c_cliente y b_bitacora_accion y la aplicación me sta marcando varios errores al implementar esos códigos d consulta. Digamos p cargar ese reporte debo hacer INSERTS d las 2 tablas, luego hacerles SELECT d los datos q kiero ver d las 2 tablas usando INNER JOIN p relacionar las tablas??? Los códigos q hice se encuentran en la clase Reportes y en el form frm_bitacora, ademas tengo el problema d q a cada rato cada DataGridView q hago c me borra y me genera un error d carga q no entiendo. Quisiera q x favor alguien me de una idea d cm hacer esto ahi les dejo el link d mi proyecto y agradezco todos aportes posibles saludos.

    http://cid-73b7140e84b9f6d0.office.live.com/browse.aspx/Archivos%20d%20Analisis?uc=1

     

     

     

     

     

    martes, 30 de noviembre de 2010 8:18

Respuestas

  • hola

    el problema d q a cada rato cada DataGridView q hago c me borra y me genera un error d carga q no entiendo

    cual seria le mensaje del error que estas obteniendo ?

     

    luego hacerles SELECT d los datos q kiero ver d las 2 tablas usando INNER JOIN p relacionar las tablas???

    porque haces dos select a cada tabla por separado, y despues quieres unirlos? que impide quedirectamente en un SELECT unas las tablas y solo retoenes un resultado con los campos que necesitas

     

    Nota: no he visto el codigo publicado

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 30 de noviembre de 2010 12:23
  • Hola que tal, en el link que dejaste bajé el proyecto, pero veo que tienes algunos errores de sintaxis. algunas {} que están demás. además en un SQL tienes dos INSERT, en este caso es mejor que uses un Procedimiento almacenado. por ejemplo en el formulario reporte  basta con que hagas esto.

     else{ 
       sql = "TUPROCEDIMIENTO(@parm1, @parm2.....)";      
       ParamStruct[] parametros = new ParamStruct[9]; // arreglo para pasar parametros
    ...
    }
    

     

    pero tienes esto:

    else
    {
    {       
     sql = " INSERT INTO b_bitacora_accion ( id_bitacora, id_usuario, fecha, accion ) " +
                 " VALUES ( @id_bitacora ,@id_usuario ,@fecha ,@accion ) " +
                 " INSERT INTO c_cliente ( id_cliente, nombre, cedula, id_tipo, papelera, direccion) " +
                 " VALUES ( @id_cliente ,@nombre ,@cedula ,@id_tipo, @papelera, @direccion ) ";
              
    }
              ParamStruct[] parametros = new ParamStruct[9]; // arreglo para pasar parametros
    ....
    ...
    }
    
    Ademas de los dos INSERT que puedes meterlos en un Procedimiento almacenado, tienes errores de sintaxis, Debes revisar que te compile bien el programa, es mas fácil ayudarte con errores especificos.

    lo que me pareció interesante fué el Diseño, se nota que tienes paciencia para esto :) 

    Saludos.


    Jackson Rosado Developer c#, VFP, PL/SQL DBA - Oracle 10g
    martes, 30 de noviembre de 2010 14:38

Todas las respuestas

  • hola

    el problema d q a cada rato cada DataGridView q hago c me borra y me genera un error d carga q no entiendo

    cual seria le mensaje del error que estas obteniendo ?

     

    luego hacerles SELECT d los datos q kiero ver d las 2 tablas usando INNER JOIN p relacionar las tablas???

    porque haces dos select a cada tabla por separado, y despues quieres unirlos? que impide quedirectamente en un SELECT unas las tablas y solo retoenes un resultado con los campos que necesitas

     

    Nota: no he visto el codigo publicado

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 30 de noviembre de 2010 12:23
  • Hola que tal, en el link que dejaste bajé el proyecto, pero veo que tienes algunos errores de sintaxis. algunas {} que están demás. además en un SQL tienes dos INSERT, en este caso es mejor que uses un Procedimiento almacenado. por ejemplo en el formulario reporte  basta con que hagas esto.

     else{ 
       sql = "TUPROCEDIMIENTO(@parm1, @parm2.....)";      
       ParamStruct[] parametros = new ParamStruct[9]; // arreglo para pasar parametros
    ...
    }
    

     

    pero tienes esto:

    else
    {
    {       
     sql = " INSERT INTO b_bitacora_accion ( id_bitacora, id_usuario, fecha, accion ) " +
                 " VALUES ( @id_bitacora ,@id_usuario ,@fecha ,@accion ) " +
                 " INSERT INTO c_cliente ( id_cliente, nombre, cedula, id_tipo, papelera, direccion) " +
                 " VALUES ( @id_cliente ,@nombre ,@cedula ,@id_tipo, @papelera, @direccion ) ";
              
    }
              ParamStruct[] parametros = new ParamStruct[9]; // arreglo para pasar parametros
    ....
    ...
    }
    
    Ademas de los dos INSERT que puedes meterlos en un Procedimiento almacenado, tienes errores de sintaxis, Debes revisar que te compile bien el programa, es mas fácil ayudarte con errores especificos.

    lo que me pareció interesante fué el Diseño, se nota que tienes paciencia para esto :) 

    Saludos.


    Jackson Rosado Developer c#, VFP, PL/SQL DBA - Oracle 10g
    martes, 30 de noviembre de 2010 14:38
  • buenas tardes Leandro el msj. q me despliega la pantalla del form frm_reporte_bitacora s el sgte.: Object reference not set to an instance of an object, tmbn. me dice q p evitar q c pierdan datos antes d cargar el diseñador c debe resolver ese error, le doy click en omitir y continuar y me borra lo q hice d diseño del form. Lo mejor s q baje mi proyecto y lo vea ud. mismo p q le sea mas facil d entender.
    lunes, 06 de diciembre de 2010 19:15
  • Jack pero lo q tengo entendido s q debo meter los datos d las 2 tablas p luego hacerles un select, lo q me sta diciendo s q meta los datos d las 2 tablas en un solo INSERT??? Y q luego le haga un SELECT p q despliegue los datos q c desean saber??? 
    lunes, 06 de diciembre de 2010 19:27
  • Digamos si yo ya le hice un INSERT a la tabla c_cliente en otro form, hace falta q haga un insert d los datos d la misma tabla en el form d reporte d bitacora junto con los d la tabla d b_bitacora_accion???
    lunes, 06 de diciembre de 2010 19:42
  • Bueno ese codigo en realidad sta en la clase Reportes
    lunes, 06 de diciembre de 2010 19:44
  • mm no entiendo muy bien tu pregunta, pero en realidad te decía es que si estabas haciendo dos INSERT en el mismo comando, lo hagas mejor por un procedimiento almacenado en el Servidor de Base de datos. pasandole los parametros necesarios. de esa manera envías una sola orden, ademas de que es mucho mejor hacerlo por procedimiento por cueestiones de rendimiento. por algo simple cuando envías comandos el servidor te compila y luego te ejecuta, cuando ejecutas procedimientos, ya no compila, solo ejecuta. 

    Por otro lado, entiendo que lo que deseas es guardar en 2 tablas cada vez qeu alguien saque un reporte especifico... no se si es correcto?.

    pero bueno lo que te recomiendo ahí es que hagas un procedimiento almacenado que te haga los insert's necesarios y luego te devuelva los datos para el reporte. eso lo haces en la Base de Datos... mmmm por cierto qeu base de datos manejas? SQL Server?


    Jackson Rosado Developer c#, VFP, PL/SQL DBA - Oracle 10g
    lunes, 06 de diciembre de 2010 21:19
  • Ah ok ya le entiendo, la BD q yo manejo s d SQL Server 2008, sí la idea s desplegar un reporte a partir de los datos almacenados en las 2 tablas, q tome la info. del cliente y luego los datos de la accion q realizo ese usuario y esa tabla va a tomar cm referencia el id del cliente. Apenas pueda voy a mandarle el archivo con el prog. q sta corriendo bien p q c d una idea. Mis compañeros y yo ya casi tenemos lista esa parte pero faltan ciertos detalles, gracias x su ayuda.
    miércoles, 08 de diciembre de 2010 17:39