Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
Sugerencias?...

Hola amigos, me tope con un problema,veran..

en mi aplicacion, necesito insertar unos datos en una tabla con el update, eso me funcionaba cuando le escribia unos numeros, pero ahora, se tiene que insertar el resultado que se obtenga de una serie de operaciones antes, esas si se hacen bien, el problema es cuando quiero actualizar me da este error:

"error converting data type varchar to float"

los datos de la tabla estan en float..aunque creoo que ya se donde esta mi error..

despues de hacer las operaciones, esto es lo que tengo:


Código:


//--------------------------------------------------------------------
//-------------ACTUALIZAR  DATOS---------------------------------
AnsiString parametro,parametro2,parametro3,ID1,P1,ID2,P2,ID3,P3,ID4,IDG;
ADODataSet2->Close();//primero cierro el componente para volver a cargarlo


 parametro = ComboBox1->Text; //ANIO
 parametro3 = ComboBox3->Text; //LOCALIDAD


 ID1 = DBEdit3->Text.ToDouble();     //ANIO
 P1 = DBEdit4->Text.ToDouble();    //TRIMESTRE
 ID2 = DBEdit7->Text.ToDouble();    //LOCALIDAD
 P2 = DBEdit8->Text.ToDouble(); //ANO
 ID3 = DBEdit11->Text.ToDouble();//LOCALIDAD
 P3 = DBEdit15->Text.ToDouble(); //ANUAL
 ID4 = DBEdit14->Text.ToDouble(); //CASOS
 IDG = DBEdit16->Text.ToDouble();


 ADODataSet2->CommandText = "  UPDATE DiabetesMellitus_AnualMunicipios  SET ID_Control = '"+ID1+"', P_Control = '"+P1+"',ID_Informacion = '"+ID2+"',P_Informacion = '"+P2+"', ID_Promocion1 = '"+ID3+"', P_Promocion ='"+P3+"', ID_Promocion2 = '"+ID4+"',ID_General = '"+IDG+"'  where Año = '"+parametro+"' AND Localidad = '"+parametro3+"'SELECT * FROM DiabetesMellitus_AnualMunicipios";


       ADODataSet2->Open();//Aca abres la vista....

  Tabla_DiabetesAnual->Close();
Tabla_DiabetesAnual->Open();


  ShowMessage("LISTO");
yo pienso que mi error esta en que los datos ID,P,...etc, los tengo como AnsiString, y al querer insertarlos me da el error, porque el resultado de las operaciones es con decimales (29.334498760123).
Quise corregirlo declarandolo como float, pero me marcaba varios errores..


aqui les dejo una imagen del programa:



los resultados con todos los decimales son los que quiero insertar en la tabla..


creo que el error es porque quiero insertar los datos con decimal a una tabla donde esta definido como float..que podre hacer?, cambiar el tipo de dato en la tabla?, o hacer algo en codigo?



de antemano agradezco su atencion..


un saludo..

Última edición por Bare fecha: 02-03-2010 a las 06:32:00.
Responder Con Cita
  #2  
Antiguo 02-03-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
No muestras que tipo tienen las variables ID1, P1,ID2, P2, ID3, P3, ID4 y IDG.

En tu código se asume que son tipo double, si no es así, ese es el origen de tu error.

Saludos.
Responder Con Cita
  #3  
Antiguo 03-03-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
lo de text.todouble se lo agregue recien para ver si por eso me marcaba el error, porque arriba estan definidos como ansistring.
ese error solo me lo da cuando quiero meter datos con punto decimal, porque si le meto numeros enteros funciona bien..
no se porque me lo marque,la tabla donde se insertan los datos esta definida como tipo float.....

no entiendo muy bien lo de las variables, las defino como double? o que puedo hacer?...

Saludos..
Responder Con Cita
  #4  
Antiguo 03-03-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Bare Ver Mensaje
....no entiendo muy bien lo de las variables, las defino como double? o que puedo hacer?...
Si:
Código:
double ID1 = DBEdit3->Text.ToDouble();     //ANIO
Ten en cuenta el tipo de separador decimal que tienes definido en el S.O. si es punto o coma, pues a la hora de convertir el valor puedes tener errores de conversión.

Saludos.
Responder Con Cita
  #5  
Antiguo 04-03-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
que tal escafandra, ya lo defini como double, pero me marca este error:

"Ilegal use of floating point".

el codigo quedo asi:

Código:
AnsiString parametro,parametro2,parametro3;//ID1,P1,ID2,P2,ID3,P3,ID4,IDG;
ADODataSet2->Close();//primero cierro el componente para volver a cargarlo


 parametro = ComboBox1->Text; //ANIO
 parametro3 = ComboBox3->Text; //LOCALIDAD


double ID1 = DBEdit3->Text.ToDouble();     //ANIO
 double P1 = DBEdit4->Text.ToDouble();    //TRIMESTRE
 double ID2 = DBEdit7->Text.ToDouble();    //LOCALIDAD
double P2 = DBEdit8->Text.ToDouble(); //ANO
double ID3 = DBEdit11->Text.ToDouble();//LOCALIDAD
double P3 = DBEdit15->Text.ToDouble(); //ANUAL
double ID4 = DBEdit14->Text.ToDouble(); //CASOS
double IDG = DBEdit16->Text.ToDouble();


 ADODataSet2->CommandText = "  UPDATE DiabetesMellitus_AnualMunicipios  SET ID_Control = '"+ID1+"', P_Control = '"+P1+"',ID_Informacion = '"+ID2+"',P_Informacion = '"+P2+"', ID_Promocion1 = '"+ID3+"', P_Promocion ='"+P3+"', ID_Promocion2 = '"+ID4+"',ID_General = '"+IDG+"'  where Año = '"+parametro+"' AND Localidad = '"+parametro3+"'SELECT * FROM DiabetesMellitus_AnualMunicipios";


       ADODataSet2->Open();//Aca abres la vista....
   //   ADODataSet5->Refresh();

  Tabla_DiabetesAnual->Close();


Tabla_DiabetesAnual->Open();

el error me lo marca aqui...'"+ID1+"', como ahora es de tipo double no se puede usar asi, como se escribe para asignarle esa variable en el campo de la tabla?

y fijate que no me habia fijado eso que mencionabas del separador decimal, yo pensaba que era punto y no es asi..., ..es coma, eso se lo puedo cambiar en builder? o tengo que modificar algo en el sistema?, o se puede dejar asi y meterlo en la tabla de sql?



Saludos
Responder Con Cita
  #6  
Antiguo 04-03-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
¿Que tipo de separador decimal usas?

Mira este ejemplo:
Esto funciona:
Código:
    
DecimalSeparator = ',';
 double d = String("1,2").ToDouble();
Esto da un error:
Código:
    
DecimalSeparator = '.';
double d = String("1,2").ToDouble();

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Sugerencias a CodeGear / Embarcadero AngelV Noticias 73 05-08-2014 19:40:41
necesito sugerencias felixgo Firebird e Interbase 7 13-03-2007 15:06:40
Sugerencias con las INDY diegofhernando Internet 2 09-01-2006 21:06:15
Necesito sugerencias BetoAlonso Internet 5 18-10-2005 22:52:53


La franja horaria es GMT +2. Ahora son las 01:20:28.


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