Access - Seleccionar tablas desde form.

 
Vista:

Seleccionar tablas desde form.

Publicado por Marcos (68 intervenciones) el 03/05/2008 17:23:10
Hola estimados.
Tengo 19 tablas con la misma estructura: Descripción, Nro Parte, Precio Unitario.
Cada tabla representa los items necesarios para reparar un freno de pala. Como puedes apreciar son 19 tipo de frenos diferentes.
Tengo un formulario en donde Ingreso cada Orden de Reparación y un subformulario en donde selecciono los precios unitarios de cada Nro de parte que se necesita para la reparación del freno. (es el típico subformulario que mediante un cuadro combinado selecciono el Nro de parte y en otro campo me entrega automáticamente el precio y otro campo más en donde pongo la cantidad).
En el formulario principal tengo un cuadro combinado que despliega el nombre de cada una de las tablas (19) y que por consecuencia corresponde a cada tipo de freno que se puede reparar.
Mi pregunta es: Cómo puedo hacer para cuando seleccione de este último cuadro combinado, el nombre de una de las tablas, automáticamente el subformulario se base en la tabla seleccionada.
Obviamente cada tabla tiene diferentes cantidad de Nros de parte con diferentes precios.
Resumen: En el formulario principal a través de un combo selecciono la tabla y el subformulario se basa en la tabla que seleccioné.

Gracias a todos.
Marcos R.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Seleccionar tablas desde form.

Publicado por Enrique (1299 intervenciones) el 03/05/2008 20:23:06
Hola Marcos:
Si como dices, el Combo situado en el Formulario Principal tiene como valores las distintas Tablas, puedes ir cambiando el Origen del Registro del Subformulario mediante el Procedimiento de evento "Después de actualizar" del Cuadro Combinado. Hay dos formas de hacerlo y con las dos debe de funcionar igual:

(1) En este caso hacemos referencia al nombre del Formulario en la Ventana de Base de datos, que hace de Subformulario:

Private Sub Combo1_AfterUpdate()
Form_NombreSubFormulario.RecordSource = Combo1.Value
End Sub

(2) En este otro caso hacemos referencia al nombre del Control Subformulario, siendo Secundario0 el nombre de dicho Control Subformulario:

Private Sub Combo1_AfterUpdate()
Secundario0.Form.RecordSource = Combo1.Value
End Sub

Para el primer caso, es necesario que el nombre del formulario que ejerce de subformulario, no contenga espacios si consta de dos o mas palabras. Ejemplo:
Así No: Partes De Reparacion Sub
Así Si: PartesDeReparacionSub

Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Seleccionar tablas desde form.

Publicado por Marcos (68 intervenciones) el 04/05/2008 16:48:53
Enrique, como siempre, muchas gracias por tu ayuda.
Marcos R.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Enrique- Surgió una duda

Publicado por Marcos (68 intervenciones) el 05/05/2008 02:14:26
Enrique, funciona pero al seleccionar la tabla desde el ComboTablas, en la grilla del subformulario "DETALLECOMPONENTESSubform" me muestra todos los registros de la tabla seleccionada.
La idea es que no muestre los registros de la tabla seleccionada, ya que estos serán seleccionados a través de un combo "NroParte" que está en el subformulario.
De acuerdo a lo que me sugeriste hice esto.

Private Sub ComboTablas_AfterUpdate()
DETALLECOMPONENTESSubform.Form.RecordSource = ComboTablas.Value
End Sub

Yo le agregué un código más que me permite cambiar el origen de la fila del combo "NroParte" del subformulario. El origen de la fila cambia de acuerdo a la tabla seleccionada en el "ComboTablas" y quedó así.

Private Sub ComboTablas_AfterUpdate()
DETALLECOMPONENTESSubform.Form.RecordSource = ComboTablas.Value
Forms![DATOS COMPONENTES]![DETALLECOMPONENTESSubform]! _[NroParte].RowSource = ComboTablas.Value
End Sub

Funciona, pero con el detalle que te mencioné.
Marcos R.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Enrique- Surgió una duda

Publicado por Enrique (1299 intervenciones) el 05/05/2008 12:48:09
Marcos, si le pones la propiedad "Entrada de Datos" a " Sí ", el subformulario quedará en modo de introducción y no mostrará los registros. Puedes hacerlo por código, como te he puesto en la primera línea del Evento, o te vas al subformulario y esa propiedad la pones a Sí. Prueba a ver si funciona ahora.

Private Sub ComboTablas_AfterUpdate()
Forms![DATOS COMPONENTES]![DETALLECOMPONENTESSubform.DataEntry = True
DETALLECOMPONENTESSubform.Form.RecordSource = ComboTablas.Value
Forms![DATOS COMPONENTES]![DETALLECOMPONENTESSubform]! _[NroParte].RowSource = ComboTablas.Value
End Sub

Un saludo
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Enrique- Surgió una duda

Publicado por Marcos (68 intervenciones) el 05/05/2008 16:14:22
En un nuevo registro, Selecciono la tabla a través del combo tabla, comienzo a llenar el form. principal y el automáticamente en el subformulario nuevamente se despliegan los registros de la tabla seleccionada.

Lo hago al reves, primero lleno el form. principal, luego selecciono la tabla y ocurre lo mismo.
Hice lo que me has dicho, en forma directa y también a través de código.
Ojalá puedas resolverlo, pero yo también estoy tratando de darle vueltas.
Gracias.
Marcos R.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Enrique- Surgió una duda

Publicado por Enrique (1299 intervenciones) el 05/05/2008 18:21:47
Creo que eso pasa porque el Formulario que hace de subformulario, tiene en su propiedad Origen del Registro puesta de forma fija, alguna de las 19 tablas. Lo que tienes que hacer es dejarlo SIN Origen del Registro pero con todos los campos con su Origen del Control y que el Recordsource lo tome solo después de actualizar el combo. Ahora el problema será simplemente estético, es decir, que el subformulario al cargar, mostrará en todos sus campos: #¿Nombre? pero esto solo será antes de elegir una de la tablas, luego quedará en modo de introducción.

La propiedad "Entrada de datos" del subformulario, ponla directamente a Sí, en lugar de hacerlo mediante código como te puse en la 1ª línea del evento.

No puedo decirte más sin verlo.

Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar