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
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
Primero elimina los with de tu codigo porque

1. No es aconsejable
2. No lo estas "aprovechando"

Debido a 1), casi que prefiero no explicarte el porque no lo estas "aprovechando"

Si te da un error en Query.SQL.Add es porque el query no esta inicializado (no esta creado)

No se de donde sale ADOQuery1, voy a asumir que tenes el componente en el Form actual. Tambien voy a asumir que en ADOQuery1.Connection tenes asignada una TADOConnection

Código Delphi [-]
  // este codigo esta para probar que tengas todo "en orden", luego lo quitas
  // basicamente chequea que todos los objetos que intervienen estan correctamente creados

  if not Assigned(ADOQuery1) then
    raise Exception.Create('ADOQuery1 no esta correctamente inicializado');

  if not Assigned(ADOQuery1.Connection) then
    raise Exception.Create('ADOQuery1.Connection no esta correctamente inicializado');

  if not Assigned(ADOQuery1.SQL) then
    raise Exception.Create('ADOQuery1.SQL no esta correctamente inicializado');

  if not Assigned(form2) then
    raise Exception.Create('form2 esta correctamente inicializado');

  // hasta aca, luego lo quitas


  if ADOQuery1.Active then
    ADOQuery1.Close;

  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').Value := combocant.Text;
  ADOQuery1.Parameters.ParamByName('subtfactu').Value := cant;
  ADOQuery1.Parameters.ParamByName('ivafactu').Value := iva;
  ADOQuery1.Parameters.ParamByName('totalfactu').Value := total;

  ADOQuery1.Parameters.ParamByName('horafactu').DataType := ftDateTime;
  ADOQuery1.Parameters.ParamByName('horafactu').Value := Mfechahora;

  ADOQuery1.Parameters.ParamByName('idclientef').Value := form2.edtcedula.Text;
  ADOQuery1.Parameters.ParamByName('idpagof').Value := tpago;
  ADOQuery1.Parameters.ParamByName('iduserF').Value := '1';
  ADOQuery1.Open;
Responder Con Cita
  #2  
Antiguo 16-12-2015
ZiriusB ZiriusB is offline
Miembro
 
Registrado: oct 2010
Posts: 86
Poder: 14
ZiriusB Va por buen camino
Efectivamente tengo conectado todo como debe ser, el ADOQuery1 esta en el form en el que hago la consulta, esta conectado al ADOCOnection, coloque la consulta tal cual la pasaste y sigue generando el mismo error, lo hice con el depurador activo y paso por paso, se detiene y genera el error en esta linea:

Código Delphi [-]
  ADOQuery1.SQL.Text :=
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..."
Responder Con Cita
  #3  
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
Y cual es el error?
Responder Con Cita
  #4  
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
  #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
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
  #6  
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
  #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
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
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 04:10:27.


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