Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking Convertir , por . en una consulta sql

hola, estoy con un inconveniente, estoy actualizando registros desde una tabla a otra asi:
Código Delphi [-]
procedure TF_FACTURACION.DESHACERClick(Sender: TObject);
VAR
CODIGO, CANTIDAD: INTEGER;
begin
CODIGO:=dm.Q_DET_FACT.FieldValues['CODIGO'];
CANTIDAD:=dm.Q_DET_FACT.FieldValues['CANTIDAD'];

DM.CONSULTA.CLOSE;
DM.CONSULTA.SQL.Clear;
DM.CONSULTA.SQL.Add('UPDATE STOCK SET CANTIDAD=CANTIDAD+'+INTTOSTR(CANTIDAD)+' WHERE COD_STOCK='+inttostr(CODIGO));
DM.CONSULTA.ExecSQL;
mi inconveniente es que al descontar un numero con decimal (1,5) lo redondea (2) y lo que necesito es que descuente (1,5)
Investigando me entere de que en sql toma (.) en vez de (,), creo que es por eso que me redondea al actualizar la tabla, Alguna sugerencia?
Responder Con Cita
  #2  
Antiguo 08-09-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Pásale los valores a la consulta vía parámetros.

Otra cosa que veo es que tus variables las declaras como enteros, si quieres manejar valores decimales debes usar el tipo Double...



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 08-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No entiendo que tiene que ver el código que estas poniendo con el redondeo.

CANTIDAD vaya y pase, pero... el campo CODIGO esta declarado como NUMERIC ????

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 08-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Como te dice maeyanes, siempre es más seguro el uso de parámetros.

Además a CANTIDAD siempre le estas sumando un valor entero, de no ser así, tendrías un error de conversión al aplicar la función IntToStr.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 09-09-2011
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola. Si declaras la variable CANTIDAD como INTEGER, no esperes que funcione con números fraccionarios...
Debes definirla de tipo double.

Código Delphi [-]
procedure TF_FACTURACION.DESHACERClick(Sender: TObject);
VAR CODIGO: String;  //En otro hilo tratas los códigos como string, no sé si éste es el caso también
    CANTIDAD: Double;
begin
  CODIGO:=dm.Q_DET_FACT.FieldValues['CODIGO'];
  CANTIDAD:=dm.Q_DET_FACT.FieldValues['CANTIDAD'];
  DM.CONSULTA.CLOSE;
  DM.CONSULTA.SQL.Clear;
  DM.CONSULTA.SQL.Add('UPDATE STOCK SET CANTIDAD=CANTIDAD+:PARCANTIDAD WHERE COD_STOCK= :PARCODIGO');
  DM.CONSULTA.ParamByName('ParCODIGO').AsString:=CODIGO;
  DM.CONSULTA.ParamByName('ParCANTIDAD').AsFloat:=CANTIDAD;
  DM.CONSULTA.ExecSQL;
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...

Última edición por defcon1_es fecha: 09-09-2011 a las 10:16:18.
Responder Con Cita
  #6  
Antiguo 13-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking

Cita:
Empezado por defcon1_es Ver Mensaje
Hola. Si declaras la variable CANTIDAD como INTEGER, no esperes que funcione con números fraccionarios...
Debes definirla de tipo double.

Código Delphi [-]
procedure TF_FACTURACION.DESHACERClick(Sender: TObject);
VAR CODIGO: String; //En otro hilo tratas los códigos como string, no sé si éste es el caso también
CANTIDAD: Double;
begin
CODIGO:=dm.Q_DET_FACT.FieldValues['CODIGO'];
CANTIDAD:=dm.Q_DET_FACT.FieldValues['CANTIDAD'];
DM.CONSULTA.CLOSE;
DM.CONSULTA.SQL.Clear;
DM.CONSULTA.SQL.Add('UPDATE STOCK SET CANTIDAD=CANTIDAD+:PARCANTIDAD WHERE COD_STOCK= :PARCODIGO'); DM.CONSULTA.ParamByName('ParCODIGO').AsString:=CODIGO; DM.CONSULTA.ParamByName('ParCANTIDAD').AsFloat:=CANTIDAD;
DM.CONSULTA.ExecSQL;
no me va a funcionar porque designo el valor de cantidad y codigo al las variables CODIGO Y CANTIDAD y luego los elimino asi:
Código Delphi [-]
procedure TF_FACTURACION.DESHACERClick(Sender: TObject);
VAR
CODIGO: INTEGER;
CANTIDAD: DOUBLE;
begin
CODIGO:=dm.Q_DET_FACT.FieldValues['CODIGO'];
CANTIDAD:=dm.Q_DET_FACT.FieldValues['CANTIDAD'];
dm.Q_DET_FACT.Delete;//ACA ELIMINO
DM.CONSULTA.CLOSE;
DM.CONSULTA.SQL.Clear;
DM.CONSULTA.SQL.Add('UPDATE STOCK SET CANTIDAD=CANTIDAD+'+INTTOSTR(CANTIDAD)+' WHERE COD_STOCK='+inttostr(CODIGO));
DM.CONSULTA.ExecSQL;

Última edición por negrokau fecha: 13-09-2011 a las 00:10:57.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir una formato de fecha en consulta sql ingabraham Varios 2 03-09-2010 21:25:59
Convertir String a Integer en consulta SQL Delphitest SQL 6 25-05-2010 19:36:20
Problema con consulta,'no se puede convertir tipo string a doble' look SQL 4 29-05-2008 22:00:00
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Convertir un campo string a entero en consulta serhasae SQL 4 24-08-2006 20:00:02


La franja horaria es GMT +2. Ahora son las 09:10:50.


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
Copyright 1996-2007 Club Delphi