Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-09-2008
drykea drykea is offline
Miembro
 
Registrado: abr 2007
Posts: 113
Poder: 17
drykea Va por buen camino
Error ADOQuery con Parametros

Hola a todos.

Tengo el siguiente código y me da error al cargar los parametros(linea en rojo).
Me sale el mensaje
Código:
Parameter <nombre param> not found
¿Alguien sabe que puede pasar?
Muchas gracias

Código Delphi [-]
    
cadena := 'Update Documentos set doc_apel1=:apel1 ,doc_apel2=:apel2';
cadena := cadena + ', doc_nombre=:nombre';
cadena := cadena + ', usuario=:usu, fechagrab=:Fecha';
cadena := cadena + ' where doc_id=:id and doc_NH=:NH';
ADOQVarios.Active:=false;
ADOQVarios.SQL.Clear;
ADOQVarios.SQL.Add(cadena);
ADOQVarios.Parameters.ParamByName('id').DataType := ftInteger;
ADOQVarios.Parameters.ParamByName('id').Value :=cod;
ADOQVarios.Parameters.ParamByName('apel2').DataType := ftString;
ADOQVarios.Parameters.ParamByName('apel2').Value := eApe2.text;
ADOQVarios.Parameters.ParamByName('apel1').DataType := ftString;
ADOQVarios.Parameters.ParamByName('apel1').Value := eApe1.text;
ADOQVarios.Parameters.ParamByName('Nombre').DataType := ftString;
ADOQVarios.Parameters.ParamByName('Nombre').Value := eNombre.text;
ADOQVarios.Parameters.ParamByName('NH').DataType := ftInteger;
ADOQVarios.Parameters.ParamByName('NH').Value :=StrToInt(eNH.text);
ADOQVarios.Parameters.ParamByName('Fecha').DataType := ftDateTime;
ADOQVarios.Parameters.ParamByName('Fecha').Value := Now;
ADOQVarios.Parameters.ParamByName('Usu').DataType := ftString;
ADOQVarios.Parameters.ParamByName('Usu').Value :=MFunciones.GetLoginName;
ADOQVarios.ExecSQL;
Responder Con Cita
  #2  
Antiguo 09-09-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Justo despues de esta linea:
Código Delphi [-]
ADOQVarios.SQL.Add(cadena);

Prueba a poner esta otra:
Código Delphi [-]
ADOQVarios.Parameters.ParseSQL(Consulta,TRUE);
Responder Con Cita
  #3  
Antiguo 09-09-2008
drykea drykea is offline
Miembro
 
Registrado: abr 2007
Posts: 113
Poder: 17
drykea Va por buen camino
Gracias por tu respuesta.

Siempre lo he hecho de la misma forma, y nunca he usado ese método.
voy a probarlo.

De todos modos, puedes explicarme un poco más que es lo que hace exactamente??
Responder Con Cita
  #4  
Antiguo 09-09-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por drykea Ver Mensaje
De todos modos, puedes explicarme un poco más que es lo que hace exactamente??
Pues por cada parametro que encuentra en la consulta añade un nuevo objeto del tipo TParameter con el nombre del parametro.
Responder Con Cita
  #5  
Antiguo 09-09-2008
drykea drykea is offline
Miembro
 
Registrado: abr 2007
Posts: 113
Poder: 17
drykea Va por buen camino
He probado el código y parece que funciona, aunque no sé porque siempre me había funcionado sin ponerlo y ahora no


Otra vez muchas gracias
Responder Con Cita
  #6  
Antiguo 09-09-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por drykea Ver Mensaje
cadena := 'Update Documentos set doc_apel1=:apel1 ,doc_apel2=:apel2';
cadena := cadena + ', doc_nombre=:nombre'; cadena := cadena + ',
cadena := cadena + ' where doc_id=:id and doc_NH=:NH';
//..........................
ADOQVarios.SQL.Add(cadena);
Primero generas una cadena con la instrucción y luego utiilzas "SQL.Add" para agregar esa cadena... mmm... eso es como cuando a un bebe le enseñan a comer con cuchara: primero agarra la comida con la mano, luego la pone en la cuchara.

Podrías ahorrarte la variable cadena y utilizar solamente "SQL.Add" para cada línea de tu consulta:
Código Delphi [-]
with ADOQVarios do begin 
If active then close; 
SQL.Clear; 
SQL.Add('Update Documentos set doc_apel1=:apel1 ,doc_apel2=:apel2,'); 
SQL.Add('doc_nombre=:nombre.'); 
SQL.Add('usuario=:usu, fechagrab=:Fecha'); 
SQL.Add('where doc_id=:id and doc_NH=:NH');
 ... 
Parameters.ParamByName('id').Value :=cod; 
... 
Open; 
end; //with
__________________

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
Problemas con AdoQuery / Parametros mateamargo SQL 4 18-04-2008 20:50:55
Adoquery con parametros erasmorc OOP 2 16-03-2007 14:29:15
Error al borrar con Adoquery hernitz SQL 6 07-03-2007 22:55:13
Evitar o quitar parametros en adoquery cso2000 OOP 1 21-01-2005 01:05:37
Pasar parametros a ADOQUERY JODELSA Conexión con bases de datos 1 04-09-2003 23:47:36


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


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