Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con campo varchar(max) (https://www.clubdelphi.com/foros/showthread.php?t=77594)

leofuentes21 09-02-2012 18:49:03

Problemas con campo varchar(max)
 
Hola que tal Amigos espero que tenga un buen dia todos.
Bueno tengo un pequeño problemita y espero que me puedan ayudar.

Estoy trabajando con una base sql server 2005 y d7, y en una tabla tengo declarado un campo varchar(max) donde
quiero guardar gran cantidad de informacion. el problemas que tengo es que hasta 255 caracteres me guarda bien la informacion.pero si argrego mas de 255 caracteres me guarda simbolos.:confused:

He intentado cambiar el campo y declararlo como text pero es igual siempre despues de 255 caracteres me guarda simbolos.

Espero me puedan dar una ayuda
Gracias

Casimiro Notevi 09-02-2012 19:03:37

Y ese 'max' ¿qué es?

leofuentes21 09-02-2012 19:36:46

es el tipo de dato
es de tipo varchar (max) dentro del parentesis va la longitud.
Max indica el tamaño de almacenamiento maximo

Casimiro Notevi 09-02-2012 23:48:59

Sí, bien, pero ¿cuánto vale 'max'?

TiammatMX 10-02-2012 00:37:50

¿Y qué tipo de variable utilizas para contener el dato dentro de Delphi? ¿String o WideString? Por que String tiene la limitante a los 255 caracteres y WideString no tiene un límite; o al menos, un límite que llenes fácilmente.

Prueba por ahí y platicamos.

TiammatMX 10-02-2012 00:41:08

Alguna vez yo tuve un problema muy parecido si no es que idéntico. Lo resolví satisfactoriamente cambiando la variable a tipo WideString.

No le busques más, ésa es tu solución, a despecho que en un memo "veas" el contenido de la variable.

olbeup 10-02-2012 08:23:59

Yo utilizo SQL SERVER 2005 con varchar(MAX) no he tenido ningún problema hasta ahora, como dice tiammat utiliza el WideString que es la asignación correcta para guardar los datos.

Una breve explicación de la ayuda de SQL SERVER 2005


Son tipos de datos de caracteres que tienen longitud fija o variable.

char [ ( n ) ]
Datos de caracteres no Unicode de longitud fija, con una longitud de n bytes. n debe ser un valor entre 1 y 8.000. El tamaño de almacenamiento es n bytes. El sinónimo de char en SQL-2003 es character.

varchar [ ( n | max ) ]
Datos de caracteres no Unicode de longitud variable. n puede ser un valor entre 1 y 8.000. max indica que el tamaño de almacenamiento máximo es de 2^31-1 bytes. El tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los datos especificados pueden tener una longitud de 0 caracteres. Los sinónimos de varchar en SQL-2003 son char varying o character varying.

Notas
Cuando no se especifica n en una instrucción de definición de datos o de declaración de variable, la longitud predeterminada es 1. Cuando no se especifica n al utilizar las funciones CAST y CONVERT, la longitud predeterminada es 30.

A los objetos que utilizan char o varchar se les asigna la intercalación predeterminada de la base de datos, a menos que se asigne una intercalación específica mediante la cláusula COLLATE. La intercalación controla la página de códigos utilizada para almacenar los datos de caracteres.

Si tiene sitios que admiten varios idiomas, considere el uso de tipos de datos Unicode nchar o nvarchar para reducir al mínimo los problemas de conversión de caracteres. Si usa char o varchar, siga estas recomendaciones:

Utilice char cuando los tamaños de las entradas de datos de columna sean coherentes.


Utilice varchar cuando los tamaños de las entradas de datos de columna varíen de forma considerable.


Utilice varchar(max) cuando los tamaños de las entradas de datos de columna varíen de forma considerable y se pudieran superar los 8.000 bytes.


Si SET ANSI_PADDING es OFF cuando se ejecuta CREATE TABLE o ALTER TABLE, una columna de tipo char definida como NULL se trata como si fuera de tipo varchar.

Si la página de códigos de la intercalación utiliza caracteres de doble byte, el tamaño de almacenamiento sigue siendo de n bytes. Dependiendo de la cadena de caracteres, el tamaño de almacenamiento de n bytes puede ser inferior a n caracteres.

Un saludo.

leofuentes21 10-02-2012 19:27:36

Cita:

Empezado por tiammat (Mensaje 424708)
Alguna vez yo tuve un problema muy parecido si no es que idéntico. Lo resolví satisfactoriamente cambiando la variable a tipo WideString.

No le busques más, ésa es tu solución, a despecho que en un memo "veas" el contenido de la variable.

Hola amigo buen dia

Ya prove como me lo aconsejaste de cambiar la variable de string a widestring y sigue igual,no se si porque estoy utizando sql server express 2005 no se si eso influye o no tengo idea por que me sigue dando simbolos.

Casimiro Notevi 11-02-2012 12:06:08

Puede que sea alguna limitación del componente que usas para conectar :)

leofuentes21 14-02-2012 19:25:41

Problema resuelto

Cambie algunos componente de bde a ADO y ( Como decia un Maestro de una clase de Programacion 'Como por arte de magia se soluciono':D:D) Ya encerio cambie de componete de BDE a ADO me imagino o desconosco si los BDE tiene limitaciones de caracteres. pero me funcionaron lo componentes ADO y todo funciona bien

Gracias amigo por sus respuesta me sirvieron de mucho la ayuda.. les debo una


La franja horaria es GMT +2. Ahora son las 12:25:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi