Campos de varias tablas en formulario continuo

22/06/2012 - 23:46 por dariobaeza | Informe spam
Saludos, me gustaria saber como puedo hacer para hacer funcionar correctamente un formulario continuo con campos de varias tablas distintas (ahora el formulario funciona, pero solo me lista los registros en los que TODOS los campos de esas tablas estan rellenados, es decir, que si estan vacios no me aparecen).

Me explico, supongamos por abreviar que tengo estas tablas:

A) TClientes, que contiene:
1.- IdCli (autonumerico)
2.- NomCli (Texto)

B) TAbogados, que contiene:
1.- IdAbog (autonumerico)
2.- NomAbog (Texto)

C) TExpediente, que contiene:
1.-IdExp (autonumerico)
2.-Cliente (Numerico, en cuadro combinado que proviene de TCliente, con columna dependiente 1 (IdCli), y columna mostrada 2 (NomCli), para que el combo muestre el nombre del cliente).
3.- Abogado (Numerico, en cuadro combinado que proviene de TAbogados, con columna dependiente 1, y columna mostrada 2, para que el combo muestre el nombre del abogado).

Ahora para listar todos los expedientes y sus implicados, me creo un formulario continuo (FListadoExpedientes), que contiene los siguientes campos:
1.- IdExp (de la tabla TExpedientes)
2.- NomCli (de la tabla TClienetes)
3.- NomAbog (de la tabla TAbogados)

No pongo el campo Cliente y Abogado de la tabla expediente, para que lo que me salga en este formulario sea un cuadro de texto (con texto) y no un combo (que en el fondo esconde un numero de id), por dos razones:
- Para que no me salga el combo en el formulario, y me aparezca un campo de texto con un nombre.
- Para poder hacer busquedas con un filteron y un like de este tipo (ya que de momento no se hacerlas de otra manera):

Private Sub cmdBuscaPorNombre_Click()
Dim vNom As String, miFiltro As String
vNom = Nz(Me.txtBuscaPorNombre, "")
If vNom = "" Then Exit Sub
miFiltro = "[NomCli]LIKE'*" & vNom & "*'"
Me.Filter = miFiltro
Me.FilterOn = True
End Sub

Ya que si hago las busquedas en combos, como en realidad lo que hay detras es el campo Id (ya que es la columna dependiente), pues no podria hacer busquedas aproximadas con el like.

Total, que entonces no puedo meter combos en el formulario que me quiero hacer, por lo que en vez de meter directamente los campos Cliente y Abogado de la tabla TExpedientes, me toca meter el campos NomCli (de TClientes) y el campo NomAbog (de Tabogagos).

Y la cuestion está en que si lo hago asi, el forumlario continuo solo me lista aquellos expedientes en los que este relleno el campo cliente y el campo abogado. Es decir, que si en un expediente no tengo relleno por ejemplo el campo abogado, pues ese expediente no me aparece en el formulario continuo (aunque tenga su id y su cliente).

Total, os he contado esta chapa, porque puede que lo que yo quiero solucionar de una manera (que el formulario continuo me liste todos los expedientes, aunque no tengan algun campo relleno), puede que sea mejor solucionarlo de otra, dando otro enfoque al tema.

Bueno, si alguno sabeis que puedo hacer, os lo agradeceria.

Saludos y gracias

Preguntas similare

Leer las respuestas

#6 dariobaeza
25/06/2012 - 18:21 | Informe spam
Hola, gracias por la respuesta. Se me olvidó decir que estoy utilizando access 2010. No trabajo sobre consultas, lo programaba todo en el formulario.

Empezamos por el principio, que creo que va a ser mejor:

Supongamos que tengo una tabla TClientes, con 2 campos:
IdCli - Autonumerico
NomCli - Texto (nombre del cliente)

Ahora tengo la tabla principal TExpedientes:
IdExp - Autonumerico
Cliente - Numerico, que viene de TClientes, con 2 columnas (columna dependiente la del Id, y columna para ver el nombre del cliente)

Hora hago el formulario continuo de TExpedientes (FListadoExpedientes), solo para listar y buscar expedientes, sin poder introducir datos desde ahi, con sus 2 campos (IdExp y Cliente)

Pues lo unico que quiero es que en FListadoExpedientes salga el campo cliente como un campo de texto (no como un combo). Por varias razones:
- Porque solo es para listar y buscar expedientes, con lo que un combo no tiene mucho sentido
- Para poder buscar dentro de este formulario por el campo cliente, mediante un cuadro de texto (txtBuscaPorNombre) y un boton de comando que realiza la busqueda (cmdBuscaPorNombre) y un filteron con un Like, que lo hago con esta estructura:

Private Sub cmdBuscaPorNombre_Click()
Dim vNom As String, miFiltro As String
vNom = Nz(Me.txtBuscaPorNombre, "")
If vNom = "" Then Exit Sub
miFiltro = "[Cliente]LIKE'*" & vNom & "*'"
Me.Filter = miFiltro
Me.FilterOn = True
End Sub


Ahora no lo puedo programar asi, porque el filteron me busca por la Id y no por el nombre.

Supongo que todo se solucionaria si a TClientes le quito la Id y lo pongo solo por el nombre, pero por lo poco que se, eso no es recomendable para una base de datos y mas si hay muchos registros.

Podria hacer estas cosas de alguna otra manera, como por ejemplo buscando de otra manera que me pudiese buscar por el nombre del cliente y no por su id (que es lo que esta realmente detras del combo), pero es que de momento no se.

¿Alguna ayudita? :))

Saludos y gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida