Condición en un formulario de Access
Resuelto
faon
Mensajes publicados
16
Estado
Miembro
-
jluc -
jluc -
Buenas noches,
Soy nuevo en este sitio y tengo una pregunta que hacer
Estoy creando una base de datos y tengo un problema sobre un campo
Lo explico:
Tengo tres campos: Asignación, N° cuenta bancaria y N° cuenta bancaria(R)
Si tengo un número de cuenta bancaria que aparece en uno de los dos campos "cuenta", el campo Asignación debe permanecer vacío.
Si no tengo ninguna cuenta en uno de los dos campos "cuenta", debe devolverme el texto "Asignación" en el campo "Asignación".
Llevo días buscando y no encuentro la solución.
¿Quién puede ayudarme? Gracias de antemano
Soy nuevo en este sitio y tengo una pregunta que hacer
Estoy creando una base de datos y tengo un problema sobre un campo
Lo explico:
Tengo tres campos: Asignación, N° cuenta bancaria y N° cuenta bancaria(R)
Si tengo un número de cuenta bancaria que aparece en uno de los dos campos "cuenta", el campo Asignación debe permanecer vacío.
Si no tengo ninguna cuenta en uno de los dos campos "cuenta", debe devolverme el texto "Asignación" en el campo "Asignación".
Llevo días buscando y no encuentro la solución.
¿Quién puede ayudarme? Gracias de antemano
Configuración: OFFICE 2000 WINDOWS 97
9 respuestas
Bueno, no importa en mi opinión: es una cuestión de presentación.
En cambio, 100 campos para una tabla, es mucho...
No conozco en absoluto el tipo de tus datos. ¿Estás seguro de no confundir campos y registros (lo siento, no te lo tomes a mal mi pregunta...)?.
¿Por qué quieres exportar los resultados a Word?
Los informes no están mal en Access. No requieren manipulación una vez que han sido diseñados y permiten aplicar filtros o agrupamientos más fácilmente que los campos de formulario en Word.
En cambio, 100 campos para una tabla, es mucho...
No conozco en absoluto el tipo de tus datos. ¿Estás seguro de no confundir campos y registros (lo siento, no te lo tomes a mal mi pregunta...)?.
¿Por qué quieres exportar los resultados a Word?
Los informes no están mal en Access. No requieren manipulación una vez que han sido diseñados y permiten aplicar filtros o agrupamientos más fácilmente que los campos de formulario en Word.
Hola,
Sugerencia:
Une los 2 eventos "After Change" en la misma función.
Sub [N° cuenta bancaria]_AfterChange
Validación
End Sub
Sub [N° cuenta bancaria(R)]_AfterChange
Validación
End Sub
Function Validación
If (([N° cuenta bancaria] <> "") Or ([N° cuenta bancaria(R)] <> "")) Then
[Asignación].Value = ""
Else
[Asignación].Value = "Asignación"
End If
End Function
¿Esto cumple con tus expectativas?
Lupin
Lupin
Sugerencia:
Une los 2 eventos "After Change" en la misma función.
Sub [N° cuenta bancaria]_AfterChange
Validación
End Sub
Sub [N° cuenta bancaria(R)]_AfterChange
Validación
End Sub
Function Validación
If (([N° cuenta bancaria] <> "") Or ([N° cuenta bancaria(R)] <> "")) Then
[Asignación].Value = ""
Else
[Asignación].Value = "Asignación"
End If
End Function
¿Esto cumple con tus expectativas?
Lupin
Lupin
Hola Lupin,
como he notado que dominas VBA, ¿podrías decirme si es factible lo que estoy tratando de hacer?
Aquí está el enlace http://tinyurl.com/mk9f6
Gracias de antemano,
lami20j
como he notado que dominas VBA, ¿podrías decirme si es factible lo que estoy tratando de hacer?
Aquí está el enlace http://tinyurl.com/mk9f6
Gracias de antemano,
lami20j
Hola,
Lupin no parece estar aquí...
En mi opinión, debes agregar la referencia a la función propuesta en las propiedades de los campos en un formulario...
(Pero según tu publicación, no estoy seguro de que estés en eso).
Si es así, en modo creación, haces clic derecho en el campo en cuestión, eliges propiedades y luego, en la pestaña de evento, AfterUpdate, eliges "procedimiento de evento" y te encontrarás en la ventana de VB donde escribes el código propuesto.
Luego, debes escribir el módulo en el que se debe copiar la función propuesta.
Si estás en una tabla, no es posible... pero puedes escribir una consulta de actualización que "corregirá" tus datos de una vez.
Espero que te ayude
(lo siento, Lupin, por "haber pisado tus terrenos"...
Lupin no parece estar aquí...
En mi opinión, debes agregar la referencia a la función propuesta en las propiedades de los campos en un formulario...
(Pero según tu publicación, no estoy seguro de que estés en eso).
Si es así, en modo creación, haces clic derecho en el campo en cuestión, eliges propiedades y luego, en la pestaña de evento, AfterUpdate, eliges "procedimiento de evento" y te encontrarás en la ventana de VB donde escribes el código propuesto.
Luego, debes escribir el módulo en el que se debe copiar la función propuesta.
Si estás en una tabla, no es posible... pero puedes escribir una consulta de actualización que "corregirá" tus datos de una vez.
Espero que te ayude
(lo siento, Lupin, por "haber pisado tus terrenos"...
Hola a todos,
para Zenon, no hay culpa, estamos aquí para compartir,
y no pretendo conocerlo todo ni entenderlo todo. Al contrario, gracias por haber respondido.
Ofrezco la ayuda que puedo con el tiempo que tengo. No siempre lo tengo. Quizás a otros miembros de ccmm no les guste este tipo de intervención, pero por mi parte, el objetivo
siempre es ayudar a la persona que lo solicita y sin lugar a dudas [ la unión hace la fuerza ].
Dicho esto, veía exactamente las cosas como las has descrito.
Por supuesto, no conozco las habilidades de Faon en VBA.
Por ahora, no puedo ir más allá porque debo ponerme a trabajar. Si estas respuestas no son claras, seguiré el hilo para ayudarte, Faon.
p.d. Lami20j, voy a echar un vistazo a tu hilo.
@+
Lupin
para Zenon, no hay culpa, estamos aquí para compartir,
y no pretendo conocerlo todo ni entenderlo todo. Al contrario, gracias por haber respondido.
Ofrezco la ayuda que puedo con el tiempo que tengo. No siempre lo tengo. Quizás a otros miembros de ccmm no les guste este tipo de intervención, pero por mi parte, el objetivo
siempre es ayudar a la persona que lo solicita y sin lugar a dudas [ la unión hace la fuerza ].
Dicho esto, veía exactamente las cosas como las has descrito.
Por supuesto, no conozco las habilidades de Faon en VBA.
Por ahora, no puedo ir más allá porque debo ponerme a trabajar. Si estas respuestas no son claras, seguiré el hilo para ayudarte, Faon.
p.d. Lami20j, voy a echar un vistazo a tu hilo.
@+
Lupin
Gracias por tu correo y es muy amable de tu parte, sobre todo porque las personas a las que me dirigí antes de inscribirme en este sitio eran del tipo "yo sé, pero tú hazlo solo".
En cuanto a Access, asistí al curso pero mi formación se basó en lo esencial (tablas, formularios, consultas, etc...) pero en lo que respecta a VBA, lo estoy descubriendo por mí mismo a medida que intento crear aplicaciones.
Y como me gusta Access, quiero avanzar más.
Gracias de nuevo.
En cuanto a Access, asistí al curso pero mi formación se basó en lo esencial (tablas, formularios, consultas, etc...) pero en lo que respecta a VBA, lo estoy descubriendo por mí mismo a medida que intento crear aplicaciones.
Y como me gusta Access, quiero avanzar más.
Gracias de nuevo.
Hola,
Para hacerlo simple,
Primer Piso
Una TablaA
Una ConsultaA que engloba la tabla A
Un Formulario que apunta a la consulta
Segundo piso Algunos controles de opción múltiple en uno, dos o tres subformularios
Algunas líneas de VBA
Como explicó Zenon, en modo diseño hay una ventana que contiene las propiedades del objeto, pestaña Evento, deberías encontrar el método "After Update", en español se diría "Después de Actualizar".
Deberías aterrizar en el código de las rutinas que te designé en mi ejemplo.
Lupin
Para hacerlo simple,
Primer Piso
Una TablaA
Una ConsultaA que engloba la tabla A
Un Formulario que apunta a la consulta
Segundo piso
Algunas líneas de VBA
Como explicó Zenon, en modo diseño hay una ventana que contiene las propiedades del objeto, pestaña Evento, deberías encontrar el método "After Update", en español se diría "Después de Actualizar".
Deberías aterrizar en el código de las rutinas que te designé en mi ejemplo.
Lupin
Hola y mil disculpas, he dejado caer esto unos días, desanimado.
Solo me queda esta porquería de campo "N° cuenta financiera", "N° cuenta financiera(R)" y "Asigne" de mi formulario para terminar mi aplicación y estoy perdido.
En los 2 primeros mencionados, he retomado la macro en el procedimiento de evento "After Update" del sitio www.fundp.ac.be/jmlambert/vba/Notes1-Exemples-2.html. Aunque introduzca un n° de cuenta correcto, me devuelve cada vez que la cuenta bancaria es incorrecta.
Por lo tanto, no sé cómo escribir un procedimiento de evento ni una función para mi campo de asignación.
Soy un inútil en vba, los consejos bien fundamentados serían muy bienvenidos.
Gracias de antemano.
Solo me queda esta porquería de campo "N° cuenta financiera", "N° cuenta financiera(R)" y "Asigne" de mi formulario para terminar mi aplicación y estoy perdido.
En los 2 primeros mencionados, he retomado la macro en el procedimiento de evento "After Update" del sitio www.fundp.ac.be/jmlambert/vba/Notes1-Exemples-2.html. Aunque introduzca un n° de cuenta correcto, me devuelve cada vez que la cuenta bancaria es incorrecta.
Por lo tanto, no sé cómo escribir un procedimiento de evento ni una función para mi campo de asignación.
Soy un inútil en vba, los consejos bien fundamentados serían muy bienvenidos.
Gracias de antemano.
Buenas noches,
No entiendo dónde está el problema.
Con campos de texto independientes, la técnica propuesta por Lupin funciona perfectamente... (no es imprescindible escribir un módulo)
¿Lo has probado en un formulario independiente?
Quizás el problema esté en la actualización del campo "asignación". Si muestras el resultado en la sección detalle de un formulario y se trata de un campo de texto independiente, todos los registros tomarán el mismo valor cuando ejecutes el código en uno de ellos, ya que este control independiente no se refiere a datos de la tabla subyacente. ¿Ese es el problema?
Para evitar este tipo de problemas, lo más sencillo sería agregar un campo "asignación" a la tabla y ejecutar una consulta de actualización para todos los registros existentes. Puedo explicarte cómo hacerlo si te interesa...
Luego, al añadir o actualizar registros, el código propuesto por Lupin tomará el control sin problemas.
Si no quieres "contaminar" tu tabla con datos redundantes, puedes basar el formulario en una consulta y crear temporalmente el campo asignación y luego ejecutar una nueva consulta que lo actualice.
También puedes hacer un bucle sobre todos los registros para definir el valor reutilizando parte del código de Lupin...
y creando temporalmente el control.
En fin, no faltan las soluciones...
¿Qué opinas? Es difícil ayudarte sin conocer la estructura de tus datos.
No entiendo dónde está el problema.
Con campos de texto independientes, la técnica propuesta por Lupin funciona perfectamente... (no es imprescindible escribir un módulo)
¿Lo has probado en un formulario independiente?
Quizás el problema esté en la actualización del campo "asignación". Si muestras el resultado en la sección detalle de un formulario y se trata de un campo de texto independiente, todos los registros tomarán el mismo valor cuando ejecutes el código en uno de ellos, ya que este control independiente no se refiere a datos de la tabla subyacente. ¿Ese es el problema?
Para evitar este tipo de problemas, lo más sencillo sería agregar un campo "asignación" a la tabla y ejecutar una consulta de actualización para todos los registros existentes. Puedo explicarte cómo hacerlo si te interesa...
Luego, al añadir o actualizar registros, el código propuesto por Lupin tomará el control sin problemas.
Si no quieres "contaminar" tu tabla con datos redundantes, puedes basar el formulario en una consulta y crear temporalmente el campo asignación y luego ejecutar una nueva consulta que lo actualice.
También puedes hacer un bucle sobre todos los registros para definir el valor reutilizando parte del código de Lupin...
y creando temporalmente el control.
En fin, no faltan las soluciones...
¿Qué opinas? Es difícil ayudarte sin conocer la estructura de tus datos.
Buenas noches Zenon,
He encontrado lo que necesitaba en Excel (Fin.Mois), funciona en Excel pero no hay manera de activar la función en Access, me devuelve #Nombre?#. Utilidad activada. ¿Qué hago? Gracias por tu respuesta. Me gustaría, si es posible, crearla como función.
He encontrado lo que necesitaba en Excel (Fin.Mois), funciona en Excel pero no hay manera de activar la función en Access, me devuelve #Nombre?#. Utilidad activada. ¿Qué hago? Gracias por tu respuesta. Me gustaría, si es posible, crearla como función.
Raro, no funciona en mi computadora tampoco, incluso después de cargar la DLL "o???" de la que habla la ayuda... y tampoco funciona en Excel... ¿dónde está Bill??
Escribí una 'pequeña función:
Private Sub ...
Dim X As Date
For X = Date To X = Date - 31 Step -1
If Month(X) = Month(Date) - 1 Then
ChampIndépendantADéfinir = X
Exit For
End If
Next X
End Sub
En mi computadora, funciona.
Escribí una 'pequeña función:
Private Sub ...
Dim X As Date
For X = Date To X = Date - 31 Step -1
If Month(X) = Month(Date) - 1 Then
ChampIndépendantADéfinir = X
Exit For
End If
Next X
End Sub
En mi computadora, funciona.
Hola a todos,
En mi formulario, tengo un campo en el que debo ingresar un código, por ejemplo, 1000, y cuando se ingresa este código, me gustaría que en otro campo aparezca automáticamente el término correspondiente a ese código.
Tengo una tabla con ambos campos en cuestión. Hay una columna con el código y otra con las correspondencias, por ejemplo, 1000 corresponde a vivienda, 8180 a cabaña, etc.
No sé nada de Visual Basic...
¿Quién puede ayudarme?
Muchas gracias de antemano.
En mi formulario, tengo un campo en el que debo ingresar un código, por ejemplo, 1000, y cuando se ingresa este código, me gustaría que en otro campo aparezca automáticamente el término correspondiente a ese código.
Tengo una tabla con ambos campos en cuestión. Hay una columna con el código y otra con las correspondencias, por ejemplo, 1000 corresponde a vivienda, 8180 a cabaña, etc.
No sé nada de Visual Basic...
¿Quién puede ayudarme?
Muchas gracias de antemano.
Bonjour,
Escribir un filtro en VBA para la apertura de un formulario está bien.
Por otro lado, no sé cómo decirle que mantenga este filtro todo el tiempo que esté en el formulario y en el que haga otros filtros.
Me explico con un ejemplo:
Abro un formulario f_Client ordenado por la ciudad de origen del cliente.
En este formulario quiero hacer "sub-filtros" a través de listas desplegables (edad, nombre...)
Hasta aquí no hay problema, los filtros se realizan bien.
Excepto que si decido desfiltrar mis sub-filtros, desfiltra todo y me muestra la totalidad de los clientes de todas las ciudades y ya no solo aquellos que fueron seleccionados al principio.
¿Cómo puedo hacer para que un filtro inicial sea inalterable mientras esté en el formulario?
Gracias de antemano por sus respuestas.
Seb
Escribir un filtro en VBA para la apertura de un formulario está bien.
Por otro lado, no sé cómo decirle que mantenga este filtro todo el tiempo que esté en el formulario y en el que haga otros filtros.
Me explico con un ejemplo:
Abro un formulario f_Client ordenado por la ciudad de origen del cliente.
En este formulario quiero hacer "sub-filtros" a través de listas desplegables (edad, nombre...)
Hasta aquí no hay problema, los filtros se realizan bien.
Excepto que si decido desfiltrar mis sub-filtros, desfiltra todo y me muestra la totalidad de los clientes de todas las ciudades y ya no solo aquellos que fueron seleccionados al principio.
¿Cómo puedo hacer para que un filtro inicial sea inalterable mientras esté en el formulario?
Gracias de antemano por sus respuestas.
Seb
No, no te preocupes, no me lo tomo a mal, sobre todo de parte de alguien que sabe mucho más que yo sobre el tema.
Sí, tengo 100 campos en una única tabla. Debería decir que tenía, porque como era demasiado pesado, empecé de nuevo (es practicando que se vuelve experto).
Mi proyecto se basa en siete tablas y un formulario basado en consultas.
Las personas que tengo a mi cargo reciben a personas con discapacidad y deben completar un formulario completo. Dicho formulario sirve de punto de partida para completar un expediente lleno de documentos, por eso quería fusionarlo con un archivo de texto de Word. Seguro que tienes razón, no he intentado hacerlo con un informe.
¿Existe una función que calcule el primer día del mes anterior?
Gracias por tu amabilidad al seguirme paso a paso.
fecha de la factura 10/05/2004; fecha del vehículo antiguo 25/08/2002
de ahí revisión del 01/08/2002 al 31/07/2005
retiro 10/05/2004 (=fecha de la factura)
período a revisar del 01/06/2004 al 31/07/2005, es decir, 14 meses
el problema se encuentra en la fecha del 01/08/2004, todas las demás fórmulas las he encontrado.
Todas las fechas son campos.
Espero haberme explicado correctamente.