Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Access y VBA

Estas en el tema de Access y VBA en el foro de Visual Basic clásico en Foros del Web. Hola foreros Me toca hacer una aplicación empotrada en Microsoft Access y para conseguir según que comportamientos tengo que hacer uso de Visual Basic for ...
  #1 (permalink)  
Antiguo 14/04/2005, 17:03
 
Fecha de Ingreso: mayo-2003
Ubicación: España
Mensajes: 44
Antigüedad: 21 años
Puntos: 2
Exclamación Access y VBA

Hola foreros

Me toca hacer una aplicación empotrada en Microsoft Access y para conseguir según que comportamientos tengo que hacer uso de Visual Basic for Aplications para Access (no consigo tragarlo. Es tan... "raro")

Llevo peleándome con esta peligrosa combinación (Access + VBA) desde hace unas semanas pero, lo dicho, no logro acostumbrarme o conseguir hacer cosas que deberían ser obvias.

Así que recurro a vuestro rescate, esperando que alguien con experiencia en esta clase de desarrollos me pueda guiar un poco. Tengo dos dudas principales (muy sencillas, imagino):
  1. Tengo tres Etiquetas (Label) en un formulario. En el evento _Load() del mismo quiero hacer, simplemente, cambiar la propiedad del Título (Caption) de las tres. De este modo:
    Código:
    Private Sub Form_Load()
        Me.etiqueta1.Caption = "Soy la etiqueta 1"
        Me.etiqueta2.Caption = "Soy la etiqueta 2"
        Me.etiqueta3.Caption = "Soy la etiqueta 3"
    End Sub
    
    Pero no funciona. Me devuelve el error 438: "El objeto no admite esta propiedad o método"

    Lo curioso es que si solo modifico el captio del primer Label (los otros dos los comento) entonces si me lo cambia... He intentado encontrar información pero nada, y ya no sé que hacer... :(
  2. El otro problema es con respecto a la posibilidad de modificar el contenido de la propiedad caption de los controles que NO tengan el foco. Es decir, si en un formulario tengo dos controles de Texto A y B, el foco esta en A y quiero modificar el texto de B, entonces me da un error diciendo que no tiene el foco (por lo que antes de cambiar el texto de B hago un "B.SetFocus" y claro, se hace muy muy incómodo (y muy sucio) cuando tienes varios controles de Texto más...

¿Podría alguien ayudarme? Ufff, es que tengo trabajo para varios meses con esto y veo que como siga así adelanto muy despacio. Luego no he logrado encontrar algún manual en Internet sobre VBA para Access. Todo lo que encuentro son manuales de manejo de Access pero sin meterse en nada de programación. Estoy convencido de que algo debe haber, si conoces algún foro específico o página donde haya información de Access + VB por favor, ¡me vendría GENIAL!

Muchas gracias y perdón por las molestias.
Cuídense
__________________
cgomez :ojotes: miportal.es
  #2 (permalink)  
Antiguo 14/04/2005, 17:31
 
Fecha de Ingreso: mayo-2003
Ubicación: España
Mensajes: 44
Antigüedad: 21 años
Puntos: 2
Hola de nuevo.

He conseguido resolver la primera duda (aunque no me pregunten cómo porque... en fin, suena estúpido pero parece que "de repente ha funcionado")

Y he logrado encontrar un manual en aquí. Aunque parece tan básico que... no sé si me será de ayuda (Sigo buscando documentación y recursos sobre VBA, por favor si conoces algo coméntamelo :))

¡Saludos!
__________________
cgomez :ojotes: miportal.es
  #3 (permalink)  
Antiguo 14/04/2005, 17:41
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Con la primera duda que tenias no necesariamente tenias que poner Me.extiqueta1.caption ya que si vas a hacer referencia a un control del formulario que se esta ejecuntando o con el foco en ese momento le haces referencia a este o sea etiqueta1.caption="..." aunque de esa forma que pusiste funciona igualmente...

con la segunda la propiedad caption en textbox no existe es text y si puedes cambiarlo sin necesidad de que tenga el foco...
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #4 (permalink)  
Antiguo 15/04/2005, 03:53
 
Fecha de Ingreso: mayo-2003
Ubicación: España
Mensajes: 44
Antigüedad: 21 años
Puntos: 2
Hola vbx3m. Perdona, creo que con lo del cuadro de texto me expresé mal... quise decir la propiedad Text. Imáginate que tengo un formulario con un cuadro de texto con nombre "usr" con la propiedad .Text vacía. En tiempo de ejecución le coloco texto ("hola", por ejemplo) y con el evento _Click() de un botón "cmdOk" quiero mostrar con MsgBox el contenido de usr.Text

Código:
Private Sub cmdOk_Click()
    MsgBox usr.Text
End Sub
Pues bien, al lanzar ese evento me da, concretamente, el error: "No se puede hacer referencia a una propiedad o a un método para un control a menos que el control tenga el enfoque"

Pero si arriba de ese MsgBox le añadimos un usr.SetFocus para darle el enfoque al control usr

Código:
Private Sub cmdOk_Click()
    usr.SetFocus
    MsgBox usr.Text
End Sub
Entonces no da problemas. Jeje, quería decir eso en mi anterior mensaje. El problema es que voy a necesitar manejar multitud de valores de propiedades Caption y/o Text y no siempre con los controles que tengan el foco (de hecho, me da que rara vez pasará eso)

¿Es posible resolver ésto sin ir pasando el foco de control en control?

Muchas gracias en serio, un saludo!
__________________
cgomez :ojotes: miportal.es
  #5 (permalink)  
Antiguo 15/04/2005, 04:17
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
En verdad que lo que me cuentas es extraño ... No necesariamente debes pasarle el foco a un control para asignarle valores o hacer referencia a el... Hasta con el text desahibiltado puedes asignarle valores... Y tambien puedes asignar valores a otros controles de otros forms que no esten activados o con el foco... Es extraño en verdad...
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #6 (permalink)  
Antiguo 16/04/2005, 01:22
 
Fecha de Ingreso: mayo-2003
Ubicación: España
Mensajes: 44
Antigüedad: 21 años
Puntos: 2
Uff! nada, no consigo dar con la solución. Yo también pienso que es bastante extraño pero lo cierto es que me viene sucediendo en las versiones 2000 y 2003 de MS. Access con lo que debe ser un comportamiento "normal" del propio Access

Me parece extraño porque aun no teniendo el foco, el formulario en donde está el cuadro de texto sí está en primer plano (de hecho solo es un formulario, por lo que forzosamente debe ser el que se está utilizando).

Bueno, seguiré investigando a ver qué se puede hacer (y que no sea inundar el código con .SetFocus por todos lados jejeje). vbx3m gracias por tus respuestas.

Un saludo
__________________
cgomez :ojotes: miportal.es
  #7 (permalink)  
Antiguo 28/05/2008, 11:17
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Respuesta: Access y VBA

Hola, bueno igual el tema es un poco antiguo, pero quise dejar mi respuesta por asi alguien lo llega a necesitar.
Tenía el mismo problema, me pedía que le diera foco al textbox antes de modificar su propiedad text, y claro como tu mencionas, era de locos enfocar cada vez que quería modificar porque mis lineas de codigo se duplicaban.

Pero encontré la solución, en vez de usar la propiedad TEXT, se debe usar la propiedad VALUE, así no pide que enfoquemos al textbox en cuestión

Textbox1.value



Saludos,

Hugo.
  #8 (permalink)  
Antiguo 19/01/2013, 02:55
Avatar de sara_lissette  
Fecha de Ingreso: mayo-2011
Ubicación: San Cristóbal de La Laguna, Spain
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Respuesta: Access y VBA

Sé que este mensaje es antiguo pero como he llegado aquí buscando sobre cómo saber si un control tiene el foco, puede que la respuesta le sirva a alguien que entre por casualidad.
En VBA, la propiedad Text de un Textbox se puede modificar sólo cuando el control tiene el foco, sin embargo, la propiedad Value, es modificable cuando no se tiene el foco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:44.