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

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