Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Buscar dato en subformulario desde código

1,468 views
Skip to first unread message

Isaías García

unread,
Jan 2, 2004, 6:55:09 AM1/2/04
to
Hola.

Mediante un botón colocado en el formulario principal necesito poner en
marcha una búsqueda en los registros de un subformulario que hay dentro de
él. El código primero pregunta mediante un Inputbox un dato numérico de tipo
Double, el cual hay que buscar en el recordset del subformulario en un campo
concreto (llamémosle Importe). El formulario principal coge sus datos de una
tabla (Tabla1) relacionada de uno a varios con otra (Tabla2), que es la que
almacena los registros del subformulario.

Gracias y Feliz año.


Búho

unread,
Jan 2, 2004, 7:16:19 AM1/2/04
to
Hola Isaías.
Supongo que lo que quieres, es que en el subformulario de te muestren los
registros relacionados (Si les hay) con la elección del InputBox del
formulario principal.
Hay varios meteodos para atacar este tema.
Quiza el más facil, es cambiar la Propiedad Recordsource del subrmulario.
....depues de hacer la eleccion en el InputBox
Escribo 'apelo' sin probar
Dim SqlNueva as String
Dim ResultadoInputBox As string
ResultadoInpuntBox=InputBox("Meta un valor")
'aqui deberias controlar que el usuario haya metido algo en la variable y
que sea
'numerico
'Una vez comprobado....
SqlNueva="Select * From Tabla2 Where CampoUnion=" & CDbl(ResultadoInputBox)
Me!NombreSubForm.Form!RecordSource=SqlNueva

Espero que te funcione. La idea es esa.
Se podría hacer tambien, buscando previamente (Metodo FindFirst) en el
RecordsetClone del Subformulario
--

Saludos desde Valladolid
Francisco Javier García Aguado
---
http://www.buho.tk [http://www.clikear.com/webs/accessbhuo/index.html]
http://groups.msn.com/Access2000VisualBasic/
=======================================
Web de Access de Juan M Afan de Ribera
http://www.juanmafan.tk
=======================================
"Isaías García" <num...@nmail.com> escribió en el mensaje
news:%231UDDbS...@TK2MSFTNGP09.phx.gbl...

Búho

unread,
Jan 2, 2004, 7:42:27 AM1/2/04
to
Uf, me he dado cuenta que lo que te he escrito está mal, esta fatal....
No me daba cuenta, que antes del filtraje, o de poner de nuevo el
RecordSource del Subformulario, éste ya tiene valores relacionados con el
formulario principal. Y son en estos registros relacionados sobre los que
tengo que actuar, no sobre toda la tabla.
Habrá que sofisticar un poco más la clausula Where del nuevo recordsource,
en el sentido de que
(A) Deben ser registros relacionados con UNO del formulario principal y...
(B) además cumplir la condicion del InputBox.

Es que tal como te lo había puesto, se cargarían registros (Relacionados o
no con uno del formulario principal)

Pues quizá, para facilitar el tema, nos podríamos olvidar del RecordSource
(Se podría hacer tambien así, pero complicariamos las cosas) y filtrar
simplemente el actual recordsuource del Subformulario por el valor del
inputbox

Me!NombreSubForm.Form!.Filter="[Importe]=" & CDbl(ResultadoInputBox)
Me!NombreSubForm.Form!FilterOn=True

Isaías García

unread,
Jan 2, 2004, 4:08:57 PM1/2/04
to
Mira, no soy capaz. Me da errores, así que te cuento lo que tenía puesto:

Nombre del formulario principal: Edicion (Datos en tabla Obras)
Nombre del subformulario: SubCert (Datos en tabla Certificaciones)

Private Sub Comando12_Click()
On Error GoTo Err_Comando12_Click
Dim preg As Double
preg = InputBox("Introducir importe (con IVA)")
Dim Db As Database
Dim rs As Variant
Set Db = CurrentDb
Set rs = Db.OpenRecordset("Certificaciones")
Dim criterio As String
Recordset.MoveFirst
criterio = "[ImporteIVA] = " & preg
If Not IsNull(preg) Then
Forms![Edicion]![SubCert].Form!.Recordset.FindFirst criterio
If Not Forms![Edicion]![SubCert].Form!.RecordsetClone.NoMatch Then
Forms![Edicion]![SubCert].Form!.Bookmark =
Forms![Edicion]![SubCert].Form!.RecordsetClone.Bookmark
Else
MsgBox "No se encontró ninguna coincidencia"
End If
End If

Exit_Comando12_Click:
Exit Sub

Err_Comando12_Click:
MsgBox Err.Description
Resume Exit_Comando12_Click

End Sub

A ver si averiguamos dónde falla. Y gracias por las molestias.


Búho

unread,
Jan 2, 2004, 7:59:41 PM1/2/04
to
Hola, prueba con este otro codigo
Private Sub Comando12_Click()
Dim preg
Dim Criterio As String

preg = InputBox("Introducir importe (con IVA)")
If Len(preg) <> 0 And IsNumeric(preg) = True Then
Criterio = "[Cantidad] = " & CDbl(preg)
Me!SubCert.Form.RecordsetClone.FindFirst Criterio
If Not Me!SubCert.Form.RecordsetClone.NoMatch Then
Me!SubCert.Form.Bookmark = Me!SubCert.Form.RecordsetClone.Bookmark
MsgBox "Registro Encontrado"

Else
MsgBox "No se encontró ninguna coincidencia"
End If
End If
Exit_Comando12_Click:
Exit Sub

Err_Comando12_Click:
MsgBox Err.Description
Resume Exit_Comando12_Click

End Sub

De todas formas ¿Que quieres hacer realmente?
¿Decir al usuario si hay registros coincidentes y posicionarte en el
primero, o filttar todos los registros coincidentes?

Supongo que el codigo (Salvo error de sintaxis en alguna variable) te
funcionará, pero la verdad, en estos momentos, no sé si es el mas optimizado
que digamos, para encontrar un registro en el subform. La verdad que no me
gusta nada, pero bueno...
Simplemente me he limitado a acortar un poco lo que tu ya tenias...y meter
alguna cosilla nueva.

Ojo a una cosa con los formularios y subformularios...el subformulario no
dejará de ser un control más del formulario principal, mira bien pues que
para ese formulario principal, el SubForm se llame realmente «SubCert» si
no, el codigo fallaría

Isaías García

unread,
Jan 3, 2004, 5:48:55 AM1/3/04
to
Gracias, Buho.

He probado tu código pero sigue sin funcionar. Siempre da el mensaje de no
encontrado a pesar de buscar un valor que sé que existe en uno de los
registros.

Lo único que quiero es que Access se posicione en el registro del formulario
principal que contiene al registro del subformulario con el valor comparado
(no filtrarlo) y de momento me vale con que encuentre la primera
coincidencia, aunque si lo consigo, me vendría muy bien poder continuar la
búsqueda por los siguientes que coincidan.

Saludos.


Búho

unread,
Jan 3, 2004, 6:11:30 AM1/3/04
to
El codigo esta bien Isaias. Te lo puedo asegurar.
Por experiencia ya de varios años en las News, se que a veces un minimo
detalle que se escapa, el valor de un campo que no es doble, el nombre de un
formulario que no esta biene scrito...etc etc hacen estas cosas.
Haz un prueba.
Mandame el Form, el Subform, las dos tablas en una MDB comrprimida a mi
correo y veras como te lo remito funcionando.

Mi correo
pacoARROBAnemo.es
ARROBA=@

--

Saludos desde Valladolid
Francisco Javier García Aguado
---
http://www.buho.tk [http://www.clikear.com/webs/accessbhuo/index.html]
http://groups.msn.com/Access2000VisualBasic/
=======================================
Web de Access de Juan M Afan de Ribera
http://www.juanmafan.tk
=======================================

"Isaías García" <num...@nmail.com> escribió en el mensaje

news:d9xJb.313768$Ip6.6...@news-reader.eresmas.com...

Isaías García

unread,
Jan 3, 2004, 11:39:09 AM1/3/04
to
OK. Enviado.


Búho

unread,
Jan 3, 2004, 12:20:01 PM1/3/04
to
Tambien enviado.
Espero que te funcione. A mi ya me ha funcionado.
El tema era simplemente la configuracion regional del equipo en el sentido
de los separadores decimales (Coma y Punto) ya que precisamente estabamos
buscando con FindFirts en un campo tipo Double.
Este problema, no le tienen los Americanos, seguro ;-)

Isaías García

unread,
Jan 3, 2004, 6:23:09 PM1/3/04
to
Bueno, pues lamento decirte que no funciona. El valor a encontrar puede
estar situado en otro registro, no sólo en el que está a la vista.

Saludos.


Ju@nK

unread,
Jan 3, 2004, 6:20:20 PM1/3/04
to
Estaba a punto de comentar que podría ser un tema de redondeos, con
decimales puede ocurrir. que busques un valor y el resultado no está
redondeado y aunque muestre el valor igual al que buscas ej.: 35,40
internamente en el campo tenga otro valor ej.: 35,385.

--
Salu2
Ju@nK
www.juank.tk
Otras Web de miembros del grupo que se deben visitar
http://www.mcpegasus.net
http://www.buho.tk
http://www.juanmafan.tk
http://usuarios.tripod.es/jbchea/
"Búho" <pacoQU...@nemo.es> escribió en el mensaje
news:O$FTF3h0D...@TK2MSFTNGP11.phx.gbl...

Búho

unread,
Jan 3, 2004, 6:49:37 PM1/3/04
to
Hola de nuevo Isaias.
Creo que no nos estamos entendiendo desde un principio.
Tu tienes un Formulario Principal y un subformulario, enlazados por un campo
común denominado CodigoObra.

Según vas moviendo los registros del formulario principal, se te muestran en
el subformulario los registros relacionados con el primer formulario.(Tienes
una relacion 1 a infinito entre tablas)
Mi pregunta es:
¿Donde quieres buscar?
¿En toda la tabla Certificaciones o solo en los registros de la tabla
certificaciones que se muestran en el subformulario activo, que no serán
otros que los relacionados con un UNICO registro del formulario principal?
(El que actualmente esta activo)

Es decir, segun tienes montado el Formulario y Subformulario, este ultimo,
es decir el Subformulario, solo mostrará aquellos registros relacionados con
el registro activo formulario principal. Asi tienes diseñada la palicacion
Si cambias el registro activo del formulario principal, el subformulario
cambiara logicamente de registros, mostrando solo los relacionados con el
ACTUAL del formulario principal.
Pues bien, en esos registros (Cambiantes) del subformulario, es donde
hacemos la busqueda.
Y se posicionará en el primer registro coincidente. Y eso funciona.

Repito...tu cuando metes un valor en Inputbox...¿Que es lo que realmente
deseas buscar?
¿Todos los registros de la tabla certificaciones que tengan dicho valor?
Si es eso, tal cual tienes diseñado el Form+Subform no es posible asi
directamente.
Ten en cuenta que estas actuando sobre el RecordsetClone del SUBformulario y
éste, el recordsetClone, varía continuamente a cada pasada de registros del
Form Principal.

Yo me entiendo...no sé si me habré explicado con claridad para que tu me
captes la idea.
--

Saludos desde Valladolid
Francisco Javier García Aguado
---

http://www.buho.tk [http://www.clikear.com/webs/accessbhuo/index.html]
http://groups.msn.com/Access2000VisualBasic/
=======================================
Web de Access de Juan M Afan de Ribera
http://www.juanmafan.tk
=======================================
"Isaías García" <num...@nmail.com> escribió en el mensaje

news:lcIJb.315319$Ip6.6...@news-reader.eresmas.com...

Búho

unread,
Jan 3, 2004, 6:57:39 PM1/3/04
to
No, Juan, no es eso. Ese tema funciona bien
Lo que es, creo, es que Isaias no se ha explicado convenientemente o yo no
lo he entendido.
Acabo de contestarle mas abajo, aunque te lo repito a ti.
Tiene dos Tablas: Obras y Certificaciones.
Ambas estan relacionas por un campo clave bajo una relacion 1 a infinito.
Con dicha relacion ha creado un sistema de Formulario+Subformulario, donde a
UN registro del Formulario se muestran en el Subformulario los registros
relacionados.
En el boton de busqueda de Isaias utiliza el RecordsetClone del
Subformulario, con lo cual yo siempre he interpretado desde un principio,
que lo que quería es:
Ante un registro concreto(Una obra) del formulario principal, posicionar el
cursor en el registro del Subfirmulario que coincidiera con el valor del
Inputbox
Pero dado lo que me acaba de escribir, parece que no es eso, que quizá sea
que quiere buscar en toda la tabla de certificaciones.
EN cualquier caso, en estos momentos, no sé exactamente lo que quiere,
sinceramente.

--

Saludos desde Valladolid
Francisco Javier García Aguado
---

http://www.buho.tk [http://www.clikear.com/webs/accessbhuo/index.html]
http://groups.msn.com/Access2000VisualBasic/
=======================================
Web de Access de Juan M Afan de Ribera
http://www.juanmafan.tk
=======================================

"Ju@nK" <con...@hotmail.com> escribió en el mensaje
news:O5mvfGl...@TK2MSFTNGP12.phx.gbl...

Búho

unread,
Jan 3, 2004, 7:00:20 PM1/3/04
to
Por cierto Isaias, he borrado el ejemplo que te envié.
Dado que pesa poco...¿Le podrías postear comprimido para que le viera mas
gente y te pudieramos ayudar entre todos?

Isaías García

unread,
Jan 6, 2004, 4:22:41 AM1/6/04
to
Bueno, dejaremos esto como otro Expediente X.

Muchas Gracias de todos modos.


julian-vlc-sp

unread,
Jan 10, 2004, 8:56:17 PM1/10/04
to
Humildemente pregunto.

¿Puedes poner en el formulario un campo donde escribir el dato numérico que
quieras, y después vincular este campo con el que quieras del subformulario?

SALUDOS.
julian-valencia-españa

P.D.: Aqui, o se piden peras a un olmo, o no hay Espedientes X


Ju@nK

unread,
Jan 11, 2004, 10:17:09 AM1/11/04
to
"Pozi"

--
Salu2
Ju@nK
www.juank.tk
Otras Web de miembros del grupo que se deben visitar
http://www.mcpegasus.net
http://www.buho.tk
http://www.juanmafan.tk

http://perso.wanadoo.es/j.bchea
http://perso.wanadoo.es/rubenvigon
"julian-vlc-sp" <ijulianARROBAiespana.es> escribió en el mensaje
news:uR5DZY%231DH...@TK2MSFTNGP10.phx.gbl...

julian-vlc-sp

unread,
Jan 11, 2004, 10:36:26 AM1/11/04
to
que quiere decir pozi?

que va a ser que resuelve el problema y que no habrá expediente X?

es que me he perdío leyendo el hilo

SALUDOS.
julian-valencia-españa


Victor Delgadillo

unread,
Jan 11, 2004, 12:22:49 PM1/11/04
to
Julian,
Si tienes un formulario con un subformulario con su sub-tabla unida a la
tabla del formulario y ejecutas una "busqueda" de un registro (con los
lentes del menu), automaticamente te lleva al registro y carga el
subformulario con los sub-registros. Esto es lo 'normal'... Ahora, si lo
que deseas es abrir un formulario simple con un cajon de texto donde
insertas una referencia o 'posible referencia', entonces tienes que primero
asegurarte que la referencia sea valida:
DLookup("[campo_ref]","Tabla","[campo_ref] = '" & Forms!txtReferencia & " '
") da el valor o nulo si no lo encuentra. Una vez que lo encuentras ya
puedes aplicarle un SQL buscando los campos que deseas llenar..
strSQL = "SELECT tabla1.campo1, tabla1.campo2,... FROM tabla1 WHERE
campo_ref = " & Forms!txtReferencia
y ejecutas el SQL.

--
Victor Delgadillo
Miami, Florida

Mensajes al grupo, asi todos nos beneficiamos.


"julian-vlc-sp" <ijulianARROBAiespana.es> wrote in message
news:ufWnriF2...@TK2MSFTNGP11.phx.gbl...

julian-vlc-sp

unread,
Jan 11, 2004, 1:04:13 PM1/11/04
to
Al igual me lío, porque confieso que me perdí leyendo el hilo, y como sabes
que yo de código estoy empezando, a ver que te parece lo siguiente:

Lo que dices me parece acertado, pero al igual no importa que el valor
exista o no, vaya usted a saber, por ejemplo, tenemos en el formulario dos
campos, uno donde ponemos (de la forma que sea) el idcliente, y vinculando
el subformulario, hacemos que todas las facturas del subformulario
pertenezcan a dicho cliente.

En un segundo control del formulario escribimos un valor cualquiera que
queremos buscar en un campo cualquiera del subformulario, por ejemplo
importe de la factura, y si lo vinculamos, tendremos que aparecerán o no,
registros en el sub, dependiendo de que existan o no registros con esas dos
condiciones, al igual a alguien esto le es suficiente.

Otra cosa es ir a tiro fijo, para ello, el segundo control del que hablo,
puede ser un desplegable que se alimente de la tabla del sub, filtrándola
por el valor que tenemos puesto en el primer control (en este caso
idcliente).

Que este mensaje solo sirva para continuar la conversación, sin pretensión
ninguna, y para permitirme desearte FELIZ AÑO NUEVO a TI y a TODOS LOS
TUYOS, por si no lo he hecho antes.

SALUDOS.
julian-valencia-españa


Búho

unread,
Jan 11, 2004, 3:44:46 PM1/11/04
to
Julian.
Te aseguro (Tuve el ejemplo en mi ordenador y le modifique) que funcionaba
perfectamente y aqui no hay ningun expediente X.
Se actuaba sobre el conjunto de registros del subformulario, conjunto de
registros que obviamente son cambiantes al estar relacionados con UNO del
formulario principal.
Y ante cada paquete de conjunto de registros, el codigo que le envié a
Isaias buscaba perfectamente en el subformulario.
Me quedó la duda (No aclarada por Isiaias) si al final quería buscar en esos
subcomjuntos de registros o entoda la tabla.

El unico expediente X que tengo yo montado con mi Access 2003, es por que
leñes no se me muestra la ayuda de DAO en el editor de VBA.
Ese si que es XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, vamos porno del duro.

--

Saludos desde Valladolid
Francisco Javier García Aguado
---

julian-vlc-sp

unread,
Jan 11, 2004, 3:55:07 PM1/11/04
to
Access 2003?, eso existe?, no me liés, que pasé hace poco del 97 al 2000, de
casualidad.

Dices porno del duro?, de ese que dura lo que dura dura?

Yo cuando sea mayor como tú, no quiero ser un viejo verde....... quiero ser
verde y "pecar" ya, y cuando digo ya, digo desde ahora mismo y con efectos
retroactivos.

Como dice nuestro amigo Víctor, quiero cazar lagartijas ya, y además muchas.

SALUDOS.
julian-valencia-españa


Victor Delgadillo

unread,
Jan 12, 2004, 7:14:07 AM1/12/04
to
Julian, no me digas que tampoco escuchastes de la version Office XP (2002)?
Ya tambien obsoleta con Office 2003.

--
Victor Delgadillo [MVP Access]
Miami, Florida

Consultas al grupo, asi todos nos beneficiamos.

_


"julian-vlc-sp" <ijulianARROBAiespana.es> wrote in message

news:#LXcwUI2...@TK2MSFTNGP12.phx.gbl...

julian-vlc-sp

unread,
Jan 12, 2004, 2:59:32 PM1/12/04
to
la versión Office XP (2002), no me suena, quizas si me la tarareas (jejeje)

que si, victor que si, que de oidas las conozco, era como entrada para
contestarle al paco, y llamarle viejo verde

> > SALUDOS.
> > julian-valencia-españa


Búho

unread,
Jan 12, 2004, 4:17:19 PM1/12/04
to
Mira por donde se me habia escapado tu anterior respuesta. Pero ahora al
contestar a Victor, me la he visto y ya tienes apuntadas dos mas.
Te vas a forrar :-P
Suma y sigue

julian-vlc-sp

unread,
Jan 12, 2004, 4:26:29 PM1/12/04
to
has puesto bien lo de Suma y sigue?

o querias poner Dsum and continue?

SALUDOS.
julian-valencia-españa


Búho

unread,
Jan 12, 2004, 6:50:06 PM1/12/04
to
Anda mirale que guapo él, poniendo ya el «Dsum» y todo..
¿No te ha dado calambre el teclado al escribir esa funcion de CODIGO?

Por cierto, si te sirve de consuelo, yo tambien odio esas funcioncillas
agreagadas de domino.
Manías de VIEJO VERDE, efectivamente

Ju@nK

unread,
Jan 12, 2004, 6:46:46 PM1/12/04
to
En todo caso
resume next
continue te dará error de compilación.

--
Salu2
Ju@nK
www.juank.tk
Otras Web de miembros del grupo que se deben visitar
http://www.mcpegasus.net
http://www.buho.tk
http://www.juanmafan.tk
http://perso.wanadoo.es/j.bchea
http://perso.wanadoo.es/rubenvigon
"julian-vlc-sp" <ijulianARROBAiespana.es> escribió en el mensaje

news:uufgDLV2...@TK2MSFTNGP09.phx.gbl...

julian-vlc-sp

unread,
Jan 13, 2004, 2:52:49 PM1/13/04
to
Gracias, es que no me funcionaba, pero me daba corte preguntar cosas de
código. :-))))))

SALUDOS.
julian-valencia-españa


Ju@nK

unread,
Jan 13, 2004, 2:58:44 PM1/13/04
to
No me creo nada.
que te cortas tu, Julián, ¿donde está el verdadero Julián?. ¿Que hiciste
con mi amigo de Valencia?

--
Salu2
Ju@nK
www.juank.tk
Otras Web de miembros del grupo que se deben visitar
http://www.mcpegasus.net
http://www.buho.tk
http://www.juanmafan.tk
http://perso.wanadoo.es/j.bchea
http://perso.wanadoo.es/rubenvigon
"julian-vlc-sp" <ijulianARROBAiespana.es> escribió en el mensaje

news:%23zIJY7g...@tk2msftngp13.phx.gbl...

julian-vlc-sp

unread,
Jan 13, 2004, 3:11:46 PM1/13/04
to
¿Calambre?

En su primera acepción, contracción espasmódica, involuntaria, dolorosa y
poco durable de ciertos músculos, particularmente de los de la
pantorrilla.?, pues no, no suelo escribir con esa parte de mi cuerpo.

En su segunda acepción, estremecimiento producido por una descarga eléctrica
de baja intensidad?, pues tampoco, mi teclado externamente es de material
plástico (no conductor de energía eléctrica).

En su tercera acepción, enfermedad caracterizada por el espasmo de ciertos
grupos de músculos, generalmente de la mano, que dificulta o impide el
ejercicio de la función de esta en algunas profesiones y oficios, como los
de escribiente, telegrafista o pianista?, pues tampoco no, esto me suena a
enfermedad de viejo.

¿Me estas llamando viejo?

SALUDOS.
julian-valencia-españa

P.D.: Seamos rigurosos y precisos en nuestras expresiones, o ¿no sabes que
cambiar una coma por punto y coma, o comillas por comillas dobles, hace que
la cosa no funcione?


julian-vlc-sp

unread,
Jan 13, 2004, 3:14:24 PM1/13/04
to
Buscalo en la respuesta a paco del mensaje siguiente.

> > SALUDOS.
> > julian-valencia-españa


Búho

unread,
Jan 13, 2004, 6:50:35 PM1/13/04
to
Ya veo que te has estado mirando el Espasa Calpe :-P

julian-vlc-sp

unread,
Jan 14, 2004, 3:14:04 PM1/14/04
to
eso cualo es?

yo he mirao en rae.es

SALUDOS.
julian-valencia-españa

P.D.: Como indica Rafa, se me olvidó citar Valencia pa lo del encuentro


0 new messages