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)

Delphius 02-09-2008 19:55:24

Cita:

Empezado por Caral (Mensaje 311159)
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

Lo he descargado pero no lo he visto con demasiada atención.
Si lo dices amigo, es posible que haya algo más que el error del separador decimal.

A ver... ya mi fijo de que se trata esto.

Saludos,

Delphius 02-09-2008 20:13:36

Cita:

Empezado por Caral (Mensaje 311163)
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

Muy cierto Carlos!
Tienes razón. En caso de no insertar todos los campos se debe indicar que campos en la sentencia SQL:

Código SQL [-]
insert into tabla (listado_de_campos) values (tus_datos)

Y disculpen que sea pesadito:D, que vea el asunto del separador decimal.

Saludos,

Yensis22 02-09-2008 20:20:36

solucion
 
rea

Cita:

Le argue el campo comentario pero que lo inserte en la tabla pero , no me da resultado por
Código Delphi [-]
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)+')', '+QuotedStr(DBMemo1.Text)+')';
 Qfacturacion.Parameters.ParamByName('FechaFactura').Value:= DateToStr(DateTimePicker1.Date);
 Qfacturacion.ExecSQL;

end;

Yensis22 02-09-2008 20:22:58

cual es la
 
cual es la solucion
de pues de cambio me da error
en la line que esta rojo

Yensis22 02-09-2008 20:29:20

por favor
 
:(Que es que tengo que ententrgar
este tarea mañana
en la mañana:(

maeyanes 02-09-2008 20:34:09

Hola...

La línea debería ser:

Código Delphi [-]
QuotedStr(EDescuento.Text)+', '+QuotedStr(EImpuesto.Text)+', '+QuotedStr(DBMemo1.Text)+')';

Caral 02-09-2008 20:42:16

Hola
Aparte de lo dicho acertadamente por maeyanes:
1:
Código Delphi [-]
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)+', '+QuotedStr(DBMemo1.Text)+')';
 Qfacturacion.Parameters.ParamByName('FechaFactura').Value:= DateToStr(DateTimePicker1.Date);
 Qfacturacion.ExecSQL;

end;
2-
Código Delphi [-]
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)+', '+h+', '+QuotedStr(EImp.Text)+', '+
 QuotedStr(EDesc.Text)+', '+QuotedStr(DBComboBox3.Text)+ ', '+c+ ', '+
 e+', '+g+', '+QuotedStr(DBMemo1.Text)+')';
 Qfacturacion.Parameters.ParamByName('FechaFactura').Value:= DateToStr(DateTimePicker1.Date);
 Qfacturacion.ExecSQL;

end;
Tu escoges.
Saludos

Caral 02-09-2008 21:07:00

Hola
Me da la impresión de que ayudar a Yensis22 es mas difícil que esto:
Saludos

Yensis22 02-09-2008 21:33:43

cambio
 
Cambio relizados

Cita:

Gracias

Ya realice la corrección de codigo, pero me esta mandando otro error (errror de sintaxis (falta operación) en la expresión de consulta "?") y marca la ultima línea de la operación de calculo (Qfacturacion.ExecSQL;)

Caral 02-09-2008 21:35:56

Hola
Cual de las dos opciones as puesto 1 o 2?
Saludos

Yensis22 02-09-2008 21:38:49

la uno
 
la uno es la que es coji

Yensis22 02-09-2008 21:43:55

recuden
 
Tambien lo que le dije mas ariba, que eso no me esta funcionando

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;

Caral 02-09-2008 21:46:39

Hola
te as fijado que todos los datos que vas a insertar contengan algo?.
Saludos

Yensis22 02-09-2008 21:46:59

disculpen
 
Tambien lo que le dije mas ariba, que eso no me esta funcionando


[quote]
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.
[quote]

Código Delphi [-]
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;

Yensis22 02-09-2008 21:59:04

si
 
si tene datos lo que voy a insertar

Cita:

Si Pero en este from no me esta funcionando ni la inserción de dato ni los cálculos yo que lo estoy molestando mucho pero es que tengo que entrega esto mañana que es un trabajo fina de programación de la unversida y tengo vario día trabando en este proyecto y ese from es que me falto por favor ayúdeme que estoy, ya contra la pare y le agradezco por toda lo que me han ayudado y pos su paciensa con migo.

coso 02-09-2008 22:24:57

hola,
Código Delphi [-]
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;
esto te dara excepcion la segunda vez q lo uses

PD : si vamos a hablar, por favor, usa una letra normal, no uses ninguna etiqueta para tus escritos, usa etiquetas [ delphi],[ /delphi] para el codigo, y [ quote], [/ quote] para comentarios sobre mensajes anteriores

coso 02-09-2008 22:29:21

otro detalle, te esta llamando continuamente al timer TFSplash.Timer1Timer, aun cuando no hay ningun splash visible

coso 02-09-2008 22:40:18

Antes de poner la sql.text, deberias hacer QFacturacion.Active := false;
usando la opcion uno, los valores reales que transformas a string NO deben ir con el quotedstr.

coso 02-09-2008 22:43:25

antes del execsql, podrias hacer
Código Delphi [-]
showmessage(QFacturacion.SQL.Text)
, y miras si es todo correcto, a ver si es que estas construyendo mal la cadena por alguna variable.

coso 02-09-2008 23:00:16

Bueno creo q el problema q tenias antes era ese, el de poner en quotedstr los valores decimales... desde mi pc no puedo ni insertar facturas ni clientes, estan todas las tablas cerradas, no se si es por el usuario o bien por otra cosa...si tienes alguna duda concreta, exponla q le echamos un vistazo ;) saludos.


La franja horaria es GMT +2. Ahora son las 18:30:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi