Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 09-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Tal vez a alguien le interese:

Para tener un parámetro con el mismo valor y que ADO no se haga pelotas con los nombres, se puede optar por declarar variables en la consulta SQL.

Una consulta normal:
Código Delphi [-]
with UnADOQuery do begin
...
SQL.Add('Select UnCampo');
SQL.Add('From UnaTabla');
SQL.Add('Where Nombre = :Nombre');
SQL.Add('or SegundoNombre = :Nombre');
...
Parameters.ParambyName('Nombre').value := edtNombre.text;
...

generaría errores con los nombres de los parámetros, ya que, a diferencia de BDE, no se puede tener establecido varias veces el mismo parámetro.

Por lo que se tendría que hacer algo como:
Código Delphi [-]
with UnADOQuery do begin
...
SQL.Add('Select UnCampo');
SQL.Add('From UnaTabla');
SQL.Add('Where Nombre = :Nombre');
SQL.Add('or SegundoNombre = :Nombre2');
...
Parameters.ParambyName('Nombre').value := edtNombre.text;
Parameters.ParambyName('Nombre2').value := edtNombre.text;
...

Tal vez en el ejemplo no se note mucho, ya que solo se usa dos veces. Pero cuando tenemos que usar el mismo valor 5 o 6 veces, ya se empieza a hacer tedioso.

La opción que me ha funcionado con ADO y SQL Server, es declarar las variables en la consulta SQL:

Código Delphi [-]
 with UnADOQuery do begin
 ...
SQL.Add('Declare @Nombre as varchar(20)');
SQL.Add('Select @Nombre = :Nombre');
SQL.Add('Select UnCampo');
 SQL.Add('From UnaTabla');
 SQL.Add('Where Nombre = @Nombre');
 SQL.Add('or SegundoNombre = @Nombre');
 ...
 Parameters.ParambyName('Nombre').value := edtNombre.text;
 ...

Y con eso se puede usar el mismo parámetro tantas veces sea necesario, ya que realmente solo se pasa una sola vez el parámetro.

P.D. Aunque si tu consulta se empieza a complicar y necesitas mas parámetros, convendría utilizar un procedimiento almacenado.
__________________


Última edición por ContraVeneno fecha: 09-03-2009 a las 17:15:50.
Responder Con Cita
 



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
Media Player al 50% Pook Varios 1 18-05-2006 22:31:10
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 18:57:06
Select anidado: Select from (select....) Malon SQL 2 14-10-2004 14:01:24
Select anidado ( Select from select ) Malon Firebird e Interbase 1 05-10-2004 04:14:38


La franja horaria es GMT +2. Ahora son las 07:32:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi