Funciones en access

Tengo en un campo de una base de datos un texto separado por comas, necesito separarlo(lo que seria texto en columnas del excel), y no se como, probé con funciones que en el excel andan bien, como encontrar y extrae pero en el access me da el siguiente error, "la función encontrar no esta definida en la expresión", probé también ponerle find, con igual resultado, gracias por su atención.
kike
1

1 respuesta

1
Respuesta de
Aviso: hoy me voy de vacaciones, por lo que no te podre volver a responder (si es necesario) hasta el 22 de agosto. Aviso2: es un poco largo.
Te digo como lo haría yo:
En la tabla donde quieras guardar esos trozos, crea los 3 nuevos campos. Te creas un formulario con un botón de comando. En ese botón abriremos un recordset que contenga los datos de tu tabla y partiremos el campo. Guardaremos los trozos en cada nuevo campo creado.
Supongamos que:
- La tabla se llamma MiTabla
- El campo original: CampoOriginal
- Los nuevos campos: Campo1, Campo2 y Campo3
En el evento Click del botón:
Private Sub boton_Click()
Dim databs As Object
Dim rst As Object
Dim misql As String
Dim miArray() As String
Set databs = CurrentDb()
misql = "SELECT CampoOriginal, Campo1, Campo2, Campo3 FROM MiTabla;"
Set rst = databs.OpenRecordSet(misql)
If rst.EOF Then
MsgBox "No hay registros!
Else
rst.MoveFirst
While (Not (rst.EOF))
miArray = Split(rst!CampoOriginal & ",", ",")
rst.Edit
rst!Campo1 = miArray(0)
rst!Campo2 = miArray(1)
rst!Campo3 = miArray(2)
rst.Update
rst.MoveNext
Wend
End If
rst.Close
End Sub
Escrito del tirón... pero debería funcionar.
Si no tienes que realizar nunca más este procedimiento, puedes borrar el formulario, pero te recomiendo que lo guardes ya que el código tiene muchas utilidades.
Apuntes:
1. Los experimentos con gaseosa, es decir, con copias.
2. Como te dije, me voy de vacaciones hoy. Si tienes dudas te quedan 2 opciones: esperar al 22/08 o pasarte por el foro de Access (allí soy moderador y te puedo asegurar que alguine te ayudara)
3. Espero te sirva.
Saludos
Xavi
Moderador foro MVP-Access
Muchas gracias por tu tiempo, la solución parece perfecta, solo me resta hacerla funcionar. Felices Vacaciones!
kike
Puedes utilizar la función Split, que pone en un array los valores.
Dim miArray() As String, a As Integer
miArray = Split(micampo & ",", ",")
For a = 0 To UBound(miArray)
MsgBox miArray(a)
Next
Definimos las variables, llenamos el array. Fíjate que añado una coma al final de campo, ya que sino, el ultimo no lo cogería. Después abro un bucle desde 0 hasta el limite máximo de miArray y muestro el resultado en Cuadros de mensaje. Aquí pondrás lo que quieras hacer con esos textox.
Saludos
Xavi
Desde ya gracias por tu respuesta, debido a mi carácter de principiante no se como aprovechar tu respuesta, podrías detallarme los pasos a seguir, por ej.: donde debo definir el array, donde debo poner la función split(¿en una consulta?) Para que me separe toda la columna de la base de datos.
Gracias nuevamente
kike jordi
Para darte una respuesta más concreta, deberías aportar más datos. ¿Qué vas a hacer con esos 'trozos' de texto?
También te sugiero que te pases por http://www.mvp-access.com/foro/default.asp donde (ademas de estar yo más horas allí que aquí), puedes encontrar mucha información al respecto.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje

Más respuestas relacionadas

¿No es la pregunta que estabas buscando?
Puedes explorar otras preguntas del tema Microsoft Access o hacer tu propia pregunta: