Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-03-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
¿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.
que tal escafandra, uso la coma.

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();
la sugerencia de cero funciono muy bien...,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..
Responder Con Cita
  #2  
Antiguo 05-03-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 20
_cero_ Va por buen camino
Thumbs up

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");
Pd. Maneja sabiamente la función “TryStrToFloat” ya que te devuelve un 0 si el valor que le proporcionas en el edit no es un decimal o entero, pero esto es como comerse un error y todos sabemos que hay que ser cuidados@s con el manejo de errores.
Responder Con Cita
  #3  
Antiguo 05-03-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
que tal cero, le puse el codigo y no dio errores, pero al ejecutarlo me decia que no encontraba el parametro 3:



aqui te dejo el codigo, para ver si le encuentras algun anomalidad..


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 = :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("ID1")->Value=ID1;
ADODataSet2->Parameters->ParamByName("P1")->Value=P1;
ADODataSet2->Parameters->ParamByName("ID2")->Value=ID2;
ADODataSet2->Parameters->ParamByName("P2")->Value=P2;
ADODataSet2->Parameters->ParamByName("ID3")->Value=ID3;
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");
Saludos.
Responder Con Cita
  #4  
Antiguo 05-03-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 20
_cero_ Va por buen camino
Es porque por error no puse el espacio entre el parametro3 y la consulta que sigue, solo agrega un espacio ahi:
Código:
 
...
    "  Localidad = :parametro3"
    "  'SELECT * FROM DiabetesMellitus_AnualMunicipios" //aqui es donde me falto el espacio
;

Última edición por _cero_ fecha: 05-03-2010 a las 07:37:48. Razón: Sobraba código.
Responder Con Cita
  #5  
Antiguo 06-03-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
ya se lo puse y ahora me salio este error...






segun lo que entendi del error, los decimales que da son demasiados, pero
no lo entiendo, en otra aplicacion que tengo, le ingrese un valor con mas decimales que los que hay aqui y no me dio error...
quiza por que en aquella aplicacion le meto los datos desde edits simples, y en esta lo hago con DBEdits??..., o que sera??,

Responder Con Cita
  #6  
Antiguo 06-03-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 20
_cero_ Va por buen camino
Pues está confuso, intenta cambiar los tipos de las variables “parametro, parametro2, parametro3” a double o al tipo de dato del campo en la tabla, porque según entiendo está dando un error de tipos no de longitudes.
Responder Con Cita
  #7  
Antiguo 06-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow Sólo para aclarar el asunto

Yo trabajo con la versión 6 de C++Builder y segun la ayuda ,el componente TADODataSet sólo sirve para selecionar datos(Select) y no para Actualizar(Update) o para Borrar(Delete)
Textualmente la ayuda dice así:
Cita:
De la ayuda de C++Builder 6 >
...
Use the TADODataSet component's CommandText property to retrieve the dataset, specifying either a table name or an SQL statement (SELECT only ). TADODataSet is not capable of issuing Data Manipulation Language (DML) SQL statements that do not return result sets (like DELETE, INSERT, and UPDATE). For this use a component like TADOCommand or TADOQuery.
En otras palabras lo que debes usar es un componente TADOQuery..
Ahh.. y otra cosa ..segun observo en lo personal tu Consulta SQL no la entiendo , ya que al final de la consulta estas agregando un
Código SQL [-]
...
Select * FROM DiabetesMellutis_AnualMunicipios; 
lo cual no me cuadra con qué propósito haces eso; aparte que en ningun momento veo que estes concatenando (para concatenar String se usa el simbolo "+") los pedazos(por así decirlo) de la consulta SQL..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 07-03-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
Cita:
Empezado por _cero_ Ver Mensaje
Pues está confuso, intenta cambiar los tipos de las variables “parametro, parametro2, parametro3” a double o al tipo de dato del campo en la tabla, porque según entiendo está dando un error de tipos no de longitudes.
se los cambie y siguio con lo mismo...
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
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 17:10:33.


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