Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Como mostrar datos de una tabla en otra automáticamente en ACCESS

Estas en el tema de Como mostrar datos de una tabla en otra automáticamente en ACCESS en el foro de Bases de Datos General en Foros del Web. Hola a todos! A ver si alguien me puede echar una manilla con esto que me he quedado atascado. Tengo dos tablas, una es un ...
  #1 (permalink)  
Antiguo 09/07/2008, 04:01
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Pregunta Como mostrar datos de una tabla en otra automáticamente en ACCESS

Hola a todos! A ver si alguien me puede echar una manilla con esto que me he quedado atascado.

Tengo dos tablas, una es un catálogo de Cursos con los campos:
Catalogo ('id' (PK), 'nombre_curso', 'cod_curso', 'descripción')
La otra es la tabla de los cursos en sí, con los asistentes y toda la pesca
Cursos ('id_curso', 'id', 'nombre_curso', 'cod_curso', 'fecha_inicio'.....)
En las tablas he establecido una relación de "1 a varios" desde Catalogo a Cursos por el campo 'id' (Autonumérico en "Catalogo" y entero largo en "Cursos") y exigo integridad Referencial

Nota: sé que estoy repitiendo campos, pero es que la quieren así, quieren después tener en una tabla todo lo correspondiente a cada curso.

La idea es que desde la tabla "Cursos" me importe todos los datos que pueda, es decir, que al escoger algún registro (lo suyo sería el nombre del curso) automáticamente me rellene los datos del 'cod_curso' que corresponden a el nombre que he escogido en 'nombre_curso'

Alguien sabe como puedo hacerlo? no parece que sea algo dificil, pero me he quedado atascado.
Gracias de antemano a todos.
  #2 (permalink)  
Antiguo 09/07/2008, 04:04
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Hola Piloto, como te comentaba en el otro hilo, si lo haces a traves de un form, es sencillo. Pero directamente sobre la tabla no vas a poder. Cual es tu caso??

Un saludo
  #3 (permalink)  
Antiguo 09/07/2008, 05:30
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Hola Taribo007!

En principio todo va a través de un formulario para ir introduciendo datos y que así no toquen en las tablas. Pero tengo que reconocer que todas las pruebas que he hecho son sobre las tablas directamente. Pensaba que debía ser así y que ya desde el formulario sólo tendría que sacar los campos y punto una vez que estuviera hecho en las tablas. Parece ser que no funciona así ¿verdad?

Entonces cómo sería desde un formulario?
Gracias.
  #4 (permalink)  
Antiguo 09/07/2008, 07:38
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Te pongo un ejemplo, mas o menos con lo que conocemos, vamos a hacer que, al elegir un curso en el nombre, se rellenen los campos nombre-curso y cod-curso.

Lo primero es saber si el form tiene como origen de registro la tabla cursos. En caso afirmativo, procedemos.

Para ello, el control sobre el que vamos a actuar en principio es un combo. Este ha de tener como origen de control el campo nombre_curso de la tabla curso. Este combo tendras las siguientes propiedades (entre otras)

Tipo de origen de la fila: Tabla /Consulta
Origen de la fila: Select nombre_curso,cod_curso from catalogo
Numero de columnas:2
Ancho de columnas: 0cm;2cm
Columna dependiente:1

Entonces, en el evnto before update del combo, vamos a rellenar el otro campo, ya que este se rellenara solo por tener el combo el origen en el campo nombre, y la columna dependiente la correspondiente al campo nomnre de la tabla catalogo.

Si el control del form con origen de control el campo Cod_Curso de la tabla cursos se llamara TxtCod_Curso, solo habria que hacer, en el evnto indicado:

me.TxtCod_Curso=me.NombreDelComboNombre.column(1)

Si quisieras rellenar mas campos, solo tendrias que añadirlos en la select que es origen de la fila del combo, y asiganar la columna correspondiente (con lo de column(x)) al control adecuado, tenienedo en cuenta que la primera columna, en el column(x) seria la cero (0)

Espero haberme explicado con claridad.

Un saludo
  #5 (permalink)  
Antiguo 09/07/2008, 08:44
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

A ver si me he enterado bien.

1.- He creado un formulario en blanco con origen de los datos, la tabla "curso" Que es la tabla que quiero rellenar.

2.- Creo dos cuadros combinados 'nombreCurso' y 'codigo'
En origen de la fila de 'nombreCurso' he puesto:
Cita:
SELECT [Catalogo].[Id_curso], [Catalogo].[nombre_curso], [Catalogo].[cod_curso] FROM Catalogo;
con las columnas bien puestas para que me saque solo el nombre. Hasta aquí bien.

3.- Dentro del mismo cuadro combinado 'nombreCurso' (Es aquí si no lo he entendido mal, donde hay que ponerlo) en el evento "antes de Actualizar" he puesto:
Cita:
me.codigo=me.nombreCurso.column(2)
Creo que es eso lo que me has dicho no?

Pues me sale este mensaje cuando escojo un nombre del desplegable en 'nombreCurso':
Cita:
Microsoft Office Access no encuentra el objeto 'me'
Si 'me' es una macro o un grupo de macros nuevo, asegurese de que se ha guardado y de que se ha escrito su nombre correctamente.
Y evidentemente ya no me rellena en cuadro combinado 'codigo'

¿Donde he metido la pata???
Gracias.
  #6 (permalink)  
Antiguo 09/07/2008, 08:55
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Por partes. Solo has de crear un cuadro combinado. El cuadro combinado 'codigo' conviertelo en cuadro de texto. "Me" hace referencia al formulario desde donde realizas todo esto. Segun el error que indicas, no habras puesto esto:me.codigo=me.nombreCurso.column(2) directemente en las propiedades del combo, en la pestaña evento, en la fila correspondiente al evento Antes de actualizar, verdad???

Un saludo
  #7 (permalink)  
Antiguo 09/07/2008, 10:12
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Je je je... no me riñas, pero eso es exactamente lo que he hecho.

¿Como es entonces? esto no lo había hecho nunca.
  #8 (permalink)  
Antiguo 09/07/2008, 10:51
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Jajajjaj, no te reñia, faltaria mas. Pasa bastantes veces.

Procede del siguiente modo: Quita lo que has puesto en esa linea. Vete al final de ella, a la derecha del todo, hay un boton pequeño con tres puntitos (...). Pulsalo y selecciona Generar eveto > Evento de codigo. Se te abrira la venta de vba en el evento before update del combo.

Pues justo hay es donde tienes que poner:
me.codigo=me.nombreCurso.column(2)

Prueba y me cuentas.

Un saludo
  #9 (permalink)  
Antiguo 10/07/2008, 11:14
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Hola Taribo007, perdona pero he estado liado con otras cosas.

Ahora si que me sale!! bien por mí!... bueno, más bien por tí je jeje. Ahora voy a dar un paso más, pregunto:
¿Es posible añadir a la tabla el dato del 'cod_curso' sin que este dato (el 'cod_curso') me aparezca en el formulario? me explico, yo necesito meter ese dato en la tabla "cursos" pero en realidad no necesito que me aparezca en el formulario.
Tal y como está puesto, me aparece en el formulario automaticamente al escoger el nombre del curso y entonces se actualiza en la tabla. ¿puede hacerse directamente?

En realidad el 'cod_curso' no necesito mostrarlo, sólo lo necesito para generar un código particular de cada curso, que es mi siquiente cuestion, aunque para eso supongo que abriré un nuevo hilo ¿no? bueno, para que te hagas una idea, tengo que coger el 'cod_curso' un 'cod_cliente', extraer de la 'fecha_imparticion' el día, mes, y año y concatenarlo todo y así generar el curso. Pero bueno eso luego, vayamos por partes.

De momento ¿puede actualizarse la tabla directamente? ¿como?
  #10 (permalink)  
Antiguo 11/07/2008, 01:00
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Pues si te he entendido bien, que no estoy del todo seguro, puedes hacer excatamente lo miamo pero teniendo el cuadro de texto NO visible, oculto vamos. Seria lo mas sencillo. Otra opcion es, sin control de por medio, en el mismoevento de antes ejecutar una consulta de inserccion si se trata de un nuevo registro, o de actualizacion si fuera uno ya existente

Un saludo
  #11 (permalink)  
Antiguo 11/07/2008, 02:42
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Pregunta Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

A ver, porque creía que iba bien pero no.

1º. Si pongo lo que me has dicho:
Cita:
Tipo de origen de la fila: Tabla /Consulta
Origen de la fila: Select catalogo.nombre_curso, catalogo.cod_curso from catalogo
Numero de columnas:2
Ancho de columnas: 0cm;2cm
Columna dependiente:1
lo que me sale en el desplegable del nombre del curso son los códigos, y no los nombres. Da igual si pongo columna dependiente 1 ó 2. para que me salga bien, tengo que poner
Cita:
Anche de columnas 2cm;0cm
No se muy bien por qué, pero es así.

2º. No me saca el cod_curso automáticamente, ni me aparece en el formulario ni mucho menos se me graba en la tabla. Esto es lo que tengo en el evento "Antes de actualizar" del combinado nombre_curso:
Cita:
Option Compare Database

Private Sub nom_curso_BeforeUpdate(Cancel As Integer)
Me.cod_curso = Me.nom_curso.Column(1)
End Sub
He probado también con Column(0, 1, y 2) por si acaso era eso pero nada.

Que estoy haciendo mal?? Thanks.
  #12 (permalink)  
Antiguo 11/07/2008, 02:54
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

por partes.

1. El orden de las columnas se lo indicas en el select. Es decir, si tienes:

Tipo de origen de la fila: Tabla /Consulta
Origen de la fila: Select catalogo.nombre_curso, catalogo.cod_curso from catalogo
Numero de columnas:2
Ancho de columnas: 0cm;2cm
Columna dependiente:1

La columna dependiente es la columna correspondiente con el valor que quieres guardar. Con los colores supongo que te aclararas a que corresponde cada cosa. por tanto, para hacer lo que deseas, que en el combo solo se vea el nombre, puedes hacer loq ue has hecho, o cambia la select de orden:
Select cod_curso,nombre_curso from catalogo


2º: Vamos a comprobar unas cosas.
- El formulario tiene como origen de registro la tabla en la que quieres guardar ese dato??
- Esta tabla tiene un campo llamado cod_curso???
- El formulario tiene un control llamado cod_curso, cuyo origen de control es el campo cod_curso???
- El cuadrop combinado se llama nom_curso???

Segun el orden del select, explicado antes, para referirte a la columna primera, para aclararnos, con esta select: Select cod_curso,nombre_curso from catalogo
Para guaradra el cod_curso, tendrias que poner: Column(0)

A ver si con estas aclaraciones lo conseguimos.

Un saludo
  #13 (permalink)  
Antiguo 11/07/2008, 04:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Hola de nuevo.

Cita:
- El formulario tiene como origen de registro la tabla en la que quieres guardar ese dato??
Si. El "origen del registro" es decir, la tabla donde quiero que se guarden los datos, es en este caso la tabla "Ofertas_Cursos"
Cita:
- Esta tabla tiene un campo llamado cod_curso???
Sí. Existen los campos 'nom_curso' (lo he abreviado un poco) y 'cod_curso'.
'nom_curso' es un cuadro de lista con esto:
Cita:
SELECT Catalogo.[nom_curso] FROM Catalogo;
y 'cod_curso' es un simple cuadro de texto. Esto en cuanto a la tabla.
Cita:
- El formulario tiene un control llamado cod_curso, cuyo origen de control es el campo cod_curso???
También. El control cod_curso tiene como origen de control el campo 'cod_curso' de la tabla "Ofertas_Cursos"
Cita:
- El cuadrop combinado se llama nom_curso???
Y si. El cuadro combinado se llama nom_curso y tiene como origen del control el campo 'nom_curso' de la tabla. Además el evento antes mencionado en "antes de actualizar"

Ahora q? ¿debería salir no? pues esas son las cosas que me pasan a mí, lo que le sale a todo el mundo, a mi no.
Alguna idea??
Gracias.
  #14 (permalink)  
Antiguo 11/07/2008, 04:52
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Y por que no te sale?? Te da algun error??

Pon un msgbox antes de insertar el valor:
msgbox Me.nom_curso.Column(0)
Me.cod_curso = Me.nom_curso.Column(0)

A ver si hay algo en el combo.

Un saludo
  #15 (permalink)  
Antiguo 11/07/2008, 05:12
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Cita:
Option Compare Database

Private Sub nom_curso_BeforeUpdate(Cancel As Integer)
MsgBox Me.nom_curso.Column(0)
Me.cod_curso = Me.nom_curso.Column(0)
End Sub
Esto es lo que he puesto y no me sale nada. ¿Que debería salirme?
No me da ni error ni nada, simplemente no me aparece el código en el registro cod_curso. Me voy a ver a la tabla, y me ha actualizado correctamente el nombre con el que he escogido del desplegable, pero ni rastro del 'cod_curso'
  #16 (permalink)  
Antiguo 11/07/2008, 06:31
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Y en el msgbox que sale???

Un saludo
  #17 (permalink)  
Antiguo 11/07/2008, 07:43
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Nada. ¿Que se supone que debería salirme? un mensaje o algo así?
No sale nada, como si no existiera el evento.
  #18 (permalink)  
Antiguo 11/07/2008, 08:11
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Vale vale, espera.

Que tenía algún tipo de error. He ido a crear un boton de comando para otra cosa y me ha salido un mensaje diciendo que había un fallo en el generador de código de Visal Basic o algo así!! Se habría quedado pillado o algo.
Lo que yo te diga, que todo me pasa a mí.

Pero he cerrado el access, lo he vuelto a abrir y ahora sí que me sale bien.

MUCHAS GRACIAS
  #19 (permalink)  
Antiguo 14/07/2008, 05:32
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Pregunta Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Necesito ayuda con algo parecido. A ver si me explico bien:

Desde el mismo formulario de la tabla "cursos" necesito rellenar un campo con el nombre de la persona a quien tengo que enviarle la oferta. Esto, mediante un cuadro combinado lo cojo de los nombres que tengo en una tabla llamada receptores. Eso sin problemas.
Lo que quiero es casi lo mismo que antes, que al escoger el nombre me salga automáticamente los campos de telefono y correo de ese "receptor de la oferta" determinado.
La diferencia es que sólo quiero que me salga en el formulario. No quiero que me guarde esos datos de nuevo en la tabla "Cursos", porque ya estan en la tabla "Receptores" es decir, no hay ningun campo en el que haya que guardar esa información, sólo mostrar la información de otra tabla.

¿Como puedo hacer eso?

Gracias.
  #20 (permalink)  
Antiguo 14/07/2008, 05:44
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Puedes hacerlo excatmante igual, pero en los controles donde quieres que se muestre esa informacion, en su propiedad origend e control, no pongas nada (seran controles independientes), por tanto lo que muestren no se guardara en ningun sitio.

Un saludo
  #21 (permalink)  
Antiguo 14/07/2008, 08:43
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Pregunta Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Vale, es casi lo que yo quería. El problema es el siguiente:

Abro por ejemplo el formulario para el registro 1. Meto el nombre del receptor (Por ejemplo Juan Rodríguez) y me rellena el resto de datos. Todo correcto.

Ahora paso al registro 2, y para empezar me salen los datos de Juan Rodríguez, cuando el receptor para este curso no va a ser él (Supongo que debería salirme en blanco si no he puesto ningun nombre).
Introduzco el receptor del registro 2 (Ej Ana García) y me cambia los datos por los de Ana García. Pero ahora si vuelvo al registo 1, me sale el nombre bien, (Juan Rodríguez) ya que está en la tabla, pero con los datos de Ana García, que es él último nombre que metí en "receptor". Tendría que volver a seleccionar a Juan Rodríguez para volver a ver los datos correctamente. No se si me he explicado.

La pregunta es, ¿puede hacerse esto para que por ejemplo actualice los datos esos, al cambiar de un registro a otro?, que lea el campo 'receptor' del formulario y actualice el resto. Así, al pasar al registro 2 me saldría los datos correctamente.

Gracias.
  #22 (permalink)  
Antiguo 14/07/2008, 09:00
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

POzi, para ello tienes que uasr el evento On_Current (al activar registro) del formulario. Haz la asigancion a los cuadros de texto en este evento.

Un saludo
  #23 (permalink)  
Antiguo 19/07/2008, 04:20
 
Fecha de Ingreso: mayo-2008
Mensajes: 80
Antigüedad: 16 años
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

Vale ya me va perfecto. Muchísimas gracias de nuevo.

Ahora a ver si me puedes echar un cable con esto, es dar un pasito más y creo que es el paso más complicado. (Tengo un par de consultillas más pero no tienen nada que ver con esto, así que creo que abriré nuevos hilos).

El problema es el siguiente:

Básicamente es lo mismo, rellenar automáticamente un par de campos, pero la complicación aquí es que son campos de un subform de otra tabla que tengo en este formulario. A ver si me explico bien porque puede que esté organizado de una forma liosa.

Te explico un poco cómo van las tablas. Para cada curso, (tabla Ofertas_Cursos) existe asociado un viaje, (tabla Viajes) y cada curso y viaje lo hace un monitor (tabla Plantilla) con una agencia (tabla Agencias)

Ofertas_Cursos: clave id_curso
Plantilla: clave dni_pers
Agencias: clave cod_agencia
Viajes: clave id_curso, dni_pers

tengo relacionado de Ofertas_Cursos a Viajes por id_curso (uno a varios)
de Personal a Viajes por dni_pers (uno a varios)
de Agencias a Viajes por cod_agencia (uno a varios)

Espero que estén bien las relaciones, si ves algo raro me avisas ok?

La tabla viajes, es la que tengo en el subformulario y tiene una serie de campos a rellenar a mano (medio de tansporte, alojamiento, provincia...) pero tiene otros que podría meter directamente.
En la tabla Ofertas_Cursos, ya he metido con anterioridad el nombre del monitor que impartirá el curso y también he metido la agencia con la que lo hará, por tanto, me gustaría que en ese subformulario, me apareciera ya el dni del monitor y el cod_agencia. ¿Cómo puedo hacer eso?

El subform se abre correctamente, es decir, si estoy en el id_curso = 12 del formulario de Ofertas_Cursos, el id_curso que aparece en el subform Viajes es el 12, con lo cual supongo que esta todo correcto.

Última edición por Piloto78; 23/07/2008 a las 02:53
  #24 (permalink)  
Antiguo 15/06/2009, 19:28
 
Fecha de Ingreso: noviembre-2006
Mensajes: 13
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Como mostrar datos de una tabla en otra automáticamente en ACCESS

"Me.cod_curso = Me.nom_curso.Column(0)"
Hola quizas esto sirva para datos cortos como texto pero para datos tipo memo en donde es muy extenso el contenido no copia todos los datos solo una parte. quisiera saber si hay alguna solucion a esto, gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:42.