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)

Juan Quintana 18-09-2012 16:47:20

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

kapcomx 18-09-2012 17:09:48

currency
 
checate si en las propiedades del campo tienes en true la propiedad currency.
haber si con eso te sale bien ...

Saludos:cool:

Casimiro Notevi 18-09-2012 17:14:21

Cita:

Empezado por Juan Quintana (Mensaje 443412)
...

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)


Debes asignarla una máscara de presentación al campo, ejemplo:
Código Delphi [-]
query.fieldbyname('importe').displayformat := '###,##';

Juan Quintana 18-09-2012 17:46:53

Gracias, por contestarme

Pero no se como poner esa propiedad al campo, me puedes proporcionar un ejemplo

Juan Quintana 18-09-2012 17:49:41

Debes asignarla una máscara de presentación al campo, ejemplo:
Código Delphi [-]
query.fieldbyname('importe').displayformat := '###,##';
Gracias

Cuando pongo la mascara me da error, el compilar no reconoce a displayformat

Estoy usando Delphi 7

Casimiro Notevi 18-09-2012 17:56:05

Pon el código que estás usando, no tenemos bola de cristal ;)

Juan Quintana 18-09-2012 18:12:01

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.

Casimiro Notevi 18-09-2012 18:15:08

Más arriba te he explicado cómo poner el código fuente :confused:

Juan Quintana 18-09-2012 18:28:27

Va de nuevo, espero que cumpla ya lo de los tags............... gracias



Código Delphi [-]
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBTables, DB, Grids, DBGrids, StdCtrls;
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);

begin
   query1.SQL.Clear;
   query1.SQL.Add(
class='sql'><div class="frame_codigo_sql">Código SQL [-]<div id="sql_div_6653e3ab80ded" class="texto_codigo_sql">
''>select movinom.idtrab, idafecta, importe, paterno,materno,nombre '>from movinom,trabajador
'); query1.SQL.Add(
class='sql'><div class="frame_codigo_sql">Código SQL [-]<div id="sql_div_6653e3ab80ed1" class="texto_codigo_sql">
class='quotesql'>'where movinom.idtrab=35 and anodenom=2012 and numdenom=1 and movinom.idtrab=trabajador.idtrab'
div>div>
); query1.Open; end; end.

Casimiro Notevi 18-09-2012 18:34:00

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...

Casimiro Notevi 18-09-2012 18:35:25

Aquí está tu código del principio:
Código Delphi [-]
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.

Casimiro Notevi 18-09-2012 18:41:51

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í:

Código Delphi [-]
TFloatField(Query1.FieldbyName('Importe')).DisplayFormat := '###,###,##0';

Puedes ponerlo después del query1.open;


También puedes probar con:
Código Delphi [-]
TNumericField(Query1.FieldbyName('Importe')).DisplayFormat := ',0.00';

Juan Quintana 18-09-2012 18:44:57

Gracias, lo voy a hacer y te digo

Juan Quintana 18-09-2012 20:54:36

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

Casimiro Notevi 18-09-2012 21:06:11

¿El campo de la tabla de qué tipo es?, es que si es integer entonces no puede tener decimales ;)

Juan Quintana 18-09-2012 21:11:18

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)

Casimiro Notevi 18-09-2012 21:37:48

¿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.

Juan Quintana 18-09-2012 22:42:05

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

Casimiro Notevi 18-09-2012 22:47:43

Pues aquí hay decimales:
Código:

      idtrab    idAfecta    Importe
          14            10      95
          17            11        7
          22            10        5
          25            10      823.13    <---- ¡¡¡ Aquí !!!

¿No será que es tan estrecha la columna que no cabe? ;)

Juan Quintana 18-09-2012 23:54:15

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


La franja horaria es GMT +2. Ahora son las 03:36:43.

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