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 12-02-2013
XcamX XcamX is offline
Miembro
 
Registrado: may 2006
Posts: 21
Poder: 0
XcamX Va por buen camino
Error Insert SQL!!

Buenos dias a todos, necesito si alguien me puede ayudar por favor.
Paso a describir el error que me da una consulta de insercion en SQL, estoy trabajando con delphi 6 y bases de MySql.

La descripcion del error es esta "Operation no Applicable" en la linea SqlGrabar.ExecSQL.

Código Delphi [-]
with SqlGrabar do
begin
active:=false;
Sql.Clear;
SQL.add('INSERT INTO creditos(idcredito,idcliente,fechacred,tipoventa,montoprestado,interes,cantcuotas,tipopago,idemp,fec  hafin,interesmora,diacobro,estado,montocuota,montototal)'+
'value(:idcred,:idcliente,:feccred,:tventa,:montoprest,:inte,:cantc,:tpago,:idemp,:fecfin,:intemora,  :diacobro,:estado,:montoc,:montot)');
ParamByName('idcred').asinteger:=strtoint(label3.caption);
ParamByName('idcliente').asinteger:=strtoint(edit3.text);
ParamByName('feccred').AsDateTime:=strtodate(maskedit1.text);
ParamByName('tventa').asstring:=combobox3.text;
ParamByName('montoprest').AsFloat:=strtofloat(abfedit1.text);
ParamByName('inte').asinteger:=strtoint(abfedit2.text);
ParamByName('cantc').asinteger:=strtoint(abfedit3.text);
ParamByName('tpago').asstring:=combobox5.text;
ParamByName('idemp').asstring:=label33.caption;
ParamByName('fecfin').asDateTime:=strtodate(listacuota.Cells[0,2]);
ParamByName('intemora').asinteger:=0;
ParamByName('diacobro').asstring:=combobox4.text;
ParamByName('estado').asstring:='DEBE';
ParamByName('montoc').asfloat:=strtofloat(abfedit4.text);
ParamByName('montot').asfloat:=strtofloat(abfedit13.text);
SqlGrabar.ExecSQL;
end;
end;
dm.Creditos.Refresh;

Si alguien me pudiera dar una ayudita para encontrar ese error les estaria muy agradecido.

Última edición por Casimiro Notevi fecha: 12-02-2013 a las 17:39:03.
Responder Con Cita
  #2  
Antiguo 12-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Has puesto "value" en lugar de "values"
Responder Con Cita
  #3  
Antiguo 12-02-2013
XcamX XcamX is offline
Miembro
 
Registrado: may 2006
Posts: 21
Poder: 0
XcamX Va por buen camino
Casimiro agradesco tu respuesta pero la sentencia es "value", de todas formas probe con "values" y me da el mismo error
Responder Con Cita
  #4  
Antiguo 12-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No, amigo, no es value, es values

Código:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
Cita:
SQL.add('INSERT INTO creditos(idcredito,idcliente,fechacred,tipoventa,montoprestado,interes,
cantcuotas,tipopago,idemp,fec...hafin,interesmora,diacobro,estado,montocuota,montototal)'+ 'value(:idcred,:idcliente,:feccred,:tventa,:montoprest,:inte,:cantc,:tpago,:idemp,
:fecfin,:intemora, :diacobro,:estado,:montoc,:montot)');
Ahí tienes el error
Responder Con Cita
  #5  
Antiguo 12-02-2013
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola XcamX,

Es VALUES, según el enlace se puede utilizar, pero fíjate en todos los ejemplos que utiliza VALUES no VALUE

Que ojo de halcón tienes Casimiro

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 12-02-2013 a las 18:59:19.
Responder Con Cita
  #6  
Antiguo 12-02-2013
XcamX XcamX is offline
Miembro
 
Registrado: may 2006
Posts: 21
Poder: 0
XcamX Va por buen camino
Hola amigos, ya probe con values pero me sigue dando el error, con respecto a fechafin asi se llama el campo en la base de datos, y fecfin es el nombre del parametro al que le asigno el valor, no me equivoque al poner el nombre.
Responder Con Cita
  #7  
Antiguo 12-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Vamos a ver, ¿pero has visto tu código?, no has puesto fechafin, has puesto:
fec..hafin

Con 2 espacios por medio.
Responder Con Cita
  #8  
Antiguo 12-02-2013
XcamX XcamX is offline
Miembro
 
Registrado: may 2006
Posts: 21
Poder: 0
XcamX Va por buen camino
tenes razon, asi salio el codigo cuando lo puse aca, pero revisando el codigo en el programa esta bien puesto fechafin lo subo de nuevo para que lo veas si?

Código Delphi [-]
with SqlGrabar do
begin
active:=false;
Sql.Clear;
SQL.add('INSERT INTO creditos(idcredito,idcliente,fechacred,tipoventa,montoprestado,interes,cantcuotas,tipopago,idemp,
               fechafin,interesmora,diacobro,estado,montocuota,montototal)'+
        'value(:idcred,:idcliente,:feccred,:tventa,:montoprest,:inte,:cantc,:tpago,:idemp,
               :fecfin,:intemora,:diacobro,:estado,:montoc,:montot)');
    ParamByName('idcred').asinteger:=strtoint(label3.caption);
    ParamByName('idcliente').asinteger:=strtoint(edit3.text);
    ParamByName('feccred').AsDateTime:=strtodate(maskedit1.text);
    ParamByName('tventa').asstring:=combobox3.text;
    ParamByName('montoprest').AsFloat:=strtofloat(abfedit1.text);
    ParamByName('inte').asinteger:=strtoint(abfedit2.text);
    ParamByName('cantc').asinteger:=strtoint(abfedit3.text);
    ParamByName('tpago').asstring:=combobox5.text;
    ParamByName('idemp').asstring:=label33.caption;
    ParamByName('fecfin').asDateTime:=strtodate(listacuota.Cells[0,2]);
    ParamByName('intemora').asinteger:=0;
    ParamByName('diacobro').asstring:=combobox4.text;
    ParamByName('estado').asstring:='DEBE';
    ParamByName('montoc').asfloat:=strtofloat(abfedit4.text);
    ParamByName('montot').asfloat:=strtofloat(abfedit13.text);
    ExecSQL;
end;
end;
dm.Creditos.Refresh;

saludos

Última edición por Casimiro Notevi fecha: 12-02-2013 a las 21:04:53.
Responder Con Cita
  #9  
Antiguo 12-02-2013
XcamX XcamX is offline
Miembro
 
Registrado: may 2006
Posts: 21
Poder: 0
XcamX Va por buen camino
ahi lo hizo de nuevo hace ese espacio, fijate que en la linea de abajo tambien lo hace y en el codigo original no lo tiene

un abrazo che y gracias por el interes.
Responder Con Cita
  #10  
Antiguo 12-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, pero quita ese "value" y ponlo correctamente, y por si acaso pon un espacio delante y detrás del values para separarlo del paréntesis.
Responder Con Cita
  #11  
Antiguo 12-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira esto.
Responder Con Cita
  #12  
Antiguo 13-02-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
with SqlGrabar do
begin
active:=false;
SQL.text:= 'INSERT INTO creditos ( idcredito, idcliente, fechacred, tipoventa, montoprestado, interes, cantcuotas, tipopago, idemp, '+
           ' fechafin, interesmora, diacobro, estado, montocuota, montototal ) '+
           'values ( :idcred, :idcliente, :feccred, :tventa, :montoprest, :inte, :cantc, :tpago, :idemp, '+
           ' :fecfin, :intemora, :diacobro, :estado, :montoc, :montot )' ;
    ParamByName('idcred').asinteger:=strtoint(label3.caption);
    ParamByName('idcliente').asinteger:=strtoint(edit3.text);
    ParamByName('feccred').AsDateTime:=strtodate(maskedit1.text);
    ParamByName('tventa').asstring:=combobox3.text;
    ParamByName('montoprest').AsFloat:=strtofloat(abfedit1.text);
    ParamByName('inte').asinteger:=strtoint(abfedit2.text);
    ParamByName('cantc').asinteger:=strtoint(abfedit3.text);
    ParamByName('tpago').asstring:=combobox5.text;
    ParamByName('idemp').asstring:=label33.caption;
    ParamByName('fecfin').asDateTime:=strtodate(listacuota.Cells[0,2]);
    ParamByName('intemora').asinteger:=0;
    ParamByName('diacobro').asstring:=combobox4.text;
    ParamByName('estado').asstring:='DEBE';
    ParamByName('montoc').asfloat:=strtofloat(abfedit4.text);
    ParamByName('montot').asfloat:=strtofloat(abfedit13.text);
    ExecSQL;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #13  
Antiguo 13-02-2013
XcamX XcamX is offline
Miembro
 
Registrado: may 2006
Posts: 21
Poder: 0
XcamX Va por buen camino
gracias caral por tu ayuda pero me sigue dando el mismo error

saludos
Responder Con Cita
  #14  
Antiguo 13-02-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se cual es el error ?.
Yo veo varias cosas:
1- Es posible que el query SqlGrabar no este bien conectado o incluso tenga que estar activo.
2- No se en mysql pero a mi me gusta mas usar params o parameters que parambyname.
3- Es posible que las fechas que las sacas de string esten generando algun problema.
No se.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #15  
Antiguo 13-02-2013
XcamX XcamX is offline
Miembro
 
Registrado: may 2006
Posts: 21
Poder: 0
XcamX Va por buen camino
muchisimas gracias caral, al final eran las fechas. si anda con la sentencia 'value'

un abrazo grande
Responder Con Cita
  #16  
Antiguo 13-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por XcamX Ver Mensaje
muchisimas gracias caral, al final eran las fechas. si anda con la sentencia 'value'
un abrazo grande
Por lo visto mysql acepta ambas:


INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ]
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
Error con insert Paulao Varios 1 27-04-2010 19:50:55
error en insert into arespremium MySQL 0 30-08-2007 23:06:59
Error en insert into rhasshid SQL 4 23-04-2007 07:31:23
Error en Insert francisco260184 SQL 2 06-04-2007 04:40:11
Sql Error: error cannot insert a duplicate......................... inexperto SQL 2 04-06-2004 12:54:59


La franja horaria es GMT +2. Ahora son las 06:28:36.


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