Al cargar un formulario la caption de una label tome como título los contenidos de un registro

Como puedo hacer para que al cargar un formulario ASCESS

Apraezca una etiqueta con su rpopiedad CAPTION con el contenido de los campos de un registro de una tabla.

No se si sera posible espero respuestas y agradeciendo.

1 respuesta

Respuesta
2

Si te refieres a esto

Sólo tienes que poner en el evento Al activar registro

Private Sub Form_Current()
Etiqueta34.Caption = NombreCliente & ", " & CargoContacto & ", " & Ciudad & ", " & Pais
End Sub

En caso de que los valores estuvieran en otra tabla tendrás que usar la función dlookup, por ejemplo

etiqueta34.caption=Dlookup("amigo","tblamigos","...y aquí el criterio que defina un registro en particular...)& ", "& dlookup.....

¡Gracias! Gracias Icue lo probare

Hola Icue una pregunta y perdona mi ignorancia : No hay que abrir la tabla antaes ?

Hola Icue Lo probé y tengo que estar haciendo algo mal. Paso a explicarte mejor: tengo una base de datos que al abrir carga un formulario inicial con botones que ejacutan tablas y consultas, lo que quiero hacer es que al cargarse ese formulario aparezcan dos etiquetas y en su caption ponga lo que hay dentro de la tabla cajones que tiene dos campos uno Nºcajon y el tor Modelo . experto que esta explicación sea buena ya que lo anterior lo probé y no va. Gracias

Si la tabla cajones sólo tuviera un registro no tendrías problemas. Pero si tuviera más de un registro siempre te mostraría los valores del primero. En este último caso yo te aconsejaría que usaras un combinado o un cuadro de lista. Por ejemplo, supongamos que tengo una tabla Cajones

Cuando abro el formulario de inicio

La instrucción del evento Al cargar(que como supongo que no tiene botones de desplazamiento, equivale a Al activar el registro)

Private Sub Form_Load()
Etiqueta0.Caption = DLookup("modelo", "cajones") & ", " & DLookup("uso", "cajones")
End Sub

Pero supongamos que la tabla tuviera más registros

Al abrirlo, el resultado sería el mismo

Ya que si no le dices nada en contra, busca siempre en el primer registro, pero si en la instrucción, en criterios, le dices que busque en un registro en particular, por ejemplo

Private Sub Form_Load()
Etiqueta0.Caption = DLookup("modelo", "cajones", "idcajón=2") & ", " & DLookup("uso", "cajones", "Idcajón=2")
End Sub

Al abrirlo

Te decía que si fueran varios, quizá, no lo sé, te convendría un cuadro de lista, por ejemplo

¡Gracias!  Creo que esto lo que busco por que necesito 15 registros , no me importa poner 15 etiquetas. Una pregunta que tengo dudas aunque lo veo pero si no te importa confirmame : donde pones uso ( es el campo y cajones es la tabla) y de esa forma toma su contenido ? es así ?

La instrucción Dlookup funciona, permíteme el ejemplo aunque parezca burdo como si yo supiera tu DNI. Puedo decir, búscame en el Registro de la Propiedad cuantas viviendas tiene la persona con DNI xxxxxxx. Búscame en la tabla Tráfico cuantos vehículos tiene ese mismo DNI a su nombre. Es decir, puedo individualizar la búsqueda.

En el caso que comentas, se podría poner que te reuniera los 15 registros. Por ejemplo, supongamos que tengo la tabla

Sólo voy a usar los nombres(soy de un vago). Si abro el formulario

El código en este caso, ya te digo que no he puesto los países pero sería sencillísimo

Private Sub Form_Load()
Dim I As Byte, s As String
For I = 1 To 8
s = "" & s & "" & ", " & DLookup("nombrecliente", "usar", "idcliente=" & I & "")
Next
Etiqueta3.Caption = Right("" & s & "", Len("" & s & "") - 1)
End Sub

En tu caso sería 1 to 15

¡Gracias! Lo probare y te mandare los resultados pero me decanto porvel primer ejemplo aun que me parecevque tendré que pasarlos por el idcajon y así no tendré que hacer 15 tablas. Agradecidísimo a tu respuesta te comentare.

Por cierto, si lo quisieras así

Solo tendrías que poner el código como

Private Sub Form_Load()
Dim I As Byte, s As String
For I = 1 To 8
s = "" & s & "" + vbCrLf + DLookup("nombrecliente", "usar", "idcliente=" & I & "") & ",   " & DLookup("pais", "usar", "idcliente=" & I & "")
Next
Etiqueta3.Caption = Right("" & s & "", Len("" & s & "") - 1)
End Sub

No había leído tu última pregunta. No necesitas hacer 15 tablas, sería un disparate(perdón). Sólo tienes que decirle que "recorra" los registros de una única tabla.

¡Gracias! Estoy de acuerdo que hacer 15 tablas es un disparate paso a decirte lo que busco ( no se como oasarte las imagenes pero paso a describirlo: e la base al cargarse abre un formulario inicial que presenta varios botones que ejecutan tablas o consultas, y lo que quiero es poner 15 etiquetas que en su propiedad caption tome los valores que contienen los campos en una tabla. Y la tabla con nombre cajones tiene estos campos NCAJON, FECHA, PROPIETARIO, MODELO los datos de estos campos deben aparecer en csda etiqueta cada registro en cada uno. Perdona por li extenso de la explicación. 

Primero, para subir cualquier foto, cuando vayas a hacer la pregunta pulsa

Se abrirá un explorador para que la localices.

Por otro lado si tengo una tabla

Tu tendrías que poner los 15.

En vista diseño del formulario pongo 7 etiquetas a las que llamo Etiqueta1, etiqueta2,... Cuando lo abro, al no saber como lo quieres, ni lo que quieres poner tengo que suponer

El código es

Private Sub Form_Load()
Dim i As Integer
Dim lbl As Control
For i = 1 To 7
Set lbl = Controls("Etiqueta" & i)
lbl.Caption = DLookup("ncajon", "cajones", "ncajon=" & i & "") & ",   " & DLookup("fecha", "cajones", "ncajon=" & i & "") & ",   " & DLookup("propietario", "cajones", "ncajon=" & i & "") & ",   " & DLookup("modelo", "cajones", "ncajon=" & i & "")
Next i
End Sub

¡Gracias! Gracias creo que es eso lo probare.

Hola Icue he probado el código y me da el error de tipos no coinciden, te paso el código y mira si ves por que.

Este es el formulario y en la propiedad form_load() he puesto este código

Private Sub Form_Load()
Dim i As Integer
Dim lbl As Control
For i = 1 To 15
Set lbl = Controls("Etiqueta" & i)
lbl.Caption DLookup("NºCajon", "tablacajones", "NºCajon=" & i & "") & ", " & DLookup("Fecha_Entrada", "tablacajones", "NºCajon=" & i & "") & ", " & DLookup("NºDeReparacion", "tablacajones", "NºCajon=" & i & "") & ", " & DLookup("Propietario", "tablacajones", "NºCajon=" & i & "") & ", " & DLookup("Modelo", "tablacajones", "NºCajon=" & i & "")
Next i
End Sub

y me contesta esto

Espero no sea molestar pero estoy perdido. Gracias de antemano.

y esta es la tabla

los campos son texto.

Icue SOLUCIONADA el error estaba en que en "Nºcajon=" & i & ahí tiene que ir el campo id y como yo tengo un campo Nºcajon que no es el id, luego en su lugar pongo el ID y soluconado, ahora tengo que poner botón que elimine el registor seleccionado creo que lo tengo, pero agradecería una sugerencia.

Agradecidísimo por la ayuda.

Te mando la imagen solucionada usando TU CÓDIGO

Supongo que te refieres a que te elimine de la tabla cajones el registro que corresponda con la etiqueta. Puedes hacerlo de muchas formas, pero como te dije antes, al no saber exactamente como lo quieres "eliminar" y que quieres eliminar, si el registro o lo simplemente lo que pone en la etiqueta. Si tengo la tabla

Y el formulario

Me voy a cargar a la pobre Ana que no me ha hecho nada. Hago doble clic( es para tratar de evitar el error de que se le dé un sólo clic sin querer, el doble clic ya es con premeditación y alevosía)

y en la tabla

He "liquidado" a la pobre Ana, pero te juro que fué un accidente.

El código del evento Al hacer doble clic en esa etiqueta es

Private Sub Etiqueta2_DblClick(Cancel As Integer)
DoCmd.SetWarnings False
DoCmd.RunSQL "delete * from usar where idcliente=" & Right(Etiqueta2.Name, 1) & ""
Etiqueta2.Caption = ""
End Sub

Lo de Docmd.setwarnings es para que no salga la dichosa ventanita de "Va a eliminar...."

Ahora he visto tu imagen, y me vas a perdonar, pero sigo creyendo que es más cómodo e infinitamente más fácil poner un cuadro de lista, la programación es para trabajar lo menos posible, por eso se nos da bien a los vagos. Luego, para eliminar sólo tendrías que poner en el evento Después de actualizar del cuadro de lista(al que llamaré Lista0), algo así como

docmd.runsql"delete * from cajones where propietario like ""*"" & '" & me.lista0 & "' & ""*"""

Me. Requery

Así, si en la "cadena" apareciera Pepe, te eliminaría el registro de la tabla en que el campo propietario fuera Pepe. Quien dice propietario dice Ncajon, etc. y lo de Me. Requery es para que el cuadro "reconsulte" su origen.

¡Gracias! Estoy con tigo es mejor el cuadro de lista, pero el programa es para mi hermano y es maniático lo quier así quiere visión siempre y no tener que desplegar o ejecutra nada, y con respecto a la eliminación e creado una consulta de actualización para no tener que perder ni el id ni el Nºcajón tiene que ser siempre esos 15 sólo cambiar los datos si se entrega una reparación dejar el mismo cajón con el texto "Vacio", la consulta de actualización lo realiza.

Icue una pregunta más ( perdona el abuso) al crear un botón para dar de alta los valores de una determinada etiqueta EJ: etiqueta 10 osea idnetiqueta10 y nºcajon10 lo hago ejecutando en el evento click del botón y ejecutando macro con el asistente ( Y funciona ) pero me gustaría cerrar la ventana al terminar la entrada automáticamente, he probado poniendo después de ejecutar la consulta de alta he puesto opción cerrar ventana, ¿pero cierra sin esperar a la entrada . Que me sugieres? Y perdona el abuso.

Fernando, no he entendido nada. ¿Un botón para dar de alta un cajón? Para darlo de alta está la tabla Cajones. Para eso con esa tabla se crea un formulario continuo y en el botón ese se pone algo como

Docmd. Openform"cajones",,,, acformadd, acdialog

Y ya a partir de "pero me gustaría cerrar..¿que ventana?¿Ejecutar una consulta?... ya me he perdido definitivamente.

¡Gracias! ¡Gracias! Voy a intentar explicsrme mejor: el tema es de cambiar solo los datos fecha,nreparacion,cliente,y modelo esto lo hago pulsando el noton cmdbaja en cajones ejecutanfo una consulta decactualizacion y funciona bien ya que cambia los datos de esos campos por datos (campo vacio) y al ejecutarlo ese texto es el que aparece en la etiqueta ( cajon vacio ) , y luego cuando ese cajón se vuelve a llenar lo doy de alta con un cmd ( llamado : alta en cajón ) el cual mediante ek ssistente abre la consulta alta que pregunts  [QUE NUMERO DE CAJÓN ?] Se le da el numero y abre la consulta para introducir los datos por teclado pero una vez introducidos para que se actualice la etiqueta tengo que pulsar otro boton que cietre y abra el menu inicio , eso no me gusta pero no se como hacerlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas