Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-12-2005
jdangosto jdangosto is offline
Miembro
 
Registrado: jun 2004
Posts: 82
Poder: 20
jdangosto Va por buen camino
Question ¿Qué falla aquí?

Hola.

Tengo el siguiente código.
Código Delphi [-]
if edit1.Text = '' then begin
        MessageDlg('¡¡ Debe Introducir una Cadena a Buscar !!', mtInformation,
      [mbOk], 0);
      end //if
else begin
        case RadioGroup1.ItemIndex of
        0: begin
                buscar_nombre.Close;
                buscar_nombre.ParamByName('nom').AsString := edit1.Text+'%';
                buscar_nombre.Open;
                end;
        1: begin
                buscar_apellidos.Close;
                buscar_apellidos.ParamByName('ap').AsString := edit1.Text+'%';
                buscar_apellidos.Open;
                end;
        2: begin
                buscar_ciudad.Close;
                buscar_ciudad.ParamByName('ciu').AsString := edit1.Text+'%';
                buscar_ciudad.Open;
                end;
        3: begin
                buscar_notas.Close;
                buscar_notas.ParamByName('not').AsString := '%' + edit1.Text +'%';
                buscar_notas.Open;
                end;
        end;//case
end;//else

Al compilar no da níngun error, e incluso si realizo una búsqueda por Nombre, seleccionando el Item 0 del radiogroup funciona a la perfeccion. El problema que tengo es el siguiente:
- SI quiero volver a realizar una búsqueda introduciendo otro nombre en el edit no me funciona y seleccionando la opción 0 del radiogroup no se ejecuta.
- Cuando eligo cualquier otra opción del radiogroup da un error diciendo que el parametro 'nom' , que se pasa en la primera opción, no lo encuentra, cuando debería de estar actuando otro parametro según la opción que elijas.

¿Qué está mal?
__________________
Lo que los Ojos ven y los Oidos Oyen la Mente se lo Cree (H.Houdini)
Responder Con Cita
  #2  
Antiguo 02-12-2005
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 escribes, la consulta maneja diferentes parámetros, nom, ap, etc.

Ahora, la pregunta es ¿Están bien definidos los parámetros en el texto del query?

¿Estos parámetros se excluyen entre si?

Deberías de publicar aqui la sentencia SQL que estás utilizando, creo que ahí es en donde se puede encontrar el error.

Un saludo.
Responder Con Cita
  #3  
Antiguo 02-12-2005
jdangosto jdangosto is offline
Miembro
 
Registrado: jun 2004
Posts: 82
Poder: 20
jdangosto Va por buen camino
Si es cierto, manejo varios parámetros.

Cada opción case llama a consultas totalmente distintas.
La sentencia sql utilizada para las consultas es la siguiente:
Código SQL [-]
size="1">
SELECT Nombre, Apellidos, Direccion, Ciudad, Contactos."Tlf.Trabajo", Contactos."Tlf.movil", Mail, Notas, Contactos."Tlf.casa"

FROM "contactos.DB" Contactos

where (Nombre LIKE :nom);


Según la consulta que se ejecute, el parámetro cambia, es decir, para buscar_nombre el parametro sería nom; para buscar_apellidos el parametro sería ap, etc...
__________________
Lo que los Ojos ven y los Oidos Oyen la Mente se lo Cree (H.Houdini)
Responder Con Cita
  #4  
Antiguo 02-12-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

haber si esto te sirve
Código Delphi [-]
procedure ElNombreQueSea;
Const
  csSql = 'SELECT Nombre, Apellidos, Direccion, Ciudad, Contactos."Tlf.Trabajo",'+
  ' Contactos."Tlf.movil", Mail, Notas, Contactos."Tlf.casa" FROM "contactos.DB" '+
  'Contactos where (%s LIKE ''%s'')';
  csCampos: Array[0..3] Of String = ('Nombre', 'Apellidos', 'Ciudad', 'Notas');
begin
  If Edit1.Text = '' Then
    MessageDlg('¡¡ Debe Introducir una Cadena a Buscar !!', mtInformation,[mbOk], 0)
  Else Begin
    If ElMismoQuery.Active Then
      ElMismoQuery.Close;
    ElMismoQuery.SQL.Text := Format(csSql, [csCAmpos[RadioGroup1.ItemIndex], '%'+Edit1.Text+'%']);
    ElMismoQuery.Open;
  End;
end;
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #5  
Antiguo 02-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Qué tal si haces una traza de tu aplicación ponienedo un punto de ruptura al comienzo del IF? Ya que la hagas regresas y nos aclaras si no entra en cada opción, o sí entra pero no ejecuta la consulta como esperas.

// Saludos
Responder Con Cita
  #6  
Antiguo 13-12-2005
jdangosto jdangosto is offline
Miembro
 
Registrado: jun 2004
Posts: 82
Poder: 20
jdangosto Va por buen camino
Question

Hola de nuevo.


Ante todo perdonad la tardanza por contestar pero he estado unos días de vacaciones, y me ha resultado imposible el conectar.

En cuanto a lo que indicabas Roman, he probado a poner un Break en cada parte del if. Y se puede observar lo siguiente.

- Cuando lo pones al comienzo del IF si entra.
- Cuando lo pones en la opción 0 del case si entra
- En el momento que pongas el punto de ruptura en otra opción, no entra (el break se pone en verde), y además si reiteras la opción que falla el resultado es que el parámetro que se le pasa a la primera opción del case es el que intenta ejecutar en las siguientes.

A ver si se ocurre algo.

Saludos
__________________
Lo que los Ojos ven y los Oidos Oyen la Mente se lo Cree (H.Houdini)
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


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


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