Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿Qué falla aquí? (https://www.clubdelphi.com/foros/showthread.php?t=27867)

jdangosto 02-12-2005 09:51:04

¿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?

Héctor Randolph 02-12-2005 09:57:25

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.

jdangosto 02-12-2005 10:55:08

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...

rastafarey 02-12-2005 14:33:05

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;

roman 02-12-2005 16:22:05

¿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

jdangosto 13-12-2005 08:55:06

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


La franja horaria es GMT +2. Ahora son las 03:44:03.

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