Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2017
Castelo1986 Castelo1986 is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 5
Poder: 0
Castelo1986 Va por buen camino
Problema Con Sentencia en Delphi

Saludos amigos, soy nuevo en esto de la programación, espero puedan ayudarme. tengo un problema con esta sentencia, el campo que necesito actualizar es tipo float y lo voy a actualizar con un valor que coloque en una caja de texto. al ejecutar el programa me da error. que puede ser adjunto codigo.

Código Delphi [-]
procedure TT_UT.ButtonUtClick(Sender: TObject);
begin
  T_UT.DBISAMQueryUT.SQL.Clear;
  T_UT.DBISAMQueryUT.SQL.Add('UPDATE');
  T_UT.DBISAMQueryUT.SQL.Add('STipoRetencionDetalle SET FRETD_MAYORQUE =:ValorUt');
  T_UT.DBISAMQueryUT.SQL.Add('WHERE FRETD_PERSONA = 0');
  T_UT.DBISAMQueryUT.Params.CreateParam(ftString,'ValorUt'); 
  T_UT.DBISAMQueryUT.ParamByName('ValorUt').AsString := T_UT.EditUt.Text;
  T_UT.DBISAMQueryUT.ExecSQL;

Última edición por dec fecha: 04-03-2017 a las 06:13:42. Razón: Poner etiqueta DELPHI
Responder Con Cita
  #2  
Antiguo 04-03-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Bienvenido a Club Delphi

Recuerda pegarle una leida a la guia de estilo

Tambien recuerda utilizar tags para publicar codigo fuente



Con respecto a tu consulta, cual es el error (tipo de excepcion y mensaje) y en que linea?

Que componentes de acceso a datos estas usando? A que base de datos te conectas?

Como esta definido el campo que queres actualizar/insertar?
Responder Con Cita
  #3  
Antiguo 04-03-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tal como indica AgustinOrtu, debes dar más detalles de tu problema. En principio, si el campo FRETD_MAYORQUE es un float entonces quizá el motor de b.d no acepta que le des el valor como cadena de texto.

LineComment Saludos
Responder Con Cita
  #4  
Antiguo 05-03-2017
Castelo1986 Castelo1986 is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 5
Poder: 0
Castelo1986 Va por buen camino
error

este es el error que me da.
First chance exception at $7530B760. Exception class EDBISAMEngineError with message 'DBISAM Engine Error # 11949 SQL parsing error - Expected NULL, SmallInt, Word, AutoInc, Integer, LargeInt, Currency, Float, or BCD expression but instead found ? in UPDATE SQL statement at line 2, column 43'.


el campo que requiero actualizar esta tipo float.


es una base datos dbisam. disculpen no haberlo puesto antes.
Responder Con Cita
  #5  
Antiguo 05-03-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Muy sencillo, no te esta reconociendo el parametro.


No use nunca dbisam (ni tampoco se que componentes estas usando). Pero por lo que es idiomatico, no es necesario que se utilicen los metodos para crear parametros en ninguna suite de componentes ya que esto lo hacen automaticamente al detectar los caracteres especiales para parametros (como los dos puntos o en algunos casos el signo de interrogacion)

Prueba a eliminar la linea

Código Delphi [-]
T_UT.DBISAMQueryUT.Params.CreateParam(ftString,'ValorUt');

La otra opcion, que no solo podria provocar el error, sino que tambien me parece mas adecuado, si estas trabajando con un campo float, porque mejor no pasarle valores float? Le estas pasando un string y el error reza: "Expected NULL, SmallInt, Word, AutoInc, Integer, LargeInt, Currency, Float, or BCD expression but instead found ?" y es cierto ya que le pasaste un string
Responder Con Cita
  #6  
Antiguo 06-03-2017
Avatar de adebonis
adebonis adebonis is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 145
Poder: 21
adebonis Va por buen camino
Hola.

Debes hacer caso a la opinión de AgustinOrtu.

Saludos.
Responder Con Cita
  #7  
Antiguo 08-03-2017
Castelo1986 Castelo1986 is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 5
Poder: 0
Castelo1986 Va por buen camino
Gracias por responder, AgustinOrtu, Hice lo que me dijistes y aun me resulta el mismo error, el parámetro se esta creando porq necesito que el valor que yo ponga en una caja de texto me actualice ese campo en la base de datos
Responder Con Cita
  #8  
Antiguo 08-03-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
El parametro lo crea internamente el componente, no hace falta que vos mismo lo crees

Si no es eso entonces deberias verificar como esta definido el campo en la base de datos.

Como estas asignando el valor en el parametro?
Responder Con Cita
  #9  
Antiguo 08-03-2017
Castelo1986 Castelo1986 is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 5
Poder: 0
Castelo1986 Va por buen camino
duda

el campo esta debinido como float.

si no es necesario crear el paramatro como actualizo ese campo desde una caja de texto? no lo domino
Responder Con Cita
  #10  
Antiguo 08-03-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Código Delphi [-]
procedure TT_UT.ButtonUtClick(Sender: TObject);
begin
  T_UT.DBISAMQueryUT.SQL.Clear;
  T_UT.DBISAMQueryUT.SQL.Add('UPDATE');
  T_UT.DBISAMQueryUT.SQL.Add('STipoRetencionDetalle SET FRETD_MAYORQUE =:ValorUt');
  T_UT.DBISAMQueryUT.SQL.Add('WHERE FRETD_PERSONA = 0');
  // T_UT.DBISAMQueryUT.Params.CreateParam(ftString,'ValorUt'); // esta linea no va
  T_UT.DBISAMQueryUT.ParamByName('ValorUt').AsFloat := 1.23; // en un principio ve por lo mas simple,
  // deberia funcionar a la primera con esto. Si funciona ya luego quitas esta linea tambien 
  T_UT.DBISAMQueryUT.ParamByName('ValorUt').AsFloat := FloatToStr(T_UT.EditUt.Text); // y dejas esta
  T_UT.DBISAMQueryUT.ExecSQL;
end;

Ten cuidado con la conversion: FloatToStr convierte usando la configuracion regional del equipo. Existen formas de utilizar formatos definidos por el programador.

Esto se puede hacer usando la version sobrecargada que acepta un parametro de tipo TFormatSettings; o bien utilizando una funcion llamada FloatToStrF
Responder Con Cita
  #11  
Antiguo 08-03-2017
Castelo1986 Castelo1986 is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 5
Poder: 0
Castelo1986 Va por buen camino
Muchas gracias Hermano si Funciono, Lo unico que cambie fue StrToFloat(T_UT.EditUt.Text) y asi si funciono. agradecido
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
Problema con Sentencia SQL darkamerico SQL 2 12-01-2013 18:50:03
Problema con sentencia de búsqueda jozelui MySQL 1 19-12-2008 02:26:06
Problema con sentencia SQL JELIRM SQL 6 03-04-2007 21:41:50
Problema entre query y sentencia sql ilichhernandez Conexión con bases de datos 1 17-11-2005 22:00:05
problema con order by en sentencia sql clanmilano Conexión con bases de datos 1 29-06-2005 06:12:30


La franja horaria es GMT +2. Ahora son las 14:59:48.


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