Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-12-2015
ZiriusB ZiriusB is offline
Miembro
 
Registrado: oct 2010
Posts: 86
Poder: 14
ZiriusB Va por buen camino
First chance exception at $77682C1A. Exception class EOleException with message 'Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros'. Process ProGym.exe (5904)

Si en ese error le doy "Continue" me aparece este error:

First chance exception at $77682C1A. Exception class EDatabaseError with message 'ADOQuery1: CommandText does not return a result set'. Process ProGym.exe (2352)
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..."

Última edición por ZiriusB fecha: 16-12-2015 a las 03:44:36.
Responder Con Cita
  #2  
Antiguo 16-12-2015
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 [-]
ADOQuery1.SQL.Text := 'blabla'

Esa linea no puede generarte nunca esa excepcion


Cita:
First chance exception at $77682C1A. Exception class EOleException with message 'Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros'. Process ProGym.exe (5904)
Esa excepcion se genera en un supuesto ADOQuery1.Open o ADOQuery1.ExecSQL y hay problemas de parametros (tipo, sin asignar)

Cita:
First chance exception at $77682C1A. Exception class EDatabaseError with message 'ADOQuery1: CommandText does not return a result set'. Process ProGym.exe (2352)
Esa excepcion se genera porque deberiamos usar ADOQuery1.ExecSQL, no ADOQuery1.Open (error mio, perdon)

Open se usa cuando se ejecutan sentencias SELECT, que devuelven un conjunto de filas y columnas como resultado (una tabla)

ExecSQL se usa para todas las demas sentencias: DELETE, UPDATE, INSERT, etc y devuelve un Integer, que es la cantidad de registros afectados

Cambia el Open por ExecSQL.. y de nuevo disculpas
Responder Con Cita
  #3  
Antiguo 16-12-2015
ZiriusB ZiriusB is offline
Miembro
 
Registrado: oct 2010
Posts: 86
Poder: 14
ZiriusB Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
Código Delphi [-]
ADOQuery1.SQL.Text := 'blabla'

Esa linea no puede generarte nunca esa excepcion




Esa excepcion se genera en un supuesto ADOQuery1.Open o ADOQuery1.ExecSQL y hay problemas de parametros (tipo, sin asignar)



Esa excepcion se genera porque deberiamos usar ADOQuery1.ExecSQL, no ADOQuery1.Open (error mio, perdon)

Open se usa cuando se ejecutan sentencias SELECT, que devuelven un conjunto de filas y columnas como resultado (una tabla)

ExecSQL se usa para todas las demas sentencias: DELETE, UPDATE, INSERT, etc y devuelve un Integer, que es la cantidad de registros afectados

Cambia el Open por ExecSQL.. y de nuevo disculpas
Ya me parecía raro estar usando Open, pero bueno seguía al pie de la letra tus instrucciones jajajaja,

Código Delphi [-]
  ADOQuery1.Parameters.ParamByName('cantfactu').Value := combocant.Text;

Me genera el error y me marca el primer parámetro, si lo quito y lo quito de la consulta me genera error en el siguiente y así sucesivamente. Esto me esta dando muchos dolores de cabeza :S
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..."
Responder Con Cita
  #4  
Antiguo 16-12-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Che, ¿porqué la insistencia en tomar los tipos como si fueran strings? Si en la tabla tienes campos integer, floats, etc. En tu código debes pasarles variables del mismo tipo, o la equivalente en delphi para dicho tipo.

Por otro lado cuando uno trabaja con ADO debe pasarle en .Value el valor correspondiente, pero más importante, previamente indicarle el tipo esperado:

Código Delphi [-]
ADOQuery1.Parameters.ParamByName(NombreParametro).DataType := ftInteger;
ADOQuery1.Parameters.ParamByName(NombreParametro).Value := 40; // o la variable integer en cuestión

Hace un tiempo que no uso Delphi asi que no estoy completamente seguro si así se llamaba la propiedad DataType. Consulta la ayuda por las dudas.

No creo, ni debiera, que sea problema que al SQL que le pasas al ADOQuery veo espacio entre la comilla de inicio y fin. Pero por las dudas, corrige eso.

MAL:
Código Delphi [-]
ADOQuery1.SQL := ' INSERT INTO ... ';

BIEN:
Código Delphi [-]
ADOQuery1.SQL := 'INSERT INTO ...';

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 16-12-2015
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
Amigo Marcelo, No hay problemas con el whitespace, de hecho es una practica que uso porque alguna vez me paso de concatenar SQL y olvidarme un espacio y obviamente el resultado es que da error de sintaxis, siempre dejando un blanco de cada lado me ahorro esos quebraderos de cabeza

Yo creo que el problema esta en la conexion, me ha pasado mil veces

Cuando apenas empezaba en Delphi, hacia esto:

Código Delphi [-]
procedure Algo;
var
  qry: TADOQuery;
begin
  qry := TADOQuery.Create(NIL);  
  try
    { asignar sql }
    { asignar parametros }
    { ejecutar }
  finally
    qry.Free;
  end;
end;

Esto repartido por todos lados en donde necesitaba un query,

Y cual es el detalle? Falta asignar la conexion al TADOQuery; en particular, en ADO, da error al usar parametros

Entonces hoy hago siempre algo similar a esto:

Código Delphi [-]
function TAdoDataModule.CreateQuery(AOwner: TComponent): TADOQuery;
begin
  Result := TADOQuery.Create(AOwner);
  Result.Connection := FAdoConnection; // campo privado del TAdoDataModule, de tipo TADOConnection
end;

Listo nunca mas me olvido la conexion


----------------

Por otro lado revisa lo que te dice Marcelo, hay que respetar el tipo de los parametros en el query; como no nos diste esa informacion, yo asumi todo string

Si 'cantfactu' es un Integer, le estas pasando la propeidad Text de un ComboBox, es decir, un string! Estas mezclando peras con manzanas, literalmente

pd: Hoy parece que tengo las neuronas bastante apagadas
Responder Con Cita
  #6  
Antiguo 16-12-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Agustin, por algo decia que quiza no fuera un problema. Pero... a estas horas todo puede ser...

Y mejor no me hables de neuronas apagadas. Llevo 3 dias de mierda a causa de muy mal y poco dormir, el calor me esta haciendo mucho mal y encima anoche me di un susto enorme al comprobar que Lazarus no me iniciaba. Hace una hora, o un poquito más que termine la reistalacion y de paso actualizacion.
Ya me tope con el primer escollo: me quitaron el anchordocking y el sentimiento borderline volvio.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 16-12-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
La burra al trigo! Al parametro cantfacu le defines un ftInteger pero en Value le sigues pasando un string.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 16-12-2015
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
Como hoy mismo me encontre diciendo, estos son los dias del año en que estamos todos locos, a mil por hora, cansados, y sobre todo este año, a la enesima potencia

-----------


Código Delphi [-]
  ADOQuery1.Parameters.ParamByName('cantfactu').DataType := ftinteger;
  ADOQuery1.Parameters.ParamByName('cantfactu').Value := combocant.Text;

Si traduzco eso a "humano", estas diciendo:

Preparate, te voy a dar un "Integer"
Toma, aca esta el "string"
Responder Con Cita
  #9  
Antiguo 16-12-2015
ZiriusB ZiriusB is offline
Miembro
 
Registrado: oct 2010
Posts: 86
Poder: 14
ZiriusB Va por buen camino
Código Delphi [-]
  ADOQuery1.SQL.Text :=
    'INSERT INTO factura (cantfactu,subtfactu,ivafactu,totalfactu,horafactu,idclientef,idpagof,iduserf)' +
    'VALUES (:cantfactu, :subtfactu, :ivafactu, :totalfactu, :horafactu, :idclientef, :idpagof, :iduserF)';
  ADOQuery1.Parameters.ParamByName('cantfactu').DataType := ftinteger;
  ADOQuery1.Parameters.ParamByName('cantfactu').Value := combocant.Text;

  ADOQuery1.Parameters.ParamByName('subtfactu').DataType := ftfloat;
  ADOQuery1.Parameters.ParamByName('subtfactu').Value := cant;

  ADOQuery1.Parameters.ParamByName('ivafactu').DataType := ftfloat;
  ADOQuery1.Parameters.ParamByName('ivafactu').Value := iva;

etc...

etc...

Sigue generando el mismo error, probé en otro form con otra tabla y otro ADO y me genera el mismo error, uso XE2 :S no se si tendra algo que ver con la versión.

Cambie el combobox por un tedit. y me genera el mismo error :/
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..."

Última edición por ZiriusB fecha: 16-12-2015 a las 04:52:24.
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
guardar precios. numeric o float? Patricio Firebird e Interbase 5 07-10-2008 16:21:17
guardar text como un float mjjj Varios 17 20-12-2007 11:44:17
Problemas con los float tato Varios 2 03-04-2006 11:57:38
problemas con float y redondeos wonder boy Firebird e Interbase 17 27-12-2005 20:59:06
Problemas con float.... ilichhernandez Varios 2 20-12-2005 16:19:20


La franja horaria es GMT +2. Ahora son las 16:08:15.


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