Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error al calcular una factura (https://www.clubdelphi.com/foros/showthread.php?t=59613)

Yensis22 02-09-2008 15:37:09

Error al calcular una factura
 
bueno dia estoy tratando de relizar uno calculos pero cuando lo esjecuto me mande este error.

Cita:

[Error] FFactura.pas(151): Unknown directive: 'a'
ese error desde la a asta la h
[Error] FFactura.pas(151): Unknown directive: 'h'
Código Delphi [-]
procedure TFFacturacion.Button3Click(Sender: TObject);
a,b,c,d,e,f,g,h :real;
begin
 a:= StrTofloat(Editcantidad.Text);
 b:= StrTofloat(EMonto.Text);
 d:= StrTofloat(EDesc.Text);
 f:= StrTofloat(EImp.Text);
 c:= a * b;
 e:= c * d / 100;
 g:= (c - e) * f / 100;
 h:= c - e + g;
 ESTotal.Text:= floatToStr(c);
 EDescuento.Text:=floatToStr(e);
 EImpuesto.Text:=floatToStr(g);
 ETotal.Text:= floatToStr(Round(h));
 Qfacturacion.SQL.Text := 'Insert into Facturacion 
 Values ('+QuotedStr(ECodFactura.Text)+', '+QuotedStr(EdiCliente.Text)+ ', 
 '+ LabDireccion.Caption+ ' :FechaFactura, '+QuotedStr(Editequipo.Text)+ ', 
 '+QuotedStr(EditRNC.Text)+ ', '+QuotedStr(DBComboBox2.Text)+', 
 '+QuotedStr(EMonto.Text)+', '+
                        QuotedStr(Editcantidad.Text)+', '+QuotedStr(ETotal.Text)+', 
 '+QuotedStr(EImp.Text)+', '+QuotedStr(EDesc.Text)+', '+QuotedStr(DBComboBox3.Text)+ ', 
'+QuotedStr(ESTotal.Text)+ ', '+QuotedStr(EDescuento.Text)+')', '+
                        QuotedStr(EImpuesto.Text)+')';
 Qfacturacion.Parameters.ParamByName('FechaFactura').Value:= DateToStr(DateTimePicker1.Date);
 Qfacturacion.ExecSQL;
  end;
end.

dec 02-09-2008 15:46:50

Hola,

Por favor, edita tu mensaje de manera que no "rompa" la página del foro. ¿Y qué es eso de "facruta"? Quisiste decir factura, claro. Presta más atención al título de los hilos, porque, es importante a la hora de realizar búsquedas en el futuro, entre otras cosas. Gracias.

maeyanes 02-09-2008 15:47:26

Hola...

Checa esto:

Código Delphi [-]
procedure TFFacturacion.Button3Click(Sender: TObject);
VAR // <--- Esto te hace falta
  a,b,c,d,e,f,g,h :real;


Saludos...

tcp_ip_es 02-09-2008 16:18:49

yo ya le indiqué algo parecido en otro post pero parece que no atiende a razones :D

http://www.clubdelphi.com/foros/showthread.php?t=59401

P.D. 1: Me queda la duda de si escribe asi por no conocer nuestro idioma o porque simplemente pasa de nosotros :confused:
P.D. 2 : cito
Cita:


bueno dia estoy tratando de relizar uno calculos pero cuando lo esjecuto me mande este error.

Yensis22 02-09-2008 16:45:15

gracia por las observaciones
 
gracia por la correcion pero cunado ledoy clic en el no boton de calculo manda este error.

Cita:

is not a valid floatng poit value
Código Delphi [-]
rocedure TFFacturacion.BitBtn1Click(Sender: TObject);
var
a,b,c,d,e,f,g,h :real;
begin
 a:= StrTofloat(Editcantidad.Text);
 b:= StrTofloat(EMonto.Text);
 d:= StrTofloat(EDesc.Text);
 f:= StrTofloat(EImp.Text);
 c:= a * b;
 e:= c * d / 100;
 g:= (c - e) * f / 100;
 h:= c - e + g;
 ESTotal.Text:= floatToStr(c);
 EDescuento.Text:=floatToStr(e);
 EImpuesto.Text:=floatToStr(g);
 ETotal.Text:= floatToStr(Round(h));
 Qfacturacion.SQL.Text := 'Insert into Facturacion Values ('+QuotedStr(ECodFactura.Text)+', '+
 QuotedStr(EdiCliente.Text)+ ', '+ LabDireccion.Caption+ ' :FechaFactura, '+QuotedStr(Editequipo.Text)+ ', '+
 QuotedStr(EditRNC.Text)+ ', '+QuotedStr(DBComboBox2.Text)+', '+QuotedStr(EMonto.Text)+', '+
 QuotedStr(Editcantidad.Text)+', '+QuotedStr(ETotal.Text)+', '+QuotedStr(EImp.Text)+', '+
 QuotedStr(EDesc.Text)+', '+QuotedStr(DBComboBox3.Text)+ ', '+QuotedStr(ESTotal.Text)+ ', '+
 QuotedStr(EDescuento.Text)+', '+QuotedStr(EImpuesto.Text)+')';
 Qfacturacion.Parameters.ParamByName('FechaFactura').Value:= DateToStr(DateTimePicker1.Date);
 Qfacturacion.ExecSQL;

end;
end.

maeyanes 02-09-2008 16:53:13

Cita:

Empezado por tcp_ip_es (Mensaje 311096)
yo ya le indiqué algo parecido en otro post pero parece que no atiende a razones :D

http://www.clubdelphi.com/foros/showthread.php?t=59401

P.D. 1: Me queda la duda de si escribe asi por no conocer nuestro idioma o porque simplemente pasa de nosotros :confused:
P.D. 2 : cito

Yo creo que pasa de nosotros...

Sigue escribiendo de la misma forma... :rolleyes:

maeyanes 02-09-2008 16:56:44

Hola...

Cita:

Empezado por Yensis22 (Mensaje 311107)
gracia por la correcion pero cunado ledoy clic en el no boton de calculo manda este error.

Espero empieces a tomar en cuenta los comentarios que te han dado sobre tu forma de escribir... pon un poco más de tu parte al hacer tus preguntas, ya que no podemos andar adivinando todo el tiempo que es lo que quieres hacer...

Sobre tu problema, ¿en que línea exactamente te da ese error?

Otro detalle, si vas a usar números reales o flotantes, es mejor que uses el tipo de datos Double y no Real...



Saludos...

Delphius 02-09-2008 17:12:21

Hola, a manera de observación les aconsejaría que no se limiten tan apresuradamente a sacar conclusiones de la grafía de una persona. Es muy posible que sea una persona con dislexia.

Con respecto al problema no logro ver donde puede estar el error. Yensis22, sería útil que aportes mayores detalles del caso.

Lo que intuyo que puede ser el problema es un conflicto entre el punto y la coma como símbolo decimal. Para ello hay algunas opciones:
1. Alterar la configuración reginal
2. Establecer la variable DECIMAL_SEPARATOR con el caracter adecuado.
3. Implementar algún mecanismo de control para que cambie el caracter decimal por el otro.
4. etc...

Saludos,

Yensis22 02-09-2008 17:56:30

Ok Por las sugerencias
 
Ok Por las sugerencias..

Cita:

Ese error me lo manda cuando lo ejecuto y le doy clic en el botón cálculo pero no me marca ninguna línea. Aquí de bajo esta la imagen del from de factura y el código del proyecto completo. Por si lo quiere chequear.
Código Delphi [-]
procedure TFFacturacion.BitBtn1Click(Sender: TObject);
var

a,b,c,d,e,f,g,h :real;

begin
 a:= StrTofloat(Editcantidad.Text);
 b:= StrTofloat(EMonto.Text);
 d:= StrTofloat(EDesc.Text);
 f:= StrTofloat(EImp.Text);
 c:= a * b;
 e:= c * d / 100;
 g:= (c - e) * f / 100;
 h:= c - e + g;
 ESTotal.Text:= floatToStr(c);
 EDescuento.Text:=floatToStr(e);
 EImpuesto.Text:=floatToStr(g);
 ETotal.Text:= floatToStr(Round(h));
 Qfacturacion.SQL.Text := 'Insert into Facturacion Values ('+QuotedStr(ECodFactura.Text)+', '+
 QuotedStr(EdiCliente.Text)+ ', '+ LabDireccion.Caption+ ' :FechaFactura, '+QuotedStr(Editequipo.Text)+ ', '+
 QuotedStr(EditRNC.Text)+ ', '+QuotedStr(DBComboBox2.Text)+', '+QuotedStr(EMonto.Text)+', '+
 QuotedStr(Editcantidad.Text)+', '+QuotedStr(ETotal.Text)+', '+QuotedStr(EImp.Text)+', '+
 QuotedStr(EDesc.Text)+', '+QuotedStr(DBComboBox3.Text)+ ', '+QuotedStr(ESTotal.Text)+ ', '+
 QuotedStr(EDescuento.Text)+', '+QuotedStr(EImpuesto.Text)+')';
 Qfacturacion.Parameters.ParamByName('FechaFactura').Value:= DateToStr(DateTimePicker1.Date);
 Qfacturacion.ExecSQL;

end;


Imagen http://www.4shared.com/file/61462793...cturacion.html

Código fuente http://www.4shared.com/file/61464202...5/sistema.html

Cita:

Por otra parte de este mismo from de factura yo tengo un botón busca, que lo que yo quiero que el me realice es que cunado yo lo llame me traiga otro from eso el me lo hace bien, pero que cuando yo le de le de clic a un cliente este me lo inserte en el edit de cliente de la factura esto lo que no me esta haciendo este es el código que tengo es este botón esta variable Nom_Cliente esta de clarada como publica Nom_Cliente: string; en el otro from que se llama FRegistroclient.



Código Delphi [-]
 
FRegistroclient:=TFRegistroclient.Create(self);
   try
    FRegistroclient.ShowModal;
   finally
   If FRegistroclient.Nom_Cliente <> '' then
   EdiCliente.Text := FRegistroclient.Nom_Cliente;
   LabDireccion.Caption:= QuotedStr(FRegistroclient.Direccion);
   FRegistroclient.Free;
   end;

end;




Cita:

Código completo del from
Código Delphi [-]
unit FFactura;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, StdCtrls, Buttons, DBCtrls, Grids, DBGrids, Mask, ExtCtrls,
  ComCtrls, ADODB;
type
  TFFacturacion = class(TForm)
    Label1: TLabel;
    Bevel2: TBevel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    GroupBox1: TGroupBox;
    Panel2: TPanel;
    Label2: TLabel;
    Label15: TLabel;
    Label11: TLabel;
    Label3: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label20: TLabel;
    DBText3: TDBText;
    DBComboBox2: TDBComboBox;
    DBComboBox3: TDBComboBox;
    DBGrid1: TDBGrid;
    DBMemo1: TDBMemo;
    GroupBox2: TGroupBox;
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    DataSource3: TDataSource;
    DateTimePicker1: TDateTimePicker;
    Qfacturacion: TADOQuery;
    ECodFactura: TEdit;
    EdiCliente: TEdit;
    Editequipo: TEdit;
    Editcantidad: TEdit;
    EditRNC: TEdit;
    Panel1: TPanel;
    Label7: TLabel;
    Label8: TLabel;
    Label19: TLabel;
    Button2: TButton;
    EMonto: TEdit;
    EDescuento: TEdit;
    EImpuesto: TEdit;
    ETotal: TEdit;
    Button1: TButton;
    EDesc: TEdit;
    EImp: TEdit;
    ESTotal: TEdit;
    Label26: TLabel;
    Label4: TLabel;
    BSeleccionar: TSpeedButton;
    Label5: TLabel;
    LabDireccion: TLabel;
    BSeleccionarComercial: TSpeedButton;
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    BitBtn1: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure BSeleccionarClick(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure BSeleccionarComercialClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    { Private declarations }
  public
    { Public declarations }
  end;
var
  FFacturacion: TFFacturacion;
implementation
uses   FRegiclientes, FRegitequip;
                      
{$R *.dfm}
procedure TFFacturacion.FormCreate(Sender: TObject);
begin
DateTimePicker1.Date:= Now;
Qfacturacion.SQL.Text:='SELECT DISTINCTROW Max([Facturacion].[NumeroFactura])AS [NumeroFactura]FROM Facturacion';
   Qfacturacion.Open;
   ECodFactura.Text:= IntToStr(Qfacturacion.Fields[0].AsInteger+3);
end;
procedure TFFacturacion.BSeleccionarClick(Sender: TObject);
begin
FRegistroclient:=TFRegistroclient.Create(self);
   try
    FRegistroclient.ShowModal;
   finally
   If FRegistroclient.Nom_Cliente <> '' then
   EdiCliente.Text := FRegistroclient.Nom_Cliente;
   LabDireccion.Caption:= QuotedStr(FRegistroclient.Direccion);
   FRegistroclient.Free;
   end;
end;
procedure TFFacturacion.SpeedButton7Click(Sender: TObject);
begin
Close;
end;
procedure TFFacturacion.BSeleccionarComercialClick(Sender: TObject);
begin

 Fregequipos:=TFregequipos.Create(self);
   try
    Fregequipos.ShowModal;
   finally
   If Fregequipos.Dequipo <> '' then
   EdiCliente.Text := Fregequipos.Dequipo;
 //  LabDireccion.Caption:= QuotedStr(Fregequipos.Direccion);
   Fregequipos.Free;

      end;
   end;
procedure TFFacturacion.BitBtn1Click(Sender: TObject);
var
a,b,c,d,e,f,g,h :real;
begin
 a:= StrTofloat(Editcantidad.Text);
 b:= StrTofloat(EMonto.Text);
 d:= StrTofloat(EDesc.Text);
 f:= StrTofloat(EImp.Text);
 c:= a * b;
 e:= c * d / 100;
 g:= (c - e) * f / 100;
 h:= c - e + g;
 ESTotal.Text:= floatToStr(c);
 EDescuento.Text:=floatToStr(e);
 EImpuesto.Text:=floatToStr(g);
 ETotal.Text:= floatToStr(Round(h));
 Qfacturacion.SQL.Text := 'Insert into Facturacion Values ('+QuotedStr(ECodFactura.Text)+', '+
 QuotedStr(EdiCliente.Text)+ ', '+ LabDireccion.Caption+ ' :FechaFactura, '+QuotedStr(Editequipo.Text)+ ', '+
 QuotedStr(EditRNC.Text)+ ', '+QuotedStr(DBComboBox2.Text)+', '+QuotedStr(EMonto.Text)+', '+
 QuotedStr(Editcantidad.Text)+', '+QuotedStr(ETotal.Text)+', '+QuotedStr(EImp.Text)+', '+
 QuotedStr(EDesc.Text)+', '+QuotedStr(DBComboBox3.Text)+ ', '+QuotedStr(ESTotal.Text)+ ', '+
 QuotedStr(EDescuento.Text)+', '+QuotedStr(EImpuesto.Text)+')';
 Qfacturacion.Parameters.ParamByName('FechaFactura').Value:= DateToStr(DateTimePicker1.Date);
 Qfacturacion.ExecSQL;

end;
end.

Caral 02-09-2008 18:03:27

Hola
Voy a revisarlo, no te Perez y Pites.
Saludos

Delphius 02-09-2008 18:08:24

Hola Yensis22,
Por lo que veo del código que muestras, no le encuentro el error.
Sigo pensando que se debe al separador decimal. Y en esto influye tanto la configuración regional que empleas como también la variable global DecimalSeparator (me había equivocado antes) que emplea Delphi internamente para hacer las operaciones con los números flotantes.

Para más información al respecto ve este hilo.

Saludos,

Caral 02-09-2008 18:12:22

Hola
No se si reir o llorar.
Saludos

Delphius 02-09-2008 18:18:33

Cita:

Empezado por Caral (Mensaje 311134)
Hola
No se si reir o llorar.
Saludos

:confused: ¿Que pasa amigo?
No entiendo. ¿Porqué lo dices?:confused:

Saludos,

Caral 02-09-2008 19:15:01

Hola
Por supuesto que me puedo equivocar y al ser novato con mas razón, pero casi podría asegurar que el código tiene un error y muy serio, mas sabiendo que esta sacado de un código que yo mismo hice.
Saludos

Yensis22 02-09-2008 19:38:00

si es del tutorial
 
SI es del tutorial..

Cita:


Es del tutoría pero es que tengo que adatárselo a mi from que muy diferente y es que no estoy untando frem en ese por que lo tengo todo en esa mismo from y es que tengo que terminar aplicación. y se lo mucho que me han ayudando por eso le doy las gracias pero es que soy nuevo en esto


Delphius 02-09-2008 19:40:05

Cita:

Empezado por Caral (Mensaje 311149)
Hola
Por supuesto que me puedo equivocar y al ser novato con mas razón, pero casi podría asegurar que el código tiene un error y muy serio, mas sabiendo que esta sacado de un código que yo mismo hice.
Saludos

¿A que error te refieres amigo?

Para mi es muy claro y evidente que el error de invalid floating point value es que se trata de una confusión en el signo decimal.

Se está ingresando un punto y se espera una coma, o a la inversa... se está ingresando una coma y se espera un punto.

Fuera de eso no hay nada de malo. ¿O soy yo el que está equivocado y no veo donde está el error:confused:?

Saludos,

Caral 02-09-2008 19:40:51

Hola
Mira cuantos campos tienes en la tabla facturacion.
Ahora mira cuantos campos vas a insertar.
Ves algo diferente?.
Saludos

Caral 02-09-2008 19:43:21

Hola
Perdona amigo, pensé que habías bajado el programa que puso Yensis22.
Si no lo bajaste no puedes ver el error.
Fue error mio creer que lo hiciste.
Disculpa.
Saludos

Yensis22 02-09-2008 19:50:50

hola
 
el campo comentario es que no estoy insertando

Caral 02-09-2008 19:51:31

Hola
Voy a tratar de ser mas especifico:
Hay dos formas de insertar en una tabla.
1- La forma que ya tienes:
De esta manera la sentencia sql interpreta que se hará una inserción completa a la tabla, osea que contendrá TODOS los campos y ademas se insertaran en el mismo ORDEN en que están en la tabla.
2- Cuando se quieren insertar solo en algunos campos de la tabla:
En este caso se tendrá que indicar en cuales de los campos se querrá hacer la inserción.
Como ves hay una diferencia, ese es el error o por lo menos uno de ellos.
Saludos


La franja horaria es GMT +2. Ahora son las 07:29:57.

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