none
PASAR DATOS DE UNA TABLA A OTRA EN MSQL DESDE VISUAL 2015 CON TIMER RRS feed

  • Pregunta

  • Muy buenas tardes amigos del foro, de nuevo acudiendo a uds por su ayuda.

    lo que necesito es pasar datos de una tabla a otra en mysql desde visual 2015, sumamente facil diran uds:

    insert into tabla1 from tabla2;

    bueno, en realidad lo que yo necesito hacer es algo mas complejo, voy a tratar de graficar el problema, las tablas se llaman (temp_productos) y (productos), los datos que contienen por lógica son productos: código,descripción,precio_Costo,iva, etc.

    En la tabla (temp_productos), guardo productos que luego los necesito pasar a la tabla (productos), pero aquí empieza lo complicado de la forma en que yo necesito hacerlo, y los voy a enumerar para mayor comprensión:

    1º que solo cuando halla datos en la tabla (temp_producto), se inicie el proceso de transferencia a la otra tabla.

    2º que la transferencia se haga cada cierto lapso de tiempo, osea, que si por ejemplo, se inicia el proceso pero no se pueden pasar los datos por un error, entonces cada 10 minutos el sistema vuelva a intentar pasar los datos de nuevo.

    3º como los productos tienen código, necesito que si por ejemplo, el código no existe en la tabla (productos), entonces lo inserte y si existe entonces que lo modifique.

    Bueno a amigos del foro espero poder contar con su inestimable ayuda como siempre, desde ya muchisiasm gracias por su tiempo.

    • Cambiado Enrique M. Montejo domingo, 22 de octubre de 2017 6:34 Pregunta relacionada con el acceso a datos con MySql.
    martes, 17 de octubre de 2017 17:35

Respuestas

  • Hola 

    Lo primero a tener en cuenta es que usarás MySql Connector para poder acceder a la bd que necesitas desde VB

    1º que solo cuando halla datos en la tabla (temp_producto), se inicie el proceso de transferencia a la otra tabla

    Es cuestión de preguntar la existencia de datos en la tabla, por ejemplo con la clausula count y al tener un resultado en tu executescalar  > 0 , entonces iniciarás con la transferencia (que consistirá en un insert into de una tabla a otra)...

    2º que la transferencia se haga cada cierto lapso de tiempo, osea, que si por ejemplo, se inicia el proceso pero no se pueden pasar los datos por un error, entonces cada 10 minutos el sistema vuelva a intentar pasar los datos de nuevo.

    En la pregunta 1, nos quedamos en que estabas pasando los datos, capturas el error a través de un bloque try catch y por ejemplo declaramos una variable de tipo booleana que nos indique si se realizó con éxito la transferencia. Al momento de obtener esta variable preguntarás por su valor, de ser false ejecutarás un timer de vb para que a los 10 minutos se vuelva a ejecutar, entonces la variable tomará un nuevo valor, por ejemplo, true en el caso de que haya sido con éxito, entonces de ser así tendrás que colocar el timer en stop()

    3º como los productos tienen código, necesito que si por ejemplo, el código no existe en la tabla (productos), entonces lo inserte y si existe entonces que lo modifique.

    seguimos pracitcamente en el mismo proceso, en el bloque en donde hagas el insert para tu tabla, una vez que ya comprobaste que existen datos, entonces recorrerás uno a uno los registros de tu tabla temp y te tocará comparar si existe para realizar un insert o un update (en el caso de existir).

    Aquí tienes un ejemplo que te ayudará a interactuar entre MySql y VB How to Organize the CRUD in VB.Net and MySQL Database, en caso de no cumplir con tus espectativas, te recomiendo revisar videos de youtube en donde está explicado al detalle.

    Inténtalo y nos comentas para poder apoyarte.

    Saludos



    Brayan De la Cruz
    Lima - Perú


    martes, 17 de octubre de 2017 18:23
  • estuve buscando la forma de mantener una base secundaria actualizada por cualquier contingencia que se me pueda presentar con la base primaria

    ¿Y por qué no te planteas alguna estrategia de respaldos ante posibles contingencias?

    Establishing a Backup Policy


    Con lo que respecta a la consulta principal, en realidad solo necesito pasar los datos de la tabla (temp_productos), ya que los otros datos son distintos en cada tablas por que se manejas datos de facturación, por eso no se si me va a servir la sincronizacion.

    En un proceso de sincronización tú puedes especificar las tablas o tabla que deseas mantener sincronizada (sincronización basada en un modelo unidireccional). Pienso que es lo mas simple de realizar, y lo más seguro claro.

    También puedes hacerlo a través de lo que se conoce como almacenamiento FEDERATED

    The FEDERATED Storage Engine

    Sincronizar dos tablas en MySQL

    Luego si nada de eso te gusta y ambas bases de datos se encuentran en la misma instancia podrías intentar la replicación mediante un trigger, que será mejor a la propuesta que inicialmente planteaste del timer y demás, ¿y si algo falla?, toda la transacción será revertida.


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    miércoles, 18 de octubre de 2017 19:40
  • Muy buenas tardes amigo Willams, siempre me has ayudado bastante en mi proyecto, así que espero me puedas dar una solución a este problema.

    Te pido que me corrijas si me equivoco amigo Willams, Database Synchronization hasta donde leí y pude entender lo que hace es sincronizar dos bases de datos para mantener todos sus datos iguales, por que a decir verdad estuve buscando la forma de mantener una base secundaria actualizada por cualquier contingencia que se me pueda presentar con la base primaria, o sea se podria usar con este fin mi querido amigo Willams?.

    Con lo que respecta a la consulta principal, en realidad solo necesito pasar los datos de la tabla (temp_productos), ya que los otros datos son distintos en cada tablas por que se manejas datos de facturación, por eso no se si me va a servir la sincronizacion.

    Bueno mi querido amigo Willams espero tu respuesta desde ya Muchisimas Gracias.

    • Marcado como respuesta dj mac40 lunes, 6 de noviembre de 2017 9:59
    miércoles, 18 de octubre de 2017 17:55

Todas las respuestas

  • Hola 

    Lo primero a tener en cuenta es que usarás MySql Connector para poder acceder a la bd que necesitas desde VB

    1º que solo cuando halla datos en la tabla (temp_producto), se inicie el proceso de transferencia a la otra tabla

    Es cuestión de preguntar la existencia de datos en la tabla, por ejemplo con la clausula count y al tener un resultado en tu executescalar  > 0 , entonces iniciarás con la transferencia (que consistirá en un insert into de una tabla a otra)...

    2º que la transferencia se haga cada cierto lapso de tiempo, osea, que si por ejemplo, se inicia el proceso pero no se pueden pasar los datos por un error, entonces cada 10 minutos el sistema vuelva a intentar pasar los datos de nuevo.

    En la pregunta 1, nos quedamos en que estabas pasando los datos, capturas el error a través de un bloque try catch y por ejemplo declaramos una variable de tipo booleana que nos indique si se realizó con éxito la transferencia. Al momento de obtener esta variable preguntarás por su valor, de ser false ejecutarás un timer de vb para que a los 10 minutos se vuelva a ejecutar, entonces la variable tomará un nuevo valor, por ejemplo, true en el caso de que haya sido con éxito, entonces de ser así tendrás que colocar el timer en stop()

    3º como los productos tienen código, necesito que si por ejemplo, el código no existe en la tabla (productos), entonces lo inserte y si existe entonces que lo modifique.

    seguimos pracitcamente en el mismo proceso, en el bloque en donde hagas el insert para tu tabla, una vez que ya comprobaste que existen datos, entonces recorrerás uno a uno los registros de tu tabla temp y te tocará comparar si existe para realizar un insert o un update (en el caso de existir).

    Aquí tienes un ejemplo que te ayudará a interactuar entre MySql y VB How to Organize the CRUD in VB.Net and MySQL Database, en caso de no cumplir con tus espectativas, te recomiendo revisar videos de youtube en donde está explicado al detalle.

    Inténtalo y nos comentas para poder apoyarte.

    Saludos



    Brayan De la Cruz
    Lima - Perú


    martes, 17 de octubre de 2017 18:23
  • Muy buenos dias amigo Brayan, muchisimas gracias por respoder tan pronto.

    Implemente la clausula count y de diez mi querido amigo el primer punto ya lo tengo solucionado, ahora bien siendo honesto soy novato en este tema y caresco de experiencia en el manejo de los timer de visual, por eso acudi al foro por que estuve viendo en internet y no encontre como hacer lo que yo necesito, si me pudieras brindar un ejemplo te lo agradeceria infinitamente amigo brayan , ya que si por ejemplo tengo dos pc con dos bases de datos, como hago para pasar de la base que esta instalada en pc1 a la base de la pc2.

    Desde ya muchisimas gracias por tu ayuda amigo Brayan.

    miércoles, 18 de octubre de 2017 10:11
  • ¿Por qué no ocupas la característica de Database Synchronization?

    Database Synchronization


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    miércoles, 18 de octubre de 2017 15:39
  • Muy buenas tardes amigo Willams, siempre me has ayudado bastante en mi proyecto, así que espero me puedas dar una solución a este problema.

    Te pido que me corrijas si me equivoco amigo Willams, Database Synchronization hasta donde leí y pude entender lo que hace es sincronizar dos bases de datos para mantener todos sus datos iguales, por que a decir verdad estuve buscando la forma de mantener una base secundaria actualizada por cualquier contingencia que se me pueda presentar con la base primaria, o sea se podria usar con este fin mi querido amigo Willams?.

    Con lo que respecta a la consulta principal, en realidad solo necesito pasar los datos de la tabla (temp_productos), ya que los otros datos son distintos en cada tablas por que se manejas datos de facturación, por eso no se si me va a servir la sincronizacion.

    Bueno mi querido amigo Willams espero tu respuesta desde ya Muchisimas Gracias.

    • Marcado como respuesta dj mac40 lunes, 6 de noviembre de 2017 9:59
    miércoles, 18 de octubre de 2017 17:55
  • estuve buscando la forma de mantener una base secundaria actualizada por cualquier contingencia que se me pueda presentar con la base primaria

    ¿Y por qué no te planteas alguna estrategia de respaldos ante posibles contingencias?

    Establishing a Backup Policy


    Con lo que respecta a la consulta principal, en realidad solo necesito pasar los datos de la tabla (temp_productos), ya que los otros datos son distintos en cada tablas por que se manejas datos de facturación, por eso no se si me va a servir la sincronizacion.

    En un proceso de sincronización tú puedes especificar las tablas o tabla que deseas mantener sincronizada (sincronización basada en un modelo unidireccional). Pienso que es lo mas simple de realizar, y lo más seguro claro.

    También puedes hacerlo a través de lo que se conoce como almacenamiento FEDERATED

    The FEDERATED Storage Engine

    Sincronizar dos tablas en MySQL

    Luego si nada de eso te gusta y ambas bases de datos se encuentran en la misma instancia podrías intentar la replicación mediante un trigger, que será mejor a la propuesta que inicialmente planteaste del timer y demás, ¿y si algo falla?, toda la transacción será revertida.


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    miércoles, 18 de octubre de 2017 19:40
  • Muy buenos días Amigo Willams, te pido mil perdones por no haber podido contestarte antes pero te digo la verdad, estuve abocado a la tarea de solucionar cuanto antes este problema y tu respuesta como siempre fue la correcta, pude solucionar otro problemas con con tu ayuda mi estimado amigo Willams, Muchísimas Gracias como siempre Amigo WILLAMS.
    lunes, 6 de noviembre de 2017 9:59