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 11-07-2017
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
[SOLUCIONADO] SQL Query error parameter 'sens' not found

Hola a todos, les agradeceria mucho su ayuda, soy nuevo en esto, estoy trabajando con Delphi 7 y al reutilizar el siguiente código en otra parte de la misma Unit, me aparece el error :

"Query3 parameter 'sens1' not found.

Será que las sentencias query3.clear y query3.active=false no son suficientes para limpiar el código de este query.
Ojalá me puedan decir que me falta para poder reutilizar el query3 sin problemas.

De antemano muchas gracias

Mi código es :

Código Delphi [-]
ruta_q:=Table5.fieldbyname('RUTA_DATOS').Value;
ruta_q:= ruta_q  + '\SENSORES.DB';

  Query3.SQL.Clear;
  Query3.Active := False ;
  With Query3.Sql Do
   Begin
       Add('SELECT NUM,SENSOR,UBICACION,ORIGEN,TIPO');
       Add ('FROM "'+ruta_q+'"');
       Add('WHERE');
       Add('SENSOR = :sens1');
       query3.parambyname('sens1').asInteger:= dsensor;
   end;

    Query3.Active := True ;

Última edición por dec fecha: 11-07-2017 a las 11:22:26. Razón: Poner etiqueta DELPHI
Responder Con Cita
  #2  
Antiguo 11-07-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Recuerda utilizar TAG's

Una pista para solucionar tu problema: imprime en pantalla la consulta SQL, por ejemplo, de esta manera:

Código Delphi [-]
  Query3.SQL.Clear;
  Query3.Active := False ;
  With Query3.Sql Do
  Begin
    Add('SELECT NUM,SENSOR,UBICACION,ORIGEN,TIPO');
    Add ('FROM "'+ruta_q+'"');
    Add('WHERE');
    Add('SENSOR = :sens1');
    ShowMessage(Text); // Text es la propiedad Query3.SQL.Text
    query3.parambyname('sens1').asInteger:= dsensor;
end;

Por otra parte, te recomiendo que no utilices la sentencia with para nada, pero es un tema bastante personal. El problema que tiene es que pueden ocurrir ambiguedades
Responder Con Cita
  #3  
Antiguo 11-07-2017
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
error con sql

Gracias Agustin por el apoyo, en pantalla me aparece siempre la misma sentencia y se produce el mismo error.
Por el momento estoy probando lo que encontré en otro hilo, si tienes otro dato, bienvenido
Gracias por la ayuda
Responder Con Cita
  #4  
Antiguo 11-07-2017
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La construcción en prinicipio parece correcta.
Tendrías que colocar la SQL completa y/o un ejemplo donde se reproduzca.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 11-07-2017
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Me parece recordar, que primero tendrías que preparar el query para que pueda reconocer los parámetros:

Código Delphi [-]
  Query3.SQL.Clear;
  Query3.Active := False ;
  With Query3.Sql Do
  Begin
    Add('SELECT NUM,SENSOR,UBICACION,ORIGEN,TIPO');
    Add ('FROM "'+ruta_q+'"');
    Add('WHERE');
    Add('SENSOR = :sens1');
  end;
  Query3.Prepare;
  Query3.parambyname('sens1').asInteger:= dsensor;


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #6  
Antiguo 11-07-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 21
oscarac Va por buen camino
y no es asi?
Código Delphi [-]
Query3.Parameters.parambyname('sens1').asInteger:= dsensor;
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 11-07-2017
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 15
Caminante Va camino a la fama
Cita:
Empezado por oscarac Ver Mensaje
y no es asi?
Código Delphi [-]Query3.Parameters.parambyname('sens1').asInteger:= dsensor;
Solo si esta usando ADO para conectarse. Para los demas es como lo escribio (Al menos los que conozco)

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #8  
Antiguo 11-07-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Solo se me ocurre que no tengas la propiedad Connection enlazada
Responder Con Cita
  #9  
Antiguo 11-07-2017
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 163
Poder: 8
nincillo Va por buen camino
Dentro del With vuelves utilizar:

Código:
query3.parambyname('sens1').asInteger:= dsensor;
O le quitas el query3 de delante, o lo sacas del With. Quizás sea solo eso...
Responder Con Cita
  #10  
Antiguo 11-07-2017
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
Como dicen todos, en principio parece correcto. ¿estás seguro que es el lugar donde está marcando el error? (solo por descartar)

No tengo mas que correcciones de forma: (sugierousar open y close en luagar del active, es solo de forma)

Código Delphi [-]
ruta_q:=Table5.fieldbyname('RUTA_DATOS').Value;
ruta_q:= ruta_q  + '\SENSORES.DB';

  Query3.close; 
  Query3.SQL.Clear; 
  With Query3.SQL Do
   Begin
       Add('SELECT NUM,SENSOR,UBICACION,ORIGEN,TIPO');
       Add ('FROM "'+ruta_q+'"');
       Add('WHERE');
       Add('SENSOR = :sens1');       
   end;
   query3.prepare;
   query3.parambyname('sens1').asInteger:= dsensor;
   Query3.open;


Ahora, para verificar que es lo que pasa, revisa los parametros que te estan llegando... por ejemplo imprimiendo con un showmessage el Query3.Paramscount (No se si es asi o Query3.Params.count)

Otra opcion es que utilices el indice del parametro:

Código Delphi [-]
   query3.prepare;
   query3.params[0].asInteger:= dsensor;
   Query3.open;


y por ultimo, podrias solucionar tu problema, pero no es la respuesta a este hilo:
Código Delphi [-]
  Query3.close; 
  Query3.SQL.Clear; 
  With Query3.SQL Do
   Begin
       Add('SELECT NUM,SENSOR,UBICACION,ORIGEN,TIPO');
       Add ('FROM "'+ruta_q+'"');
       Add('WHERE');
       Add('SENSOR = '+Inttostr(dsensor));       
   end;
   Query3.open;
Responder Con Cita
  #11  
Antiguo 11-07-2017
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
Una cosa mas... en la ventana de propiedades puedes ver la propiedad Params, que es una colección de TParams... puede ser que se hayan ingresado en tiempo de diseño los parametros y por esta razon puede que esté causando algún conflicto...

Aunque dicha propiedad deberia cambiarse cuando asignas nuevamente la sentencia SQL a tu Query3.

saludo,
Responder Con Cita
  #12  
Antiguo 13-07-2017
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
Query no reconoce los parametros

Hola, gracias de nuevo por sus respuestas, he seguido probando alguna solución y el problema persiste, aislé el código a una sola form con la misma sintaxis ya que mi programa tiene muchos query. Los efectos son los mismos, esto es, la primera y segunda vez que el programa ejectua el query lo hace sin errores pero la tercera vez arroja el error maldito y lo hace con las sentencias select y las update.
Estoy trabajando en Windows 10 y me arroja un error al abrir Delphi, sin embargo todo anda bien salo el BDE que aparece con unos botones desactivados, esto lo salvé creando mis tabla con sentencias SQL, no creo que mi problema sea con windows?, que opinan?

Les dejo el código que estoy usando para tratar de encontrar el problema, eliminé las sentencias with, apliqué el query.prepare, y nada.
El código lo ejecuto desde un botón y al primer click, todo ok, al segundo igual , pero al tercero aparece el mensaje "parameter 'fe_ent_adm' not found.
Mi programa debe usar esta procedimiento n veces, si no arreglo esto estoy frito.
pensaba que el asunto andaba por los tipos "as.datetime" o "as.time", etc pero no me dio resultado.

Mucha Gracias de nuevo
perdonen no sé como insertar el código en la ventana.



procedure TForm5.Button1Click(Sender: TObject);
var
Fecha_temp:TDateTime;
Hora_temp:TDateTime;
ruta_q2:string;
numer_cab:Integer;

begin
Table2.Open;
Table1.Open;

ruta_q2:=TRIM(Table2.fieldbyname('RUTA_DATOS').value);
ruta_q2:=ruta_q2 + '\REG_CALC1_ABTOS.DB'; //TABLE 1

Fecha_temp:= StrToDate('01-05-2017');
Hora_temp:= StrToTime('22:10:00');
numer_cab:=26;

query1.Close;
query1.SQL.Clear;
query1.Params.Clear;

query1.SQL.Text:= 'UPDATE "'+ruta_q2+'" SET FE_ENT_ADM = :fe_ent_adm, HR_ENT_ADM = :hr_ent_adm WHERE NUM_CAB_HAB = :n9_cab';
query1.Parambyname('fe_ent_adm').AsDateTime := Fecha_temp;
query1.Parambyname('hr_ent_adm').AsTime := Hora_temp;
query1.Parambyname('n9_cab').AsInteger := numer_cab;
query1.SQL.EndUpdate;
query1.ExecSQL;


DBGrid1.DataSource:=Datasource1;
Table1.Close;
Table2.Close;
end;

end.
Responder Con Cita
  #13  
Antiguo 13-07-2017
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
Query no reconoce los parametros

Hola, gracias de nuevo por sus respuestas, he seguido probando alguna solución y el problema persiste, aislé el código a una sola form con la misma sintaxis ya que mi programa tiene muchos query. Los efectos son los mismos, esto es, la primera y segunda vez que el programa ejectua el query lo hace sin errores pero la tercera vez arroja el error maldito y lo hace con las sentencias select y las update.
Estoy trabajando en Windows 10 y me arroja un error al abrir Delphi, sin embargo todo anda bien salo el BDE que aparece con unos botones desactivados, esto lo salvé creando mis tablas con sentencias SQL, no creo que mi problema sea con windows?, que opinan?

Les dejo el código que estoy usando para tratar de encontrar el problema, eliminé las sentencias with, apliqué el query.prepare, y nada.
El código lo ejecuto desde un botón y al primer click, todo ok, al segundo igual , pero al tercero aparece el mensaje "parameter 'fe_ent_adm' not found.
Mi programa debe usar esta procedimiento n veces, si no arreglo esto estoy frito.
pensaba que el asunto andaba por los tipos "as.datetime" o "as.time", etc pero no me dio resultado.

Mucha Gracias de nuevo
perdonen no sé como insertar el código en la ventana.



procedure TForm5.Button1Click(Sender: TObject);
var
Fecha_temp:TDateTime;
Hora_temp:TDateTime;
ruta_q2:string;
numer_cab:Integer;

begin
Table2.Open;
Table1.Open;

ruta_q2:=TRIM(Table2.fieldbyname('RUTA_DATOS').value);
ruta_q2:=ruta_q2 + '\REG_CALC1_ABTOS.DB'; //TABLE 1

Fecha_temp:= StrToDate('01-05-2017');
Hora_temp:= StrToTime('22:10:00');
numer_cab:=26;

query1.Close;
query1.SQL.Clear;
query1.Params.Clear;

query1.SQL.Text:= 'UPDATE "'+ruta_q2+'" SET FE_ENT_ADM = :fe_ent_adm, HR_ENT_ADM = :hr_ent_adm WHERE NUM_CAB_HAB = :n9_cab';
query1.Parambyname('fe_ent_adm').AsDateTime := Fecha_temp;
query1.Parambyname('hr_ent_adm').AsTime := Hora_temp;
query1.Parambyname('n9_cab').AsInteger := numer_cab;
query1.SQL.EndUpdate;
query1.ExecSQL;


DBGrid1.DataSource:=Datasource1;
Table1.Close;
Table2.Close;
end;

end.
Responder Con Cita
  #14  
Antiguo 13-07-2017
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Hola cvlaso77,

Esta línea donde pone "query1.SQL.EndUpdate" que la utilizas?, a ver si el problema es ese.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #15  
Antiguo 13-07-2017
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
Query no reconoce los parametros, RESUELTO

Muchas Gracias Orbe por tu sugerencia, al sacar el comando sql update, se resuelve el problema y el procedimiento funciona perfecto.
No sé de donde saqué este comando, asumo que al usar la rutina with, donde tambien aparece el mismo problema al usar este comando.
Agradezco mucho a todos los que vieron mi consulta y dedican su tiempo a este foro, y los felicito por eso, ojalá esto hubiera existido en mis tiempos de la Univ de BASIC, PASCAL y otros.
Saludos a todos
Responder Con Cita
  #16  
Antiguo 13-07-2017
cvlaso77 cvlaso77 is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 14
Poder: 0
cvlaso77 Va por buen camino
Query no reconoce los parametros, RESUELTO

Una cosa más, me expresé mal, el comando que produce el error es "query1.SQL.EndUpdate", saludos
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
[SOLUCIONADO] Error componentes JCL y JVCL tuni Varios 5 28-06-2017 14:59:05
Invalid Parameter en query Robert SQL 6 27-10-2015 22:04:32
Error E2009 en evento de TWebBrowser : Parameter lists differ (MAJ) OOP 8 29-07-2015 20:26:02
ayuda error query:field 'id' not found edgar_prospero Varios 15 31-08-2012 01:43:11
"ADOQUERY3: Parameter 'p' not found" error (POR FAVOR AYUDA) JuanchoDev Conexión con bases de datos 20 21-04-2010 23:36:19


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


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