Se presentan truncados los importes en un DBDrid
Hola a todos, estoy incursionando en el uso de Delphi con la base de Datos SQL Server, pero al hacer un Query y presentar los resultados en un DBgrid, todos los importes mayores a 999.99 se presentan mal, por ejemplo el importe de 27346.73 se presenta solo como 27; el codigo que estoy usando es:
SQL.Clear; SQL.Add('select movinom.idtrab, idafecta, importe, paterno,materno,nombre from movinom,trabajador '+ 'where movinom.idtrab=35 and anodenom=2012 and numdenom=1 and movinom.idtrab=trabajador.idtrab'); Open; Con este codigo se presentan correctamente todas las columnas exepto la de importe; que estare haciendo mal pues la base de datos si tiene los importes correctos. Gracias |
currency
checate si en las propiedades del campo tienes en true la propiedad currency.
haber si con eso te sale bien ... Saludos:cool: |
Cita:
Gracias :) Debes asignarla una máscara de presentación al campo, ejemplo:
|
Gracias, por contestarme
Pero no se como poner esa propiedad al campo, me puedes proporcionar un ejemplo |
Debes asignarla una máscara de presentación al campo, ejemplo:
Gracias Cuando pongo la mascara me da error, el compilar no reconoce a displayformat Estoy usando Delphi 7 |
Pon el código que estás usando, no tenemos bola de cristal ;)
|
Perdon, soy nuevo en estar usando este estupendo Foro, envio el codigo que estoy usando
Gracias uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBTables, DB, Grids, DBGrids, StdCtrls, n00o001; type TForm1 = class(TForm) DBGrid1: TDBGrid; Database1: TDatabase; Movinom: TTable; DataSource1: TDataSource; Query1: TQuery; DataSource2: TDataSource; Button1: TButton; Trabajador: TTable; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var wimpo: double; xImpo:string; begin 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; query1.First; end; end. |
Más arriba te he explicado cómo poner el código fuente :confused:
|
Va de nuevo, espero que cumpla ya lo de los tags............... gracias
'); query1.SQL.Add( class='sql'><div class="frame_codigo_sql">Código SQL [-]<div id="sql_div_667987092117b" class="texto_codigo_sql">); query1.Open; end; end.class='quotesql'>'where movinom.idtrab=35 and anodenom=2012 and numdenom=1 and movinom.idtrab=trabajador.idtrab'div>div> |
Amigo, tan difícil no es: Seleccionas todo el código y pulsas el botón, nada más :confused:
A ver, te lo corrijo... |
Aquí está tu código del principio:
|
El query1.first sobra porque cuando se hace query1.open se va al primer registro.
TQuery creo que es de los componentes dbexpress, no los he usado mucho, creo que es así:
Puedes ponerlo después del query1.open; También puedes probar con:
|
Gracias, lo voy a hacer y te digo
|
ya probe las 2 formas que me comentas, pero se sigue truncando;
no sera que la extraccion de los datos de la tabla sea la que me da el problema; aunque veo la tabla con el analizador de SQL y si estan los importes correctos, Te lo agradezco de todas formas Gracias |
¿El campo de la tabla de qué tipo es?, es que si es integer entonces no puede tener decimales ;)
|
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) |
¿No tendrás puesta una máscara en el dbgrid?, pega un dbgrid nuevo y sólamente asóciale el datasource, no le toques nada más y... prueba.
|
Siguiendo tu observacion, fui un poco mas alla y genere una nueva forma donde solamente pege un DBGRid y le asocie el data source y el resutado fue que la columna de importe sigue sin reflejar lo correcto;
me dio lo siguiente: idtrab idAfecta Importe ...... 14 10 95 17 11 7 22 10 5 25 10 823.13 cuando debia de haber sido idtrab idAfecta Importe ...... 14 10 95324.36 17 11 7045.79 22 10 5182.31 25 10 823.13 |
Pues aquí hay decimales:
Código:
idtrab idAfecta Importe |
Estuve checando otros campos de la tabla que tienen importes y lo que observe es que estan definidos como TStringField y esos campos si se presentan correctamente; pero los campos defindos como TFloatField cuando son mayores a 999.99 no se presentan bien;
Ya agrande la columna del importe y no salen bien.......ya no se que hacer Gracias de todos modos |
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: ¿Qué sale? |
sale lo siguiente:
1149.30 688.32 1067.28 2944.74 1265.82 827.00 14568.34 . . . . . . 356.97 1987.43 5678.20 |
Entonces si inicias un nuevo proyecto, pones un componente para conectar, un dbgrid y un datasource para unirlos... ¿no salen los decimales?
|
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 |
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. |
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:
y modificando a lo siguiente ya aparecieron los datos como debian de ser
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 |
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. |
Cita:
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 16:47:37. |
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