Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2006
freddiaz07 freddiaz07 is offline
Miembro
 
Registrado: jun 2006
Posts: 18
Poder: 0
freddiaz07 Va por buen camino
Grabar En SQL Campos Decimales, Solo me graba enteros? Con Codigo

hola amigos anteriormente les habia escrito sobre mi duda, la aplicacion no me esta grabando los decimales, solo la parte entera ej. 15.20 solo graba 15. en el codigo esta resaltado con rojo la liena del problema. los campos estan bien definidos en las tablas. todo lo demas me funciona bien
Código Delphi [-]
//..............................//
 
procedure TForm2.BitBtn2Click(Sender: TObject);
Var
i, j, fila : byte;
begin
For j:= 1 to (data.RowCount-1) do
begin
If Strtofloat(Data.Cells[5,j]) < Strtofloat(Data.Cells[6,j]) Then
Begin
Application.MessageBox('No puede Entregar.', 'Error', mb_OK+mb_IconWarning);
Data.Cells[6,j]:= '0';
End;
End;
AdoTable1.TableName:='DESPACHO';
ADOTable1.Open;
//Table1.Edit; Modificar
//Table1.Delete; Eliminar
AdoTable1.Insert;
AdoTable1.Fields.FieldByName('Numero').AsString := Label8.Caption;
AdoTable1.Fields.FieldByName('Factura').AsString :=Label4.Caption;
AdoTable1.Fields.FieldByName('Fecha').AsDateTime := StrToDate(label7.Caption);
AdoTable1.Fields.FieldByName('Anulado').AsString :='0';
AdoTable1.Post;
AdoTable1.Close;
AdoTable1.TableName:='ITEMDESP';
AdoTable1.Open;
i:=1;
While Data.Cells[data.Row,i]<> '' Do
Begin
Fila:=i;
If Data.Cells[6,Fila]<> '0' Then
Begin
AdoTable1.Insert;
AdoTable1.Fields.FieldByName('Numero').AsString := Label8.Caption;
AdoTable1.Fields.FieldByName('Codart').AsString := Data.Cells[0,Fila];
AdoTable1.Fields.FieldByName('Desart').AsString := Data.Cells[1,Fila];
AdoTable1.Fields.FieldByName('Almacen').AsString := Data.Cells[2,Fila];
AdoTable1.Fields.FieldByName('CantDesp').AsFloat :=Strtofloat(Data.Cells[6,Fila]);
// AdoTable1.Fields.FieldByName('CantDesp').AsFloat :=Strtofloat(edit1.Text);
AdoTable1.Fields.FieldByName('Anulado').AsString:='0';
AdoTable1.Fields.FieldByName('Factura').AsString := Label4.Caption;
AdoTable1.Post;
End;
i:=i+1;
End;

Última edición por vtdeleon fecha: 20-09-2006 a las 19:19:22.
Responder Con Cita
  #2  
Antiguo 20-09-2006
reina reina is offline
Miembro
 
Registrado: ago 2005
Ubicación: Capital Federal-La Plata (Bs As)
Posts: 147
Poder: 19
reina Va por buen camino
Hola! desde donde estas viendo lo que te graba??
Proba con value
salu2
Responder Con Cita
  #3  
Antiguo 20-09-2006
freddiaz07 freddiaz07 is offline
Miembro
 
Registrado: jun 2006
Posts: 18
Poder: 0
freddiaz07 Va por buen camino
Exclamation No Entiendo?

Hola Amiga No entiendo tu repuesta todos las operaciones que realizo con el programa me las hace bien pero al querer grabar decimales solo me toma la parte entera ej 15,20 solo me graba 15. debe ser que me falta una conversion o algo para que me permita grabar decimales en la base de datos esta bien definido como tipo decimal.

lo que me dices de value noce donde colocarlo si me puedes escribir un ejemplo.


Gracias de antemano
Responder Con Cita
  #4  
Antiguo 21-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola freddiaz07
Veo que la variable fila la declaras tipo Byte, es para enteros, no decimales
declara fila tipo real o float, con esto sera suficiente pienso.
Saludos
Responder Con Cita
  #5  
Antiguo 21-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola algo asi:
Código Delphi [-]
Var
i, j : byte;
fila : real;
begin
Saludos
Responder Con Cita
  #6  
Antiguo 21-09-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
No, no, fila es un entero que hace referencia a la matriz del Data.Cell[x,y], eso no tiene nada que ver.

Cita:
Empezado por Reina
Hola! desde donde estas viendo lo que te graba??
Proba con value
salu2
Lo que te decia Reina es que en lugar de usar AsFloat debes usar Value.



Código Delphi [-]
AdoTable1.Fields.FieldByName('CantDesp').Value :=Strtofloat(Data.Cells[6,Fila]);



Sin embargo se me hace raro que te omita los decimales, prueba cambiando el VALUE haber si se resuelve el problema.


La otra cuestión es si pruebas pasando directamente un valor Real y te daras cuenta de que lado esta el error, por ejemplo:


Código Delphi [-]
AdoTable1.Fields.FieldByName('CantDesp').Value := 12.56;
Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #7  
Antiguo 21-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Bueno ya que meti las patas en la primera tengo derecho a repetir, asi aprendo:
Código Delphi [-]
AdoTable1.Fields.FieldByName('CantDesp').AsFloat :=Strtofloat(Data.Cells[6,Fila]);
Me parece que si viene de StrToFloat debe venir de string, ya que hace la transformacion.
Código Delphi [-]
AdoTable1.Fields.FieldByName('CantDesp').AsString :=Strtofloat(Data.Cells[6,Fila]);
Saludos
Responder Con Cita
  #8  
Antiguo 21-09-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
No quisiera decirlo pero creo que hay otro error en tu sentencia.

Código Delphi [-]
AdoTable1.Fields.FieldByName('CantDesp').AsString :=Strtofloat(Data.Cells[6,Fila]);

//debería ser 

AdoTable1.Fields.FieldByName('CantDesp').AsString := Data.Cells[6,Fila];

Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 21-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Gracias egostar
Cita:
No quisiera decirlo pero creo que hay otro error en tu sentencia.
Si no lo dices como se aprende?
Gracias por decirlo y tomarte tu tiempo, lo analice y aprendi.
Saludos
Responder Con Cita
  #10  
Antiguo 21-09-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Caral
Gracias egostar

Si no lo dices como se aprende?
Gracias por decirlo y tomarte tu tiempo, lo analice y aprendi.
Saludos
Hombre, pues que bueno que haya servido de algo, pero a todo esto.....

Que es lo que nuestro amigo freddiaz07 ha analizado y/o aprendido, ¿ya habrá resuelto su problema?, ¿como lo resolvió?. No ha vuelto a mencionar palabra alguna, sería bueno que nos actualizara, ¿no lo crees?.

Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #11  
Antiguo 21-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino

Me he dado cuenta no solo en este hilo sino en otros que parece
Cita:
Agarro lo que me interesa y luego me voy
Dejando a las personas que se tomaron su tiempo con por lo menos la duda razonable de si aprendieron o no.
No te preocupes, que hay quienes como yo que le sacamos el jugo y por lo menos damos un GRACIAS POR TU AYUDA, que es lo que creo realmente vale.
Saludos
Responder Con Cita
  #12  
Antiguo 21-09-2006
freddiaz07 freddiaz07 is offline
Miembro
 
Registrado: jun 2006
Posts: 18
Poder: 0
freddiaz07 Va por buen camino
No Encuentro Solucion

Hola amigos gracias por sus repuesta pero todavia nada. cuando coloco la variable fila tipo: real o float me salen errores de incopatibilidad, cuando coloco .value me hace los mismo solo enteros y la otra solucion que era de quitar el .Asfloat por .Asstring me sale un error de doubles and string.

de todas maneras estoy dandole a pie en esa sola tabla a ver que pasa con otro programa a ver si resuelvo de todas maneras Gracias.

Los Foros son para Ayudarnos.
Responder Con Cita
  #13  
Antiguo 21-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Realmente no se que pasa pero????
Cuando tengo un problema que no puedo resolver trato de ver que pasa el el codigo sql dando un mensaje asi:
Debajo del codigo que me da el Problema:
Código Delphi [-]
Begin
AdoTable1.Insert;
AdoTable1.Fields.FieldByName('Numero').AsString := Label8.Caption;
AdoTable1.Fields.FieldByName('Codart').AsString := Data.Cells[0,Fila];
AdoTable1.Fields.FieldByName('Desart').AsString := Data.Cells[1,Fila];
AdoTable1.Fields.FieldByName('Almacen').AsString := Data.Cells[2,Fila];
AdoTable1.Fields.FieldByName('CantDesp').AsFloat :=Strtofloat(Data.Cells[6,Fila]);
// este mensaje se usa para saber si el sql envia la informacion que quiero      
Showmessage(AdoTable1.Fields.FieldByName('CantDesp').AsFloat :=Strtofloat(Data.Cells[6,Fila]);
//
// AdoTable1.Fields.FieldByName('CantDesp').AsFloat :=Strtofloat(edit1.Text);
AdoTable1.Fields.FieldByName('Anulado').AsString:='0';
AdoTable1.Fields.FieldByName('Factura').AsString := Label4.Caption;
AdoTable1.Post;
End;
Ta vez veas que pasa
Saludos
Responder Con Cita
  #14  
Antiguo 21-09-2006
freddiaz07 freddiaz07 is offline
Miembro
 
Registrado: jun 2006
Posts: 18
Poder: 0
freddiaz07 Va por buen camino
Thumbs up Ya Encontre Solucion

Hola Amigos ya encontre la solucion tube que cambiar el tipo de campo en la tabla sql de decimal a float y me funciona Gracias.
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
Redondear numeros decimales a enteros.... uper Varios 6 26-07-2012 16:52:45
Formatear números enteros y decimales quade C++ Builder 10 13-10-2011 16:09:54
Grabar En SQL Campos Decimales, Solo me graba enteros? freddiaz07 SQL 2 07-09-2006 16:24:04
Campos enteros en los DBGrid dmagui OOP 1 03-02-2006 19:45:31
Cuando trabajan dos usuarios simultaneos solo graba la factura de uno tulio Firebird e Interbase 11 28-10-2003 12:10:34


La franja horaria es GMT +2. Ahora son las 00:04:16.


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