Consulta Sencilla MS Access

Hola Experto!!
Es algo muy sencillo, que función ocupo para separar un campo? Es decir, los datos contenidos en el campo1 son "A,B,C,D,E,F,G=10000", deseo que en otros dos campo (que ya tengo definidos y vacíos) aparezca: Campo2="A,B,C,D,E,F,G" y Campo3="10000". Es seguro que el signo "=" se ubique en diferentes posiciones, siendo para los primeros el lugar 12, después el 13 y hasta el 14 probablemente. Intente utilizar la función Left pero como no es fijo el símbolo "=" al definir la posición de este, cuando cambia de lugar me trae otro carácter.

La función debe encontrar el signo de "=" y pegar todo lo anterior en el Campo2 y todo lo posterior al signo en el Campo3.

Agradezco enorme tu respuesta!!!

1 respuesta

Respuesta
1

Tendrás que usar este código, que tendrás que colocar en el evento que te venga bien a ti (puede ser en Después de actualizar o Al perder el enfoque de Campo1, en Al entrar en
Campo2...) Yo lo pondría, alguno de los dos que te comento de Campo1:

'Declaramos las variables
Dim longitud As Integer
Dim posicion As Integer
Dim antes As Variant
Dim despues As Variant
' Nos da la longitud total de la cadena
longitud = Len(Me.Campo1)
' Nos busca la posición del signo igual
posicion = InStr(1, Me.Campo1, "=")
'Extrae los caracteres antes del "="
antes = Left(Me.Campo1, intentar - 1)
'Extrae los caracteres despues del "="
despues = Right(Me.Campo1, longitud - posicion)
'Rellena los campos con sus valores
Me.Campo2 = antes
Me.Campo3 = despues

Hola!!

Mil Gracias por tu respuesta.......y quisiera solicitar una vez mas tu ayuda.

Te puedo enviar por email (me puedes dar tu dirección) un ejemplo de la base de datos y me ayudarías con pegar el código en la misma? No he podido hacerlo yo.

Nuevamente gracias!!

Sube tu BD a www.filebig.net y pega aqui el enlace de descarga (el primero).

Tan pronto me pueda conectar desde un pc, te la mando.

Listo!!!

http://www.filebig.net/files/iip7nVeJby

Gracias y Saludos!!

Aquí tienes: http://www.filebig.net/files/BYfDxsZZkS

Para que funcione, tienes que hacerlo desde un formulario. Cada vez que salgas del campo Original, se te actualizan los otros dos, siempre y cuando en dicho campo haya algún valor.

Esta Excelente el resultado.......y solo quisiera hacer una ultima pregunta: es posible que se actualicen de manera automática todos los registros de la tabla?.....por que de lo contrario tendría que ir recorriendo cada unos de los registros para que haga la separación. Cuando sean pocos, no tendría problema pero cuando mi tabla tenga mas de mil registros, se me hará muy complicado recorrer uno por uno.

Gracias nuevamente!!!

Si es posible lo que pides, pero nuevamente desde un formulario.

Te explico como hacerlo:

Abres en Vista Diseño el formulario en el que tienes el código, sacas sus propiedades y te vas a la pestaña Eventos. Localizas la fila que se llama Al Cargar, y le das al botón de los 3 puntos que aparece a la derecha de la fila. En la ventana que se abre, eliges Generar código. Se te abrirá el editor de VBA. Entre las dos linea que te aparecen (Private Sub Form_Load() y End Sub), escribes esto:

Dim rst As Recordset
Dim longitud As Integer
Dim posicion As Integer
Dim antes As Variant
Dim despues As Variant
Set rst = CurrentDb.OpenRecordset("Tabla1", dbOpenDynaset)
Do Until rst.EOF
longitud = Len(rst("Original"))
' Nos busca la posición del signo igual
posicion = InStr(1, rst("Original"), "=")
'Extrae los caracteres antes del "="
antes = Left(rst("Original"), posicion - 1)
'Extrae los caracteres despues del "="
despues = Right(rst("Original"), longitud - posicion)
'Rellena los campos con sus valores
rst.Edit
rst("Combinac") = antes
rst("NumCombinac") = despues
rst.Update
rst.MoveNext
Loop
Rst. Close

De esta forma, cada vez que abras el formulario, se te actualizará toda la tabla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas