Tengo dudas sobre la búsqueda de registros en tablas de datos utilizando microsoft access

Buenos días Sofocles.
Tengo una tabla con datos que cada por registro comienzan igual (por ejemplo por xyz) y el resto de registros por diferentes letras. Necesitaría que en otra columna me vaya poniendo si el inicio es "xyz", "xyz" y si no me ponga el centro de ese registro hasta que se encuentre otro por "xyz". Mejor con un ejemplo:
Los datos de A son los que tengo, los de B son los que quiero que me ponga al abrir el formulario:
A B
1 xyz1234 xyz
2 abc567 1234
3 def890 1234
4 xyz0987 xyz
5 ghi123 0987
6 jkl456 0987
Gracias de antemano.
Saludos.
Respuesta
1
Lo que pretendes, a priori, es bastante complicado, y máxime cuando los datos que pretendes manejar están en una sola tabla.
A continuación te voy a comentar un método que puedes aplicar, pero creo que seria mejor que me explicases más detalladamente la funcionalidad que deseas obtener, así como el fin de todo ese entramado de códigos.
Bien, sobre el método que te propongo, deberás crear una consulta para que alimente el formulario desde el que vas a introducir los datos. En esta consulta deberás ordenar por un campo inequívoco, que puede ser autonumérico (como aparentemente lo tienes montado).
Ahora comienza la parte en que tienes que escribir algo de código.
En el evento después de actualizar del campo A, debes escribir algo así:
Sub A_AfterUpdate()
Dim Tricode
Tricode=left([A],3)
IF Tricode="XYZ" Then
[CampoPuente]=right([A],4)
End If
=[CampoPuente]
End Sub
Lo que hace este subproceso es crear una variable (tricode) que recoge la parte izquierda del código. A continuación con la excepción If determinamos la igualdad con "XYZ", si es igual, en un campo independiente, que previamente hemos debido crear en el formulario y que hemos denominado [CampoPuente] guardamos el valor del código numérico, tomando la parte derecha del campo A en cuatro caracteres.
Observa que si no es XYZ, el campo puente mantendrá el valor del último XYZ, hasta que volvamos a introducir un nuevo registro con valores XYZ.
Para finalizar la función, lo que hacemos es asignar al campo B el valor del campo puente.
Y ya está.
Se me olvidaba una cosa.
Después de obtener el valor del campo puente, debes asignar al campo B el valor de Tricode de la siguiente forma:
Sub A_AfterUpdate()
Dim Tricode
Tricode=left([A],3)
IF Tricode="XYZ" Then
[CampoPuente]=right([A],4)
******* Desde aqui ***
=Tricode
******* Hasta aqui ***
End If
=[CampoPuente]
End Sub
Ahora si.
No me he debido explicar bien. Trabajo en el dpto. de Nóminas y es un fichero del sistema RED. Me importo un fichero tipo texto con los datos del los TC2. Me crea una columna con todos los datos seguidos. Necesito ordenarlos para unir varios registros del trabajador dentro de una misma caja de cotización. Los registros seria así:
Campo1
EMP0008245789546001000000000000000000000000000L00
EDTBA0200000000257490 0000000000000000000
EDTCA0100000000257490T0283000000000072870
EDTCA2100000000072870T0050000000000003644
EDTCA3000000000000000 0000000000000002549
EDTCA3100000000000000 0000000000000001622
EDTTT1000000000000000 0000000000000069226
EDTTT2000000000000000 0000000000000002549
EMP00281056485467001000000000000000000000000000L00
EDTCA2100000000072870T0050000000000003644
EDTCA3000000000000000 0000000000000002549
...
...
Necesito que los registros que hay desde el primer EMP hasta el segundo tengan en una columna CAMPO2 parte de los números (ejm. 82457895) que tiene EMP anterior. Pasado el segundo EMP en el CAMPO2 aparezca "28105648" hasta que volvamos a encontrar otro registro que empiece por EMP
Soy consciente que esto es complicado pero me resolvería muchas horas de trabajo delante de un fichero tan espantoso y evitar errores al hacerlo manualmente.
Gracias de nuevo.
Cristina Delgado.
Estimada Cristina:
Creo que la primera vez te entendí correctamente, y me parece que el método que he planteado es suficiente para conseguir tus objetivos.
Lo único que es diferente el tamaño del campo1 de tu tabla, pero por lo demás todo esta en orden a lo planteado.
Si quieres que ampliemos el enfoque de esta respuesta, puedes enviarme una copia de tu aplicativo, junto con los ejemplos apropiados, incluido un fichero del sistema RED a mi dirección de correo:
[email protected]
O a:
[email protected]
Y gustosamente intentare ayudarte más intensamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas