Discussion:
Llamar a un procedimiento de un subformulario desde otro formulario
(demasiado antiguo para responder)
Blue
2004-10-17 10:03:47 UTC
Permalink
Hola a todos, tengo un formulario principal con los datos principales de una
factura y un subformulario con los datos del cuerpo de la factura. He hecho
una ventana de busqueda de articulos para poder buscarlos mas facilmente de
tal forma que busco un articulo y pego el codigo en el subformulario, lo que
seria el cuerpo de la factura. En este subformulario tengo un procedimiento
que ejecuto cuando introduzco un nuevo codigo de articulo, pero al pegarlo
dirctamente no lo hace y quisiera ejecutarlo a mano tal que asi ["nombre
Formulario"]![nombre subformulario].[Nombre de funcion] pero no me deja, ni
puedo hacerlo.
¿como lo hago?
Gracias
Búho
2004-10-17 10:17:10 UTC
Permalink
Hola Blue...no tengo tiempo de probarlo, pero yo juraría, que si ese
procedimiento (o funcion) le declaras como *publico* dentro del subform,
creo(insisto, creo) que se podría llamar mas o menos así desde el Parent, es
decir desde el formulario principal:

Me.Tusubformualrio.Form.TuProcedimiento
ó
Form_Tusubformualrio.TuProcedimiento
Ya me dirás si furrula o no....que tengo mis dudas sin probarlo.
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
---
http://www.mvp-access.com/buho
http://www.mvp-access.com/foro
http://groups.msn.com/Access2000VisualBasic/
Blue
2004-10-17 11:12:11 UTC
Permalink
Post by Búho
Hola Blue...no tengo tiempo de probarlo, pero yo juraría, que si ese
procedimiento (o funcion) le declaras como *publico* dentro del subform,
creo(insisto, creo) que se podría llamar mas o menos así desde el Parent,
Me.Tusubformualrio.Form.TuProcedimiento
ó
Form_Tusubformualrio.TuProcedimiento
Ya me dirás si furrula o no....que tengo mis dudas sin probarlo.
--
Hola Búho, no, no funciona, ya lo habia probado pero me da error. Es que el
procedimiento no puedo quitarlo del subformulario, sino lo pondria en un
modulo como publico y a correr, pero no lo puedo tocar. Quizas a ti que eres
una maquina se te ocurra algo mejor, lo que me pasa es que en subform tengo
un cuadro de texto con la propiedad despues de actualziar asociado al
procedimiento que necesito ejecutar (lo que hace es un busqueda del articulo
y me da unos valores de existencias, etc) cuando desde el subform meto a
mano un codigo de atrtiuclo, al pulsar la tecla enter entra en
funcionamiento el procedimiento y funciona ok. el problema me viene cuando
abro el formulari ode busqueda (ahi fltro, ordeno etc) y seleciono un
articulo y pulso en pegar yo hago Forms("Facturas")![subDatos]![txART] =
lsExp.Column(0) y me pega el codigo del articulo en el subform pero aunque
yo pulse despues la tecla enter no me reconoce el evento despues de
actualizar y no me hace nada ??????? no se porque, por eso quiero que
despues de que pege el codigo del articulo ejecute ese procedimiento. No se,
a ver si a ti se te ocurre algo.

Quiero aprovechar Búho para darte las gracias por toda la ayuda que me has
prestado, ya que ha sido mucha, y muy buena, gracias por todo.

Saludos desde Soria
Post by Búho
Saludos desde Valladolid
Francisco Javier García Aguado
---
http://www.mvp-access.com/buho
http://www.mvp-access.com/foro
http://groups.msn.com/Access2000VisualBasic/
Chea
2004-10-17 12:11:42 UTC
Permalink
Como el Búho estará tomando unos vinos, te respondo yo.

Lo que te quería decir Paco no es que metieras el procedimiento en un módulo
público, sino que, sencillamente, lo declararas como público.

De manera predeterminada, los procedimientos de evento de un form son
privados, es decir, que sólo son asequibles dentro del módulo de ese Form,
pero nosotros podemos hacerlos públicos si nos interesa, basta con añadirle
"Public" delante del "Sub" o "Functíon". Muchas veces, lo que tendremos que
hacer es sustituir "Private" por "public".

Por ejemplo, podemos tener estas declaraciones de procedimiento:

Sub miboton_AfterUpdate...

o

Private Sub miboton_AfterUpdate...

Lo que debemos hacer es cambiarlo por.

Public sub miboton_AfterUpdate...

y entonces, el procedimientos será accesible desde cualquier otro módulo,
siempre que el formulario en el que se encuentra esté abierto.
--
Saludos.

José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Blue
Post by Búho
Hola Blue...no tengo tiempo de probarlo, pero yo juraría, que si ese
procedimiento (o funcion) le declaras como *publico* dentro del subform,
creo(insisto, creo) que se podría llamar mas o menos así desde el Parent,
Me.Tusubformualrio.Form.TuProcedimiento
ó
Form_Tusubformualrio.TuProcedimiento
Ya me dirás si furrula o no....que tengo mis dudas sin probarlo.
--
Hola Búho, no, no funciona, ya lo habia probado pero me da error. Es que el
procedimiento no puedo quitarlo del subformulario, sino lo pondria en un
modulo como publico y a correr, pero no lo puedo tocar. Quizas a ti que eres
una maquina se te ocurra algo mejor, lo que me pasa es que en subform tengo
un cuadro de texto con la propiedad despues de actualziar asociado al
procedimiento que necesito ejecutar (lo que hace es un busqueda del articulo
y me da unos valores de existencias, etc) cuando desde el subform meto a
mano un codigo de atrtiuclo, al pulsar la tecla enter entra en
funcionamiento el procedimiento y funciona ok. el problema me viene cuando
abro el formulari ode busqueda (ahi fltro, ordeno etc) y seleciono un
articulo y pulso en pegar yo hago Forms("Facturas")![subDatos]![txART] =
lsExp.Column(0) y me pega el codigo del articulo en el subform pero aunque
yo pulse despues la tecla enter no me reconoce el evento despues de
actualizar y no me hace nada ??????? no se porque, por eso quiero que
despues de que pege el codigo del articulo ejecute ese procedimiento. No se,
a ver si a ti se te ocurre algo.
Quiero aprovechar Búho para darte las gracias por toda la ayuda que me has
prestado, ya que ha sido mucha, y muy buena, gracias por todo.
Saludos desde Soria
Post by Búho
Saludos desde Valladolid
Francisco Javier García Aguado
---
http://www.mvp-access.com/buho
http://www.mvp-access.com/foro
http://groups.msn.com/Access2000VisualBasic/
Eduardo Olaz
2004-10-17 14:01:06 UTC
Permalink
Efectivamente, al acceder a la propiedad Form de un subformulario, accedes
al subformulario como si fuera directamente un formulario normal. Esto te
permite acceder a todas las propiedades y métodos que declare el
subformulario como públicos.
Como en cualquier formulario normal si tienes una propiedad ó método en el
subformulario declarado como private, sólo podrás acceder a él mediante
algún procedimiento del dubfoemulario, declarado como público, y que lo
llame directamente.
Si quieres acceder desde fuera tendrás que declarar la propiedad ó el
procedimiento como público dentro del subformulario.

Saludos desde la calle Estafeta de Pamplona:

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
ALGARROBA = @
Blue
2004-10-17 17:22:38 UTC
Permalink
Ya lo he hecho, funciona, no sabia como hacerlo, gracias a TODOS uan vez
mas, este foro es una maravilla y con un nivel altisimo
Gracias de nuevo
Búho
2004-10-17 22:00:13 UTC
Permalink
Post by Chea
Como el Búho estará tomando unos vinos, te respondo yo.
Exactamente Hips!
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
a***@discussions.microsoft.com
2004-11-10 20:50:05 UTC
Permalink
-----Mensaje original-----
Hola a todos, tengo un formulario principal con los datos
principales de una
factura y un subformulario con los datos del cuerpo de la
factura. He hecho
una ventana de busqueda de articulos para poder buscarlos
mas facilmente de
tal forma que busco un articulo y pego el codigo en el
subformulario, lo que
seria el cuerpo de la factura. En este subformulario
tengo un procedimiento
que ejecuto cuando introduzco un nuevo codigo de
articulo, pero al pegarlo
dirctamente no lo hace y quisiera ejecutarlo a mano tal
que asi ["nombre
Formulario"]![nombre subformulario].[Nombre de funcion]
pero no me deja, ni
puedo hacerlo.
¿como lo hago?
Gracias
a ver si entendí, dices que cuando tipeas el código del
articulo se ejecuta una función de visual basic pero
cuando pegas el valor del código del articulo no se
ejecuta.
creo que deberias probar el evento de AfterUpadte del
cuadro de texto en donde colocas el código del articulo y
mandar a ejecutar el código de visual basic.

espero que me hallas entendido.
suerte

Daniel Suárez
Caracas - Venezuela
.
Miguel Salinas
2004-11-11 17:54:45 UTC
Permalink
creo que debes usar la funcion de un modulo
-----Mensaje original-----
Hola a todos, tengo un formulario principal con los datos
principales de una
factura y un subformulario con los datos del cuerpo de la
factura. He hecho
una ventana de busqueda de articulos para poder buscarlos
mas facilmente de
tal forma que busco un articulo y pego el codigo en el
subformulario, lo que
seria el cuerpo de la factura. En este subformulario
tengo un procedimiento
que ejecuto cuando introduzco un nuevo codigo de
articulo, pero al pegarlo
dirctamente no lo hace y quisiera ejecutarlo a mano tal
que asi ["nombre
Formulario"]![nombre subformulario].[Nombre de funcion]
pero no me deja, ni
puedo hacerlo.
¿como lo hago?
Gracias
a ver si entendí, dices que cuando tipeas el código del
articulo se ejecuta una función de visual basic pero
cuando pegas el valor del código del articulo no se
ejecuta.
creo que deberias probar el evento de AfterUpadte del
cuadro de texto en donde colocas el código del articulo y
mandar a ejecutar el código de visual basic.

espero que me hallas entendido.
suerte

Daniel Suárez
Caracas - Venezuela
.
Loading...