FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cita:
Known problems 1. It is impossible to get more then 255 byte for a char/binary column of MS SQL Server 7, so that DB-Lib does not return more then 255 byte for these columns (MS SQL Server 7 truncates data in case of connecting through DB-Library). The reason is the following: Microsoft did not add new features of MS SQL Server 7 for DB-Library. Te digo lo mismo que poliburro... usá ADO... |
#2
|
||||
|
||||
Si ejecutas la consulta desde el query analizer:
¿este sí te regresa todos los caracteres o tambien lo limita a 256?
__________________
|
#3
|
||||
|
||||
Cita:
Si el problema lo tenés en algunas pocas consultas, en vez de reemplazar el SQLDirect por ADO podés hacerte una función que traiga el campo de a 255 caracteres y luego por código los unís... con las funciones LEN(CAMPO) para saber el tamaño y SUBString(CAMPO, inicio, tamaño) para obtener las porciones de texto... Obvio que solo sirve si el problema lo tenés en pocos lugares... |
#4
|
||||
|
||||
Pues a mi en el query analizer solo me trae 256 caracteres...
además de que por la forma en el sistema esta diseñado, no puedo quitar el SQLDirect, vaya, que estoy obligado a usarlo. De otra forma tendría que hacer miles de cosas extra, que igual y mejor voy empezando... pero en fin mi principal duda es que en el query analizar de sql2000, me regresa solo 256 caracteres, aunque si esta bien guardado ya que al hacer un len(campo) me regresa 456 (que es la cantidad de caracteres guardados en el campo).
__________________
|
#5
|
||||
|
||||
sigo sin encontrar respuesta a este problema... al final he decidido hacer lo siguiente:
y en delphi:
Pero si alguien tiene una idea mejor, pues eso, sería mucho mejor.
__________________
|
#6
|
||||
|
||||
Básicamente yo lo solucioné de la misma forma, pero lo hice en una función un poco más general, para usarla de donde tenga ese problema (solo en los campos Memo o Varchar). Si se crean nuevos campos en la base ya los hago que sean Text.
Código Delphi [-]class function TFuncionesComponentes.TraerCampoGrandeSQLServer(Tabla, Campo, FiltroParaUnRegistro, TextoCampo: String): string; ... //Traigo la longitud del campo Qry.Sql.Text := 'SELECT LEN('+Campo+') AS LONGITUD FROM '+Tabla; ... CantidadVeces := TamanioCampo DIV sizeDiv; if ((TamanioCampo MOD sizeDiv)<>0) then CantidadVeces := CantidadVeces + 1; ... sizeDiv := 255; with Qry.SQL do begin Clear; Add('SELECT SubString('+Campo+',1,'+IntToStr(sizeDiv)+') AS P1'); //El inicio lo paro en un caracter más i := sizeDiv + 1; for j := 2 to CantidadVeces do begin Add(', SubString('+Campo+','+IntToStr(i)+','+IntToStr(sizeDiv)+') AS P'+IntToStr(j)); i := (j * sizeDiv) + 1; end; Add('FROM '+Tabla); Add('WHERE '+FiltroParaUnRegistro); end; Qry.Open; //Ahora tengo que unir todos los substrings que obtube StrTemp := ''; for j := 1 to CantidadVeces do StrTemp := StrTemp + qry.FieldByName('P'+IntToStr(j)).AsString; Result := StrTemp; ... |
#7
|
||||
|
||||
Básicamente yo lo solucioné de la misma forma, pero lo hice en una función un poco más general, para usarla de donde tenga ese problema (solo en los campos Memo o Varchar). Si se crean nuevos campos en la base ya los hago que sean Text.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Migrando Bde A Componentes Sqldirect | ASAPLTDA | Firebird e Interbase | 2 | 09-05-2006 21:09:01 |
Migracion BDE a SQLDIRECT evaluacion | ASAPLTDA | Conexión con bases de datos | 0 | 27-11-2004 22:08:12 |
Problema:.NET, Crystal Report, SQLServer o WinXP | cacuna | .NET | 3 | 24-08-2004 21:52:45 |
ayuda SQLDirect v.2.9.7 | ronimaxh | Conexión con bases de datos | 5 | 28-11-2003 17:19:33 |
problema sqlserver desde bde con tipos decimal | borbi | Conexión con bases de datos | 4 | 22-10-2003 10:07:18 |
|