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

#1 dariobaeza
23/06/2012 - 13:02 | Informe spam
Por si alguno quereis verla, he hecho una base de datos de pruebas, con las cosas que pongo en la pregunta para que veais como TExpedientes tiene 8 registros, y en FListadoExpedientes solo salen 4 de ellos (aquellos en los que tanto el campo NomCli como NomAbog estan rellenados).

El enlace para verla es este:
https://www.dropbox.com/s/gsqyo9px3...ebas.accdb


Saludos
Respuesta Responder a este mensaje
#2 dariobaeza
23/06/2012 - 17:14 | Informe spam
Bueno, creo que ya he encontrado una buena solucion:
- Dejo las tablas conforme las tengo
- Me creo el formulario con los campos de la tabla TExpedientes
- Entonces me saldran dos cuadros combinados (el de clientes y el de abogados)
- Hago invisibles esos campos y por cada uno de ellos y en el lugar que les corresponderia coloco un cuadro de texto, al que le asigno este valor:
=[ComboQueCorresponda].[Column](1)

Y con ello queda todo como queria:
- El formulario me lista todos los registros
- En lugar de combos aparecen cuadros de texto, lo que me gusta mas, ya que no es un valor para seleccionar, sino solo para listar.
- Al ser un cuadro de texto, y no ser un combo con un valor numerico detras, ya puedo hacer busquedas por ese texto.

Por lo poco que se, me parece buena solucion, y creo que no me dará ningun problema, o se os ocurre algo por lo que esta configuracion no pueda ser buena o haya otra mejor?

Saludos y gracias
Respuesta Responder a este mensaje
#3 dariobaeza
23/06/2012 - 18:10 | Informe spam
Bueno, ya estoy aqui dando por saco de nuevo :=)


Con respecto a esta cuestion me queda un ultimo rescollo a solucionar: Cuando paso el dato que me interesa de un cuadro combinado a un cuadro de texto, todo funciona ok, pero si el cuadro combinado viene de un campo multivalor, ya estoy jodido, porque no logro que me pase los valores que me interesa. Si me pasa su id separada por punto y coma, pero no se como decirle (no se si sera posible), que me pase el nombre en vez de la id.


Me explico: tengo un Tabla con los organos judiciales existentes (TOrganos), esa tabla entre otras cosas, contiene un campo que se llama Materia (civil, penal...), que proviene, mediante el asistente para busquedas, de otra tabla TMaterias. Como los organos judiciales en algunos casos pueden llevar mas de una materia, el campo materia es un campo multivalor.


En el formulario de los organos judiciales (FOrganos), me sale un combo en el que se recogen los nombres de las materias, separados por punto y coma, por ejemplo: Civil; Penal.


Y claro, lo que quiero ahora es que me salga eso de civil; penal en un cuadro de texto (no en el combo), y no lo logro:

- Si pongo que el cuadro de texto, como os decia antes, =[Materia].[Column](2) -> Me sale bien el nombre en los campos que tienen solo un valor, pero en los campos que tienen mas de un valor, se me queda en blanco. En este caso tiene que ser la columna 2, porque es la que contiene el nombre.

- Parecido sucede si pongo =[Materia].[Column](1) -> me sale el numero de id de la materia, pero en aquellos que tienen mas de una materia se queda en blanco

- Si pongo solo =[Materia] -> me sale el numero de id de la materia, y en el caso de que haya mas de una, aparecen separados por comas. Que es lo que quiero que suceda, pero con texto, con el nombre, en vez de con la id.

- Si pongo =[Materia].[Value] -> me sucede lo mismo que en la anterior.

- Si pongo =[Materia].[Value].[Column](2) --> (me lo he inventado, haciendo pruebas, a ver si asi salia), me da error. Me sale: #¿Nombre? . Lo mismo sucede en este supuesto si pongo columna 1 o columna 0.


¿Alguna ideaaaaaa? :)))


Saludos y gracias
Respuesta Responder a este mensaje
#4 dariobaeza
24/06/2012 - 18:10 | Informe spam
Olvidemos lo anterior, porque sigo como al principio, mi gozo en un pozo, pensaba yo que despues de pasar la columna 2 del combo a un cuadro de texto, iba a poder hacer busquedas por ese cuadro de texto sin problemas, pero no se que pasa, que cuando las hago me dice que introduzca el valor del parametro.



Es decir, pongamos que, en un formulario continuo, he pasado el valor de la segunda columna a un cuadro de texto, llamato "txtCli", mediante la asignacion a ese cuadro de:


=[ComboQueCorresponda].[Column](1)



Entonces si ahora la busqueda la hago mediante un filteron por ese cuadro de texto, poniendo

miFiltro = "[txtCli]LIKE'*" & vCli & "*'"



Es decir, la busqueda seria asi:



Private Sub cmdBusca_Click()
Dim vCli As String, miFiltro As String
vCli = Me.txtBuscaPorCliente.Value
miFiltro = "[txtCli]LIKE'*" & vCli & "*'"

Me.Filter = miFiltro
Me.FilterOn = True

End Sub


Me da error, me dice que introduzca el valor del parametro txtCli, nu se porque.

¿Alguna idea de como hacerlo'
Respuesta Responder a este mensaje
#5 José Mª Fueyo
25/06/2012 - 09:33 | Informe spam
Hola
De entrada, no nos comentas con que versión trabajas.
Imagino que trabajas con consultas ¿es correcto? bien, de ser así, solo tendrías que crear uniones externas. Haz doble click en la relación y selecciona donde de que lado quieres añadir todos los registros y de cual solo los coincidentes.
Espero te sirva.

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida