Access - Campos memo en recordset

 
Vista:

Campos memo en recordset

Publicado por David (9 intervenciones) el 20/09/2004 12:39:58
En mi base de datos Access tengo un campo memo que cuando intento recuperar con un objeto Recordset únicamente me devuelve los primeros 255 caracteres, el resto lo transforma en codigo ascii. Alguien sabe como solventar este problema. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Campos memo en recordset

Publicado por Alejandro (4142 intervenciones) el 11/05/2023 20:03:17
El comportamiento que estás experimentando con el campo Memo en un objeto Recordset de Access es normal. Por defecto, Access limita la longitud de un campo Memo a 255 caracteres cuando se recupera mediante un objeto Recordset.

Sin embargo, hay formas de superar esta limitación y obtener el contenido completo del campo Memo. Puedes utilizar el método GetChunk del objeto Field para obtener los datos en fragmentos y luego concatenarlos para formar el valor completo del campo Memo.

Aquí tienes un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim rs As Recordset
Dim memoValue As String
Dim chunkSize As Integer
Dim totalChunks As Long
Dim i As Long
 
Set rs = CurrentDb.OpenRecordset("NombreDeTuTabla")
 
rs.MoveFirst
If Not rs.EOF Then
    chunkSize = 500 ' Tamaño de cada fragmento de datos (ajústalo según tus necesidades)
    totalChunks = rs.Fields("NombreDelCampoMemo").FieldSize \ chunkSize
 
    memoValue = ""
    For i = 0 To totalChunks
        memoValue = memoValue & rs.Fields("NombreDelCampoMemo").GetChunk(chunkSize)
    Next i
 
    ' Ahora memoValue contiene el valor completo del campo Memo
End If
 
rs.Close
Set rs = Nothing

Asegúrate de reemplazar "NombreDeTuTabla" por el nombre real de tu tabla y "NombreDelCampoMemo" por el nombre real del campo Memo.

En este ejemplo, se divide el campo Memo en fragmentos de tamaño "chunkSize" y se utiliza el método GetChunk para obtener cada fragmento. Luego, se concatenan los fragmentos en la variable "memoValue" para formar el valor completo del campo Memo.

Ten en cuenta que el tamaño del fragmento ("chunkSize") es ajustable según tus necesidades. Puedes experimentar con diferentes valores para encontrar el equilibrio entre el rendimiento y la longitud máxima del campo Memo que deseas recuperar.

Espero que esta solución te ayude a obtener el contenido completo de un campo Memo en un objeto Recordset de Access.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar