Problemas con un archivo txt para cargarlo en access por vba que tiene más de 500 caracteres

Tengo un problema al intentar cargar un archivo. Txt en una tabla de access donde el problema se presenta por la cantidad de caracteres que tiene cada renglón del plano más de 500 caracteres, lo he intentado de realizar de dos maneras y ambas presenta problemas en el DoCmd. RunSQL la verdad no se en que estoy fallado:

Private Sub Importar_Click()

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM datos"

DoCmd.TransferText acImportDelim, , "datos", selectfile,  True

DoCmd.SetWarnings True

MsgBox "El plano ha sido cargado"

End Sub

y la otra es:

Private Sub Importar_Click()
Dim i As Integer
Dim fila As Long

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM datos"

'DoCmd.TransferText acImportDelim, , "datos", selectfile, False

Dim strline As String
Dim strcampo As String * 510

Me.lplano.RowSource = ""

Open selectfile For Input As #1

While Not EOF(1)
Line Input #1, strlinea
strcampo = Mid(strlinea, 1, 501)

Me.lplano.AddItem (strcampo)
Wend
Close #1

For i = 0 To lplano.ListCount - 1
DoCmd.RunSQL "insert into datos (campo) values('" & lplano.Column(0, fila) & "')"
fila = fila + 1
Next

DoCmd.SetWarnings True

MsgBox "El plano ha sido cargado"

End Sub

Me di cuenta que son los caracteres porque en el mid para darle el rango si lo dejo en 255 carga el plano pero al ampliarlo ya se revienta.

Respuesta

Cambia el tipo de dato del campo "campo" en la tabla "datos" a Memo (o texto largo si usas Access 2013 o 2016). Parece que lo tienes configurado como Texto (o texto corto) y ese tipo de datos solo admite 255 caracteres como máximo.

Un saludo.


Buen día, la base tiene tipo de dato memo, no lo mencioné anteriormente pero ya la tabla tiene el tipo de dato de texto más grande

Si trabajas con Access, tienes que tener sío o sí el tipo de datos Memo (hasta access 2010) o Texto Largo (access 2013-2016), según la versión que tengas. Ese es el que has de poner en tu campo para que te admita más de 255 caracteres.

Revisando tu código, puede que el problema te venga por pasar el texto del txt primero a un cuadro de lista o combinado, que probablemente te lo corte en los 255.

Usa un importación directa, o en vez de un cuadro de lista, usa una colección o una matriz para cargar los distintos elementos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas