Convertir lineas de campo memo en nuevos campos texto

01/02/2012 - 23:19 por jaguga | Informe spam
Hola a todos; tengo una tabla Access en la que el campo ‘Domicilio’ es un campo memo, de forma que en líneas diferentes se colocan los domicilios que pueda tener una persona, quedando, a modo de ejemplo, de esta forma (cada línea comienza con dos guiones):
-- Paseo Calatrava, nº 57 <GETAFE>
-- Plaza España, nº 2-4 <MADRID>
-- Sol, nº 2- 9 <GETAFE>

Me interesa que cada linea que contiene un domicilio pasarla a un campo texto, acompañado de otro campo que recoja el campo ID (es un autonumérico) del correspondiente registro pero no se cómo (supongo que tendrá que realizarse mediante código, algo en lo que no estoy muy puesto), de modo que quedase de la siguiente manera:

Campo ID NuevoCampo Domicilio

1234 Paseo Calatrava, nº 57 <GETAFE>
1234 Plaza España, nº 2-4 <MADRID>
1234 Sol, nº 2- 9 <GETAFE>

Gracias anticipadas.

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
02/02/2012 - 10:34 | Informe spam
Hola
No nos comentas que versión de Access utilizas.
El resultado de la disdegración ¿se guardaría en una tabla? por qué
sería algo tan sencillo como montar un procedimiento que separe las
direcciones mediante un split
Por ejemplo, creo un formulario continuo que tiene un cuadro de texto,
txtTexto, vinculado al campo memo. Este código te separa las
direcciones en una matriz de string, buscando como separador "-- ", y
luego las muestra en la ventana de inmediado mediante un ciclo FOR,
recorriendo el índice.
En cada iteración, compruebo sí la variable tiene una longitud
superior a 0 (al haber un salto de linea, me generaría una cadana
vacía). Luego compruebo sí los dos últimos caracteres son un salto de
linea y un retorno de carro (vbCrLf). Sí lo son, los elimino. Y
muestro la variable en la ventana de inmediato

<pego>

Private Sub Form_Current()
Dim sCampos() As String
sCampos = Split(Me.txtTexto.Value, "-- ")
Dim i As Integer
For i = 0 To UBound(sCampos)
If Len(sCampos(i)) > 0 Then
If Right(sCampos(i), 2) = vbCrLf Then
sCampos(i) = Left(sCampos(i), Len(sCampos(i)) - 2)
Debug.Print sCampos(i)
Else
Debug.Print sCampos(i)
End If
End If
Next
End Sub
</pego>

Espero te sirva como orientación.

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#2 jaguga
02/02/2012 - 23:11 | Informe spam
jaguga escribió el 01/02/2012 23:19 :
Hola a todos; tengo una tabla Access en la que el campo ‘Domicilio’
es un campo memo, de forma que en líneas diferentes se colocan los
domicilios que pueda tener una persona, quedando, a modo de ejemplo, de esta
forma (cada línea comienza con dos guiones):
-- Paseo Calatrava, nº 57 <GETAFE>
-- Plaza España, nº 2-4 <MADRID>
-- Sol, nº 2- 9 <GETAFE>

Me interesa que cada linea que contiene un domicilio pasarla a un campo texto,
acompañado de otro campo que recoja el campo ID (es un
autonumérico) del correspondiente registro pero no se cómo
(supongo que tendrá que realizarse mediante código, algo en lo
que no estoy muy puesto), de modo que quedase de la siguiente manera:

Campo ID NuevoCampo Domicilio

1234 Paseo Calatrava, nº 57 <GETAFE>
1234 Plaza España, nº 2-4 <MADRID>
1234 Sol, nº 2- 9 <GETAFE>

Gracias anticipadas.


Hola Jose Mª; gracias por tu respuesta pero al hacer lo que me dices (creo que lo estoy haciendo bien), al abrir ese formulario me sale el siguiente error: "Hay un uso no válido de un punto, de una expresion ! o de paréntesis ()" y al depurar el código se queda resaltado en amarillo la línea
sCampos = Split(Me.txtTexto.Value, "-- ")

Me intentaré explicar mejor sobre lo que pretendo. Para empezar, uso Access 2007 aunque la base de datos en cuestión está en formato de 2002-2003 (mdb).
Lo que pretendo es crear, a partir de los campos ID (autonumérico y clave principal) y Domicilios (el campo memo en cuestión) de la tabla actual una nueva base de datos con esos dos campos pero separando cada línea del campo memo en tantos campos texto como líneas tenga, es decir, cada registro de esta nueva base estaría formado por el ID correspondiente y por un campo texto formado a partir de cada línea del campo memo. De esta forma podría posteriormente relacionar la tabla principal con esta nueva tabla a través del campo ID (relación uno a varios).
Un saludo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida