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
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.....
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
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.
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.
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.
- Compartir respuesta