Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

¿Como dividir o separar una data ?

¡Resuelto!
Ir a solución

 Saludos, quisiera saber como puedo separar una data, para pasar cada dato que tiene la misma, a cada una de las columnas de una base de datos. Es decir, tomo la data de una base de datos "X" para luego separarla y copiar cada valor en las columnas de una base de datos "Y".Tal como se muestra en la figura. Gracias espero su valiosa respuesta.

 

 

 

 

 

duda.JPG

0 kudos
Mensaje 1 de 12
5.082 Vistas

Buenos días, si te he entendido bien, lo que quieres es volcar los datos de una bbdd a otra.

 

Utilizo funciones ADO,  lo que hago es un Sub VI dinámico, ejecutar la sentecia SELECT * FROM  necesaria de la primera bbdd. el resultado obtenido es un array, por lo tanto, selecciono con index array la linea a extraer, luego lo autoindexo en un bucle FOR y recorro el array concatenando los valores, ('valor1','valor2','valor3','valor4'.......), tienen que quedar así.

 

Ejecutas la sentencia insert into bbdd (columna1,columna2,columna3, columna4,.....) values ('valor1','valor2','valor3','valor4'.......).

Donde columnaX es el nombre de las columnas de tu bbdd donde lo quieres volcar, de esa manera te debería funcionar.

 

 

 

Un saludo

0 kudos
Mensaje 2 de 12
5.081 Vistas

Lei tu correo, pero tengo dudas. Quiera que me explicaras con un ejemplo explicando tu propuesta : Utilizo funciones ADO,  lo que hago es un Sub VI dinámico, ejecutar la sentecia SELECT * FROM  necesaria de la primera bbdd. el resultado obtenido es un array, por lo tanto, selecciono con index array la linea a extraer, luego lo autoindexo en un bucle FOR y recorro el array concatenando los valores, ('valor1','valor2','valor3','valor4'.......), tienen que quedar así.

 

Te anexo las bases de datos y el Vi por el cual yo estaba haciendo la prueba. Espero tu ayuda, no tengo mucha experiencia con el LabVIEW, cuento con tu ayuda, gracias.  

0 kudos
Mensaje 3 de 12
5.062 Vistas

Según tu ejemplo, era un problema de tipo de datos, lo he modificado para que recorra la tabla y descargue los datos de uno en uno en la otra bbdd, el problema de esto, es que con muchos datos tardaría bastante.

 

Pruebalo, funciona.

 

Otra cosa, he creado la otra tabla en la misma bbdd por comodidad al crear el origen de datos ODBC. Tu puedes hacerlo de la otra manera que también funciona.

 

Un saludo, espero te funcione

Mensaje 4 de 12
5.046 Vistas

Saludos, te envio el Vi original, he copiado la data para la otra base de datos pero me da un problema, dice que no tengo permiso para insertar datos.

 

Mi base de datos no tiene contraseña ni usuario, yo hice una base de datos de prueba en Access, pero no entiendo porque me dice que no tengo permiso te anexo una imagen y los archivos con los cambios respectivos.

 

Espero contar con tu ayuda, necesitaba terminar esta parte en esta semana, saludos.

0 kudos
Mensaje 5 de 12
5.004 Vistas

Saludos, voy a completar el correo anterior y a explicarme un poco mejor.

 

La ayuda que me diste esta muy bien, logre conectarme a una base de datos y copiar los datos en otra base de datos, como lo tengo en el VI en la carpeta ZIP en archivos adjuntos, le hice unos pequeños ajustes al que me enviaste.

 

Pero lo que yo quiero es copiar la data  en varias columnas para ello tengo que separar la data, tal como lo explique en la primera publicacion. El Vi que hiciste guarda la información en una sola columna de la tabla, es decir guarda los porcentajes de cada remota en una sola columna. Y lo que necesito es que se guarde cada porcentaje de cada remota en tablas diferentes, como lo muestra la base de datos disponibilidades.mdb la cual esta anexada en archivos adjuntos, tal como lo explique en la primera publicacion. No se si me explique bien.

 

Si abres la base de datos comunicacion.mdb podras observar el nombre de las remotas y su porcentaje. Y si abres la base de datos disponibilidades.mdb podras observar que en la tabla se tienen una serie de columnas las cuales corresponden al nombre de cada remota.

 

Lo que quiero es copiar la columna de la base de datos comunicacion.mdb (como se hace en el programa que hiciste) y separar la data (esto no se hace en tu ejemplo) para copiar cada uno en cada columna de la tabla de la base de datos disponibilidades.mdb y de esta manera se llena un registro, asi cuando se vuelva a ejecutar el ciclo se llena otro registro y asi sucesivamente, hasta yo poder tener registros de porcentajes de cada remota.

 

Espero tu respuesta, muchas gracias por tu ayuda.

 

Adjunto el Vi y las bases de datos

0 kudos
Mensaje 6 de 12
5.000 Vistas

Buenos días

 

He repasado tu programa, ya está OK.

 

Yo trabajo con SQL, es bastante más potente.

 

En el VI que te envío todo esto ya está modificado. Las columnas disponibilidades me daban problemas por lo que les he llamado 1/2/3/4 .....así respectivamente, te he puesto la fecha como primer valor para que te sirva como clave principal si así lo quieres, siempre y cuando no insertes 2 registros en el mismo segundo, si no te daría error.  He quitado el autonumérico

 

1ºCompreba que la tabla Remotas contiene el mismo número de columnas que datos quieres insertar.

2ºUtiliza el vi "LIST columns" para así nunca confundirte al escribir los nombres de las columnas.

3ºConvierte el array a cluster, y con el botón derecho seleccionas cluster size encima de la "array to cluster", debe ser igual que las columnas ha insertar.

 

 

Te vuelvo ha enviar la bbdd comunicaciones con las 2 tablas (Remotas y remote)

Pruebalo según va, te debe ir, luego ves modificando y cambiando las cosas para adapatarlo a tus necesidades.

 

Un saludo

Descargar todos
Mensaje 7 de 12
4.974 Vistas

Se me olvidó, si quieres usar autonumérico con Access, al usar el VI list columns, debes eliminar la primera posición del array que recibes. (Ver imagen), el primer Vi que te envíé, está sin autonumérico.

 

Por cierto, la tabla Remotas, contenia entradas duplicadas.

 

Un saludo

0 kudos
Mensaje 8 de 12
4.970 Vistas

Saludos, como estas? he estado probando con los tips que me enviastes pero no he logrado resolver mi problema.

 

Te anexo mi Vi completo para que veas el codigo. Mi programa se conecta a una base de datos que lleva los datos de campo de la aplicacion ( la base de datos que te envio es de prueba) y muestra los valores en pantalla para que puedan ser monitoreados y lo que busco como te explique

en los correos anteriores es que me guarde los valores vistos en otra base de datos.

 

En el programa al abrirlo y correrlo se debe hacer clic en el boton Conexion, luego el programa funciona bien pero cuando le doy al boton de

Generacion de historicos para que me guarde los valores en una base de datos local, me da error y no entiendo por que.

 

Observa el codigo ...yo me conecto a la base de datos que contiene los datos y mediante un Select tomo los datos y lo muestro en tablas y 

luego tomo los datos de la columna de comunicacion para guardar los historicos que se muestran en otra base de datos. 

 

He seguido la ayuda que me diste pero no meha dado resultado, espero tu respuesta y tu ayuda, gracias. 

 

Te anexo el vi y las base de datos y las imagenes con los errores que me dan.

 

 

0 kudos
Mensaje 9 de 12
4.872 Vistas
Solución
Aceptado por angeldark

Hola Angel,

 

Te paso el Vi modificado, el vi "array to cluster", debe tener el número 56 en "cluster size"(boton derecho encima del vi), que es el número de columnas que tienes que insertar.

 

Te he puesto la bdbb con autonumérico para que no tengas conflictos al insertar datos en la misma hora/mm/ss.

 

El error 0x000000 no coincidia el número de columnas a insertar.(Es por el cluster size)

 

Ahora no te deberían saltar errores

 

Un saludo,

 

Descargar todos
Mensaje 10 de 12
4.868 Vistas