Pasar datos de un campo a otro con condición si

Tengo una tabla en la cual los campos A (Series) y B (Series ficticia)

Quiero ver si puedo crear un tercer campo C donde la cual mediante una condición me de:

1.- Si campo A tiene 20 dígitos y campo B tiene 15 dígitos = campo C copiar el campo B de 15 dígitos

2.- Si campo A tiene 15 dígitos y campo B tiene 20 dígitos = campo C copiar el campo A de 15 dígitos

3.- Si campo A tiene 15 dígitos y campo B es Nulo = Campo C copiar el campo A de 15 dígitos

4.- Si Campo A es Nulo y campo B tiene 15 Dígitos = Campo C copiar el campo B de 15 dígitos.

Aquí es parecido pero en el caso que no cuente con los 15 dígitos en ningún campo.

5.- Si campo A es de 20 dígitos y campo B Nulo = Copiar campo A de 20 dígitos.

6.- Si campo A es Nulo y Campo B es de 20 dígitos = Copiar campo B de 20 dígitos.

Es un poco confuso pero quiero pasarlo ya que lo tengo en access y son de más de 2 millones de registros y el excel no lo soporta.

2 Respuestas

Respuesta
1

Le presento esta alternativa.

Utilizo 2 funciones a nivel de formulario, la primera me devuelve la cadena con base en las condiciones y la segunda recorro la tabla con DAO para actualizar el campoC..

CÓDIGO DEL FORMULARIO

Seguro hay más alternativas.

Respuesta
1

En tablas no puedes hacerlo, ya que no tienen código. Pero en código sí. Para no complicarte la existencia, vamos a hacerlo paso a paso. Por ejemplo, puedes usar, en algún evento de un formulario, por ejemplo, en el evento Al hacer clic de un botón

Docmd.setwarnings false

docmd.runsql"update Nombredetabla set c=b where len([a])=20 and len([b])=15"

Esto es lo que hace, es poner en el campo C el valor del campo B en aquellos registros en que la longitud del campo A sea 20 y la del campo B sea 15

En el caso de los nulos

Docmd. Setwarnings

domcd.runsql"update nombretabla set c=b where len([b]=15 and a is null"

Pone en C el valor de B en aquellos campos en que la longitud de B sea 15 y el campo A sea nulo

Y así, puedes hacer las combinaciones que quieras.

Si quisieras hacerlo "todo de golpe" deberías usar una instrucción Select Case, o una instrucción If. Si lo quieres así, dilo, y te la pongo.

También podrías hacerlo con una consulta de actualización, pero personalmente creo que es más complicado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas