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.
1 Respuesta
Respuesta de xavi -ae soft-
1
1
xavi -ae soft-, 20años de experiencia en programacion Access a razon de 10 horas...
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.
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.