Imprimir página | Cerrar ventana

Actualizar Campo SI/NO

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86343
Fecha de impresión: 24/Abril/2024 a las 11:18


Tema: Actualizar Campo SI/NO
Publicado por: principiante_access
Asunto: Actualizar Campo SI/NO
Fecha de publicación: 11/Mayo/2022 a las 18:41
Hola, tengo dos tablas en una tengo un campo SI/NO.  Lo que quiero conseguir es que en función a otra tabla recorra una columna y si encuentra algún valor distinto de nulo me la deje a NO Y si esta a 0 me la ponga a SI. Gracias de antemano



Respuestas:
Publicado por: emiliove
Fecha de publicación: 11/Mayo/2022 a las 21:33
De seguro hay varias formas de hacerlo, pero creo que te falta información.

Saludos.


Publicado por: mounir
Fecha de publicación: 11/Mayo/2022 a las 21:57
Hola!

Con una consulta de actualización y el criterio que quieras (<> 0 ó = 0) haces una cosa o otra.

-------------
Un Saludo.


Publicado por: principiante_access
Fecha de publicación: 11/Mayo/2022 a las 22:25
Con una consulta de actualización no puedo hacerlo, porque si en la primera tabla la consulta me sale en vacio, ya que cumple que la diferencia en 0, no puedo enlazarlo y por lo tanto actualizar el check de validado a SI. No se me ocurre la forma de hacerlo...


Publicado por: mounir
Fecha de publicación: 12/Mayo/2022 a las 10:00
Hola!

No es complicado, deja el boton Sí/No como prederminado en Sí (No hay registro), en formulario con una función que calcula el registro en la tabla, si es cero sales y sí es <>0 ejecutas la consulta de actualización.

-------------
Un Saludo.


Publicado por: xavi
Fecha de publicación: 12/Mayo/2022 a las 11:47
Estoy con Emilio: un poco más de información (algun dato de ejemplo) ayudaría a ajustar la respuesta. 

Yo te podría dar dos o tres ideas pero dependerá de los datos y sus tipos.

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: principiante_access
Fecha de publicación: 17/Mayo/2022 a las 09:53
  tabla1
a 100 80 20
b 40 30 10
c 10 10 0
caso1
  tabla de validación
tabla1  campo si/No no  
  tabla1
a 100 100 0
b 40 40 0
c 10 10 0
caso2
  tabla de validación  
tabla2 campo si/No si  

Lo que quiero es hacer una consulta que recorra la tabla1 desde la tabla de validaciones. En caso de que la diferencia sea = a 0 me actualice el campo SI/NO a SI. En caso de que la tabla1 tengo una diferencia <> 0 me actualice el campo SI/NO a NO. No se como hacerlo a traves de un formulario. Tampoco que función hay que usar para recorrer la tabla. Si necesitas algun codigo en VBA. Estoy un poco perdido... 


Publicado por: xavi
Fecha de publicación: 17/Mayo/2022 a las 23:05
No se si lo acabo de pillar pero ahí va.

Suponiendo que tienes un campo en la tabla dónde se almacena la diferencia puedes realizar una suma de ese campo y evaluar el resultado. Si es igual a 0, marcas el registro

Puedes actualizar mediante recordset (no te escribo to do lo previo):
TablaValidacion!CampoValidacion = (DSum("CampoDiferencia", "Tabla1") = 0)

O mediante consulta de actualización:
CurrentDb.Execute "UPDATE Tabla1 SET CampoValidacion = " & (DSum("CampoDiferencia", "Tabla1") = 0)

En caso de no tener ese campo de diferencia podrias abrir un recordset sobre la tabla1 y recorrer la tabla. En cada registro evaluas la diferencia. Al primer registro que sea <> 0 ya puedes marcar el registro de validación como False y salir del proceso. Si finalizas todos los registros sin encontrar una diferencia <> 0  es cuando puedes marcar como True.
Esta técnica te vale tanto si tienes el campo de diferencias como si no lo tienes.

En cualquiera de los 2 casos se puede añadir condiciones si hay que acotar la cantidad de registros a evaluar.

Un saludo




-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: principiante_access
Fecha de publicación: 24/Mayo/2022 a las 12:39
Estoy un poco pez en esto. Estoy intentando crear un recordset pero no se muy bien como funciona la sintaxis. La lógica es dejar campo CUMPLE(SI(/NO) TRUE por defecto en la TABLA MAESTRO DE VALIDACIONES y después crear el siguiente código:

Option Compare Database
Option Explicit



Sub conecta_actual()

Dim miconexion As New Connection

Set miconexion = CurrentProject.Connection

Dim instruccion As String
Dim instruccion2 As String
instruccion = "SELECT * FROM CUADRE_IMPORTES_GENERALES_CDM"
instruccion2 = "SELECT * FROM MAESTRO_VALIDACIONES"
Dim mirecordset As New Recordset
mirecordset.Open instruccion, instruccion2, miconexion

Do Until mirecordset.EOF

If mirecordset.dif = 0 Then

mirecordset.MoveNext ELSE
 
Update INSTRUCCION2 SET cumple(si/no) = FALSE where indice=12

Loop

mirecordset.Close
Set mirecordset = Nothing
miconexion.Close
Set miconexion = Nothing

End Sub

Lo que paso no tengo mucha idea de como se implementar el código en VBA. Si alguien me puede ayudar. Muchas gracias de antemano.



Imprimir página | Cerrar ventana