![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
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. |
|
#2
|
|||
|
|||
|
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.. |
|
#3
|
||||
|
||||
|
Cita:
Código:
double ID1 = DBEdit3->Text.ToDouble(); //ANIO Saludos. |
|
#4
|
|||
|
|||
|
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 |
|
#5
|
||||
|
||||
|
¿Que tipo de separador decimal usas?
Mira este ejemplo: Esto funciona: Código:
DecimalSeparator = ',';
double d = String("1,2").ToDouble();
Código:
DecimalSeparator = '.';
double d = String("1,2").ToDouble();
Saludos. |
|
#6
|
|||
|
|||
|
Perdón que me meta pero el error es “Illegal use of floating point”?
Si es así se debe a que tratas de combinar tipos doublé con una cadena de texto, pon ...'"+String(ID1)+"'… y esto aslo con todas las variables tipo float, int o doublé que mescles con cadenas. Por otro lado porque no usas parámetros en las consultas no es el modo más simple pero es el modo más efectivo de garantizar que los datos que introduzcas son del tipo que quieres y que el codigo se vea ordenado, por ejemplo. Código:
ad->Close();
ad->CommandText=
"UPDATE"
" Tabla1"
" SET"
" campo1 = :campo1,"//los parametros se indican con ":" antes del nombre del parametro
" campo2 = :campo2"
;
ad->Parameters->ParamByName("campo1")->Value=6; //al darle 6 como valor el ADODataSet da por echo que se trata de un entero.
ad->Parameters->ParamByName("campo2")->Value=6.2;
ad->Open();
|
|
#7
|
|||
|
|||
|
Cita:
Código:
ADODataSet2->CommandText = " UPDATE DiabetesMellitus_AnualMunicipios SET ID_Con = :ID1, P_Control = '"+String(P1)+"',ID_Informacion = '"+String(ID2)+"',P_Informacion = '"+String(P2)+"', ID_Promocion1 = '"+String(ID3)+"', P_Promocion ='"+String(P3)+"', ID_Promocion2 = '"+String(ID4)+"',ID_General = '"+String(IDG)+"' where Año = '"+parametro+"' AND Localidad = '"+parametro3+"'SELECT * FROM DiabetesMellitus_AnualMunicipios";
ADODataSet2->Parameters->ParamByName("ID_Con")->Value=6.2;
ADODataSet2->Open();//Aca abres la vista....
Saludos |
|
#8
|
|||
|
|||
|
Cita:
implemente lo que me sugeriste,y me marco el mismo error.. ![]() ![]() asi quedo el codigo: 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
DecimalSeparator = ',';
double ID1 = String("1,2").ToDouble();
double P1 = String("1,2").ToDouble();
double ID2 = String("1,2").ToDouble();
double P2 = String("1,2").ToDouble();
double ID3 = String("1,2").ToDouble();
double P3 = String("1,2").ToDouble();
double ID4 = String("1,2").ToDouble();
double IDG = String("1,2").ToDouble();
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 = '"+String(ID1)+"', P_Control = '"+String(P1)+"',ID_Informacion = '"+String(ID2)+"',P_Informacion = '"+String(P2)+"', ID_Promocion1 = '"+String(ID3)+"', P_Promocion ='"+String(P3)+"', ID_Promocion2 = '"+String(ID4)+"',ID_General = '"+String(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();
,y tuve que ponerle lo del string porque si no me marcaba el error del uso ilegal del float... pero sigo sin poder insertar los datos a la tabla....![]() ![]() hay algun error en el codigo?..o algo?.. Saludos.. |
|
#9
|
|||
|
|||
|
La razón del porque no te funciono, es que el parámetro que pusiste, no se llamaba “ID_Con”, si no ”ID1” ya que el nombre del parámetro es el que va después de “:” teniendo en cuenta tu código quedaría más o menos así:
Código:
String parametro,parametro2,parametro3;
double ID1,P1,ID2,P2,ID3,P3,ID4,IDG;
ADODataSet2->Close();
parametro = ComboBox1->Text;
parametro3 = ComboBox3->Text;
double numm=0;
TryStrToFloat(DBEdit3->Text, numm); //sugiero aser esto para evitar errores cuando el edit este vacio por ejemplo
D1 = numm;
//aunque esta forma rtambien es valida
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 = "+String(ID1)+"," //tambien se puede pero lo veo mas confuso y/o desordenado
" 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->Parameters->ParamByName("P1")->Value=P1;
ADODataSet2->Parameters->ParamByName("ID2")->Value=ID2;
ADODataSet2->Parameters->ParamByName("P2")->Value=P2;
ADODataSet2->Parameters->ParamByName("P3")->Value=P3;
ADODataSet2->Parameters->ParamByName("ID4")->Value=ID4;
ADODataSet2->Parameters->ParamByName("IDG")->Value=IDG;
ADODataSet2->Parameters->ParamByName("parametro")->Value=parametro;
ADODataSet2->Parameters->ParamByName("parametro3")->Value=parametro3;
ADODataSet2->Open();
Tabla_DiabetesAnual->Close();
Tabla_DiabetesAnual->Open();
ShowMessage("LISTO");
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|