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 20-06-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
ParamByName siempre tiene que ir al final ?

Hola amigos !

En una sentencia SQL (en mi caso con componente IBX e InterBase 7.5), la lista de parámetros pasados mediante ParamByName siempre tiene que ir al final de la creación de la sentencia SQL ??

Así me funciona :
Código Delphi [-]
with IBDataSet1 do begin
  SelectSQL.Clear;
  SelectSQL.Add('Select * from TABLA1');
  SelectSQL.Add('where CAMPO1 = :Txt1');
  SelectSQL.Add('and CAMPO2 = 0');
  ParamByName('Txt1').Value := 'lo que sea';
  Prepare;
  Open;
end;

Así parece que no :
Código Delphi [-]
with IBDataSet1 do begin
  SelectSQL.Clear;
  SelectSQL.Add('Select * from TABLA1');
  SelectSQL.Add('where CAMPO1 = :Txt1');
  ParamByName('Txt1').Value := 'lo que sea';
  SelectSQL.Add('and CAMPO2 = 0');
  Prepare;
  Open;
end;

Se me ha planteado el asunto porque en este caso voy creando la sentencia SQL de manera dinámica dependiendo de diferentes condiciones, y a cada condición le corresponden unos parámetros concretos.

Saludos a todos
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 20-06-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, la verdad es que yo también he practicado dicha actividad en ciertas ocaciones y me a ido bien, nunca he tenido problemas tecnicos al respecto. Pues lo importante (Técnicamente hablando) es que el parámetro ya exista antes de darle un valor, pero como en nuestro caso ya existe, pues por eso no se queja el compilador, ni nada por el estilo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 20-06-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Gracias Jhonny por responder.

Pero lo que quiero decir es que a mi no me funciona según la segunda versión que detallo arriba. El compilador no me lanza error, pero la consulta en Interbase no me devuelve los registros que son. Por eso preguntaba.

Al final opté por no utilizar parámetros en dicha consulta y convertir directamente todo lo que necesito a Strings e incluirlos directamente en el texto de la consulta SQL.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 20-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Supongo que al acceder a parambyname es cuando hace el parser de la consulta... habría que mirarlo.

Puedes incluir todos los parámetros antes de acceder a parambyname. Una vez construida totalmente la consulta añades los valores:

Existen muchas formas de automatizar ese proceso, el primero que se me viene a la mente:
Código Delphi [-]
type Tparametros = record
    nombre : string;
    Value : Variant;
end

var a: array [0..MaxParametros] of TParametros;

for i:=0 to maxparametros do
begin
  p := query1.parambyname(a[i].nombre);
  if Assigned(p) then 
    p.Value := a[i].Value;
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
datetimerpicker-parambyname-SQL server 2000 DarkGirl MS SQL Server 13 15-08-2007 23:39:09
Win Vista final y Office 2007 final Pirateados radaalvaro Noticias 6 14-11-2006 19:21:20
Problemas con ParamByName Memo ramonibk MS SQL Server 2 14-09-2004 13:15:26
Insert y parambyname Dantael SQL 1 17-11-2003 08:50:24


La franja horaria es GMT +2. Ahora son las 08:58: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