Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Se presentan truncados los importes en un DBDrid (https://www.clubdelphi.com/foros/showthread.php?t=80318)

Casimiro Notevi 19-09-2012 00:28:23

Veamos, olvídate de todos los campos, menos del campo Importe.
Dices que ese campo es numeric (11,2), bien, entonces si abres tu programa "manager" de bases de datos y escribes:
Código SQL [-]
select importe from LaTablaDondeEstaEseCampo
¿Qué sale?

Juan Quintana 19-09-2012 00:40:08

sale lo siguiente:

1149.30
688.32
1067.28
2944.74
1265.82
827.00
14568.34
.
.
.
.
.
.
356.97
1987.43
5678.20

Casimiro Notevi 19-09-2012 01:03:40

Entonces si inicias un nuevo proyecto, pones un componente para conectar, un dbgrid y un datasource para unirlos... ¿no salen los decimales?

Juan Quintana 19-09-2012 01:18:59

Ya hice lo me sugieres, y si salen los decimales pero solamente en los importes que son menores a 1000.00 y a los importes que son mayores a 1000 no le salen decimales pero tampoco salen todos los enteros que deben de ser; los datos que te envie con el query del "manager" de SQL al procesarlo con DELPHI me da lo siguiente;


1
688.32
1
2
1
827.00
14
.
.
.
.
.
.
356.97
1
5

Casimiro Notevi 19-09-2012 01:36:53

Pues... ni idea :confused:
No se me ocurre nada más.

A ver si alguien ha tenido alguna vez ese problema, porque yo jamás lo he visto.

Juan Quintana 19-09-2012 01:50:54

Casimiro, ya le encontre y el problema no es DELPHI es de SQL SERVER; lo que sigue a continuacion son las instrucciones originales que tenia:

Código Delphi [-]
 
query1.SQL.Clear;
query1.SQL.Add('select movinom.idtrab, idafecta, importe, paterno,materno,nombre from movinom,trabajador ');
query1.SQL.Add('where movinom.idtrab=35 and anodenom=2012 and numdenom=1 and movinom.idtrab=trabajador.idtrab');
query1.Open;

y modificando a lo siguiente ya aparecieron los datos como debian de ser

Código Delphi [-]
query1.SQL.Clear;
query1.SQL.Add('select movinom.idtrab, idafecta, convert(varchar(12),convert(numeric(9,2),Importe)) as [Impo],');            
query1.SQL.Add('paterno,materno,nombre from movinom,trabajador ');
query1.SQL.Add('where movinom.idtrab=35 and anodenom=2012 and numdenom=1 and movinom.idtrab=trabajador.idtrab');
query1.Open;


Todo el problema es que debia de convertirse el campo Importe que es del tipo numeric(9,2) al tipo varchar
Claro sin tu ayuda no hubiera podido encontrar la solucion; lo dejo aqui por si le pasa a alguien mas

Casimiro Notevi 19-09-2012 02:22:40

Bueno, de delphi ya sabía que no podía ser el problema.
De MS Sql, creo que no lo he usado nunca.
De todas formas, me parece extraño.

ElMug 20-09-2012 00:58:11

Cita:

Empezado por Juan Quintana (Mensaje 443483)
El campo es TFloatField, asi me lo marca Delphi

Si veo el tipo de campo con el Analizador de SQL me marca Numeric (11, 2)


Segun se ve, diria que la data esta guarda como BCD (Binary Coded Decimal).

Investiga por ahi, y tal vez requieras convertir la data.


La franja horaria es GMT +2. Ahora son las 15:45:56.

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