Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2012
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola jsc, hice una prueba con la función Nz pero solo funciona desde Access, hice la prueba también con la función "IIF", al parecer también funciona si es que entendido bien lo que preguntas, has la prueba y nos cuentas.

Código SQL [-]
//tienes que acomodarlo a tu consulta, pero esa es la idea
SELECT *
FROM tabla
WHERE nombre like '%param%' and ..... and IIF(ISNULL(telef1 like '%param%'),'',telef1).....

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #2  
Antiguo 14-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola jsc, hice una prueba con la función Nz pero solo funciona desde Access, hice la prueba también con la función "IIF", al parecer también funciona si es que entendido bien lo que preguntas, has la prueba y nos cuentas.

Código SQL [-]
//tienes que acomodarlo a tu consulta, pero esa es la idea
SELECT *
FROM tabla
WHERE nombre like '%param%' and ..... and IIF(ISNULL(telef1 like '%param%'),'',telef1).....

Saluditos
Muchas gracias Caro
Lo pruebo y comento resultados
Responder Con Cita
  #3  
Antiguo 15-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
gracias a todos los las ayudas pero no lo consigo
probe tambien lo que comentaba Caro pero tampoco me funciono
Código:
sql.add (' where IIF(ISNull(NOMBRE like :nomb),NOMBRE,'+chr(39)+chr(39)+') AND'+
   ' IIF(IsNull(DIRECCION like :direc),DIRECCION,'+chr(39)+chr(39)+') AND'+
   ' IIF(IsNull(TELEF1 like :tlf1),TELEF1,'+chr(39)+chr(39)+') AND'+
   ' IIF(IsNull(TELEF2 like :tlf2),TELEF2,'+chr(39)+chr(39)+')');
parambyname ('nomb').asstring := '%'+edit1.Text+'%' ;
parambyname ('direc').asstring := '%'+edit2.text+'%';
parambyname ('tlf1').asstring := '%'+edit3.text+'%';
parambyname ('tlf2').asstring := '%'+edit4.text+'%'
sinceramente no lo entiendo e insisto en que creo que es un problema de como access puede guardar los datos cuando algun campo es actualizado a un valor Null o incluso si ya viene con ese valor

pongo un programita donde vereis lo que quiero y como lo hago
quiza no lo este haciendo bien y aqui podreis ver mas en detalle el tema

gracias nuevamente
Archivos Adjuntos
Tipo de Archivo: zip pruebas_consulta_sql.zip (18,3 KB, 4 visitas)
Responder Con Cita
  #4  
Antiguo 16-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Hola de nuevo,
aburrido de probar con la funcion IIF... algo se acercaba a lo que pretendia pero no daba con el correcto funcionamiento

cambie de metodo y consegui lo que me pretendia
en un principio pense que todo esto seria mas facil; en fin de todo se aprende
dejo el codigo y el programa de como a mi me ha funcionado por si a alguien le ocurre lo mismo
PROPOSITO: lanzar una consulta con los parametros que haya en 1,2,3... los edit que sean
solucionado si el campo es Null... devuelve las coincidencias de los edit

gracias a los que se interesaron por mi consulta;

codigo de la funcion:
Código:
function fAsigParamconsul (str:string):string;
var i,j:integer;
    camp,crit:string ;
begin
   with form1 do
   begin
      j:= 0 ;
      FOR i:=1 to 4 DO
      begin
         CASE i OF
            1: camp:= 'NOMBRE';
            2: camp:= 'DIRECCION';
            3: camp:= 'TELEF1';
            4: camp:= 'TELEF2';
         END;{FIN case}
      IF TEdit(Findcomponent('Edit'+inttostr(i))).Text <> ''
      then
         begin
            CASE j OF
               0: crit:='WHERE' ;
               1: crit:='AND' ;
            END;{FIN case}
         {SELECT * FROM TABLA WHERE CAMPO LIKE param}
         str := str+' '+crit+' '+camp+' LIKE '+chr(39)+'%'+TEdit(FindComponent('Edit'+inttostr(i))).Text+'%'+chr(39);
         j:= 1 ;
         end{FIN then TEdit <> ''}
//      else j:= 0 ;{ELSE TEdit <> ''}
      end;{FIN bucle FOR}
      Result := str ;
   end;{FIN with frm}
end;
llamada a la funcion
Código:
strconsul:=fAsigParamConsul ('SELECT * FROM TABLA1')
Archivos Adjuntos
Tipo de Archivo: zip SOLUCIONADO_pruebas_consulta_sql.zip (18,4 KB, 1 visitas)
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
problema con una consulta leofuentes21 SQL 6 28-02-2011 16:04:27
problema con consulta sql gonza_619 Varios 6 22-07-2010 19:42:56
problema en consulta metroyd MySQL 2 09-03-2008 19:35:58
Problema con Consulta Tolón SQL 5 29-01-2007 23:52:19
problema con consulta. jsanchez SQL 2 20-05-2003 19:35:55


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


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