Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2021
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Encontrar un parámetro

Tengo un TIBQuery que se monta de forma dinámica en función de las opciones que elige el usuario y dependiendo de ellas puede o no llevar un determinado parámetro. Queda una cosa así:
Código:
fMEnu->Query->SQL->Text = "SELECT[...]";
fMenu->Query->SQL->Add("WHERE TRUNC(B.Estadistica / 100) = :Estadistica");
if (this->Tag != 1)
     fMenu->Query->SQL->Add("AND A.CodPrv = :PrvIns");
He estado mirando en la ayuda de Builder las funciones FindParam y GetParamList pero no acabo de entender como funcionan; ¿podríais indicarme como usar una de ellas (o ambas) para saber si ese parámetro PrvIns está presente en query?
Responder Con Cita
  #2  
Antiguo 29-01-2021
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola,

FindParam busca el parámetro dentro de la consulta y devuelve el objeto. En caso de no existir, en Delphi devuelve un nil

Código Delphi [-]
  AQuery.SQL.Text := 'SELECT * FROM TABLA WHERE CAMPO1 = :CAMPO1';

  if CheckBox1.Checked then
    AQuery.SQL.Add('  AND CAMPO2 = :CAMPO2';

  AQuery.Params.ParamsByName('CAMPO1').Value := Valor1;

  if Assigned(AQuery.Params.FindParam('CAMPO2')) then
    AQuery.Params.ParamsByName('CAMPO2').Value := Valor2;

GetParamList, Permite hacer una búsqueda similar pero con mas de un parámetro. En este caso llena un TList.

Código Delphi [-]
var
  i: integer;
  ListaP: TList < TParam >;
begin
  AQuery.SQL.Text := 'SELECT * FROM TABLA WHERE CAMPO1 = :CAMPO1';

  if CheckBox1.Checked then
    AQuery.SQL.Add('  AND CAMPO2 = :CAMPO2';

  if CheckBox2.Checked then
    AQuery.SQL.Add('  AND CAMPO3 = :CAMPO3';

  if CheckBox3.Checked then
    AQuery.SQL.Add('  AND CAMPO4 = :CAMPO4';

  AQuery.Params.ParamsByName('CAMPO1').Value := Valor1;
  
  ListaP := TList < TParam >.Create;
  try
    AQuery.Params.GetParamList(ListaP, ['CAMPO2;CAMPO3;CAMPO4']);
    
    for i := 0 to ListaP.Count - 1 do
    begin
      //Aquí puedo interactuar con los parámetros presentes en la lista
    end;
  finally
    ListaP.free;
  end;    
end;
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #3  
Antiguo 29-01-2021
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias por la ayuda.
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
Encontrar DLL en 64 bits lmir API de Windows 3 20-04-2013 03:34:56
Encontrar aniversarios Angel.Matilla SQL 16 07-03-2012 10:48:52
Encontrar objeto por su nombre, encontrar metodo, ejecutar metodo coso Trucos 7 02-09-2011 00:23:13
Encontrar la paz interior santana Humor 3 14-06-2004 18:47:35
encontrar el siguiente en ado jzginez Conexión con bases de datos 1 21-05-2004 11:42:08


La franja horaria es GMT +2. Ahora son las 10:24:26.


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