Access - Error en Recordset con ODBC y Access

 
Vista:

Error en Recordset con ODBC y Access

Publicado por Carlos Andrés (18 intervenciones) el 04/10/2005 18:22:11
Tengo el sgte problema con Access y ODBC:
Utilizo la tecnología ODBCDirect de Access con conexión ODBC a una base de datos SQL Server 2000.
La parte de la conexión y el llenado del recordset mediante la ejecución de un Procedimiento Almacenado de SQL Server 2000 los hace bien. Comienzo a guardar los datos del recordset en variables y los hace sin ningún problema, hasta que saca el error "Se ha producido el error 3146 en tiempo de ejecución: ODBC: falló la llamada" cuando pasa por las sgtes lineas de código:
Me.txtNotas.Value = rstPrueba![Notas]
Me.txtMensajeDespedida.Value = rstPrueba![Mensaje-despedida]
Sospecho que tiene que ver algo el tipo de dato de dichos campos en la tabla original, pero no estoy seguro. Ambos campos son varchar(8000), que es el máximo que permite SQL Server 2000.
ODBC tiene algún límite con la longitud de los campos varchar? O será otra cosa la que me causa el error?
Si necesitan el código completo con gusto lo escribo.
Agradezco la ayuda que me puedan brindar.

Carlos Andrés
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

Error ODBC 3146 al asignar valores de campos varchar(8000)

Publicado por Alejandro (4142 intervenciones) el 10/06/2023 00:32:04
El error ODBC 3146 en tiempo de ejecución puede ocurrir en Access cuando se intenta asignar valores de campos varchar(8000) provenientes de una base de datos SQL Server 2000 a controles de formulario.

En Access, los campos de texto en un formulario tienen una limitación en su longitud máxima, que es de 255 caracteres. Esto significa que si intentas asignar un valor de un campo varchar(8000) de SQL Server 2000 a un control de formulario en Access, y el valor supera los 255 caracteres, se producirá un error.

Para solucionar este problema, puedes realizar una de las siguientes opciones:

1. Acortar el contenido del campo varchar(8000) en SQL Server 2000 antes de asignarlo a los controles de formulario en Access. Esto se puede hacer mediante una consulta en SQL Server que recorte los valores a un tamaño menor a 255 caracteres, por ejemplo:

1
2
SELECT LEFT(Notas, 255) AS NotasCortadas, LEFT([Mensaje-despedida], 255) AS MensajeDespedidaCortado
FROM TuTabla

Luego, puedes asignar los campos "NotasCortadas" y "MensajeDespedidaCortado" a los controles de formulario en Access.

2. Utilizar controles de formulario en Access que permitan una longitud de texto mayor a 255 caracteres. Por ejemplo, puedes utilizar controles de cuadro de texto enriquecido (Rich Text Box) en lugar de cuadros de texto normales para los campos "Notas" y "Mensaje-despedida" en tu formulario. Los controles de cuadro de texto enriquecido no tienen la limitación de 255 caracteres y pueden mostrar y editar texto más largo.

Espero que estas opciones te ayuden a resolver el problema de asignación de valores de campos varchar(8000) en 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