Principales respuestas
Guardar mas de 255 caracteres de texto

Pregunta
-
Hola amigos. Por aqui de nuevo en busca de conocimiento.
Necesito guardar mas de 255 caracteres en un campo de una base de datos Access y este campo lo tengo como memo y formato de texto enriquecido para guardar formato colores etc. Hasta aqui bien.
Para guardar lo hago con una consulta INSERT (richtexbox.rtf) y el campo se graba con el formato de texto y todo de maravilla.
Pero si el texto es algo estenso simplemente lo corta por donde le sale de los cojones y no lo graba todo. Es como si el campo MEMO no admitiese mas de 255 caracteres en vez de los 64000 que promete Access, porque es lo que parece que graba, aunque no los he contado. Y aqui me quedo. He buscado por la red pero no he encontrado el motivo de este comportamiento.
¿Alguien me puede decir como grabar, por ejemplo un folio entero en un campo MEMO y luego recuperarlo con un Richtexbos u otro control?
Gracias y saludos cordiales
Respuestas
-
El Memo tiene que aceptar más de 255 caracteres. Revisa cómo lo estás grabando, que se tiene que haber escapado algo. Por ejemplo, si lo estás insertando mediante una sentencia parametrizada (como debe ser), puede ser que en la definición del parámetro le hayas puesto que la longitud es 255.
- Marcado como respuesta Enrique M. MontejoModerator lunes, 4 de abril de 2016 7:24
-
Efectivamente es una sentencia parametrizada, como se ve en el INSERT. Revisa el fuente que se te ha generado con la definición del TableAdapter (puede que el fichero esté oculto en el explorador de soluciones y tengas que pulsar el botón de "ver todos los archivos"), y fíjate en cómo están declarados los parámetros del InsertCommand. La sospecha es que puede ser que el parámetro tenga una longitud de 255.
- Marcado como respuesta Enrique M. MontejoModerator lunes, 4 de abril de 2016 7:24
Todas las respuestas
-
El Memo tiene que aceptar más de 255 caracteres. Revisa cómo lo estás grabando, que se tiene que haber escapado algo. Por ejemplo, si lo estás insertando mediante una sentencia parametrizada (como debe ser), puede ser que en la definición del parámetro le hayas puesto que la longitud es 255.
- Marcado como respuesta Enrique M. MontejoModerator lunes, 4 de abril de 2016 7:24
-
Hola Alberto
Pues realmente no se que he podido dejarme. Se trata de una triste y simple consulta diseñada en el asistente
INSERT INTO TDatos ( Titulo , Grupo , Observaciones ) VALUES (?, ?, ?)
e incorporada al codigo como he hecho otras veces.
TdatosTableAdapter.INSERTARAPUNTE(TituloTextBox.Text, GrupoComboBox.Text,Observacionestextbox.Rtf)
En este caso el control es un Richtextbox, pero en un textbox normal con multilinea activado ocurre lo mismo, por lo que dudaba del campo memo.
Funciona bien, solo que si el texto del campo Observaciones es algo extenso simplemente lo recorta.
-
Efectivamente es una sentencia parametrizada, como se ve en el INSERT. Revisa el fuente que se te ha generado con la definición del TableAdapter (puede que el fichero esté oculto en el explorador de soluciones y tengas que pulsar el botón de "ver todos los archivos"), y fíjate en cómo están declarados los parámetros del InsertCommand. La sospecha es que puede ser que el parámetro tenga una longitud de 255.
- Marcado como respuesta Enrique M. MontejoModerator lunes, 4 de abril de 2016 7:24
-
Efectivamente Alberto, estaba definido a 1024 por eso cuando el texto era extenso recortaba. Pero digo yo
que si esta es la unica forma de corrregirlo un principiante (y no tan principiante)
no tiene ninguna ninguna posibilidad de subsanarlo.
Gracias y hasta siempre
ourceName="Tdatos" DataTypeServer="DbType.StringFixedLength(255)" DbType="String" urceName="Tdatos" DataTypeServer="DbType.StringFixedLength(255)" DbType="String" Direction="Input" ParameterName="Grupo" o" Precision="0" ProviderType="WChar" Scale="0" Size="1024" SourceColumn="Observaciones" SourceC
- Editado DiegC sábado, 2 de abril de 2016 11:12
-