Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-12-2007
coco0001 coco0001 is offline
Registrado
 
Registrado: oct 2007
Posts: 2
Poder: 0
coco0001 Va por buen camino
Question Como pasar un parametro a una consulta que usa la clausula IN

Tengo una consulta sql de la forma:

select ... from ... where campo in (arametro)

cargada en un adoquery.

Quiero pasarle el parametro, que es una lista de enteros.

Como hago para asignarle al parametro una lista de enteros, que representarian por ejemplo, identificadores de algo. ??

El parametro podria recibir por ejemplo, 1, 2, 3, luego la consulta ejecutaria

select ... from ... where campo in (1,2,3)
Responder Con Cita
  #2  
Antiguo 29-12-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola coco0001

Una forma sencilla es construir una lista de números en un StringList y luego aprovechar la propiedad CommaText para obtener la serie de números separados por comas.

Código Delphi [-]
var
  Lista: TStringList;
  Numeros: String;
begin
  Lista:=TStringList.Create;

  Lista.Add(IntToStr(1));
  Lista.Add(IntToStr(2));
  Lista.Add(IntToStr(3));
  Numeros:=Lista.CommaText;

  AdoQuery1.SQL.Add('select * from tabla where campo in (arametro)')

  // Aquí envías el parámetro a tu consulta adoquery
  AdoQuery1.Parameters.ParamByName('parametro').AsString:=Numeros;
 .
 .
 .
  Lista.Free;
end;


Saludos
Responder Con Cita
  #3  
Antiguo 29-12-2007
coco0001 coco0001 is offline
Registrado
 
Registrado: oct 2007
Posts: 2
Poder: 0
coco0001 Va por buen camino
Gracias por la respuesta pero no funciona

El hecho de armar la lista de numeros como string y pasarselo al parametro

AdoQuery1.Parameters.ParamByName('parametro').AsString:=Numeros;


de esta manera, lo que hace es que la clausula IN pregunte lo siguiente

campo in '1,2,3'

y esto no sirve ya que campo solo toma los valores individuales 1, 2 o 3, y nunca podria ser '1,2,3' como un solo valor. Se entiende ???

El parametro tendria que ser de algun tipo de arreglo o algo asi para que campo tome 1, 2 o 3.

Espero respuesta y gracias...
Responder Con Cita
  #4  
Antiguo 29-12-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Según lo que entiendo, lo que estamos tratando de hacer es formar esta consulta:

Código SQL [-]
select ... from ... where campo in (1,2,3)

que es equivalente a esta otra:

Código SQL [-]
select ... from ... where campo = 1 or campo = 2 or campo = 3

Si se complica el hecho de usar parámetros, construye directamente la sentencia en un string y ejecutala.

Código Delphi [-]
var
  Lista: TStringList;
  Numeros: String;
begin
  Lista:=TStringList.Create;

  Lista.Add(IntToStr(1));
  Lista.Add(IntToStr(2));
  Lista.Add(IntToStr(3));
  Numeros:=Lista.CommaText;

  AdoQuery1.SQL.Text:='select * from tabla where campo in ('+Numeros+')';
  AdoQuery1.Open;
 .
 .
 .
  Lista.Free;
end;

Saludos
Responder Con Cita
  #5  
Antiguo 26-04-2012
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
String Parametro String

Gracias no podia encontrar la forma, a mi me funciono, pase el parametro como un string aparte y todo bien.!!!!
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
Como pasar un parametro? b3nshi Varios 3 18-08-2007 06:54:53
Pasar SQL como parametro veloki Impresión 7 16-04-2007 15:28:37
pasar como parametro arrayq nenufer Varios 3 27-04-2006 16:43:13
Pasar como parametro el where en una funcion cso2000 MS SQL Server 2 15-02-2005 02:49:47
problemas al pasar un parametro a una consulta sql tiagor64 Conexión con bases de datos 2 24-01-2005 18:37:19


La franja horaria es GMT +2. Ahora son las 02:42:56.


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