jafera
26-08-2013, 18:38:45
Buenas a todos.
Necesito buscar un registro dentro de una tabla pero por diferentes campos, os explico tengo un form con un grid en el que se van colocando los registros seleccionados, este form tiene un edit en el que tecleo el nombre, la licencia, el dni o el codigo uci y mediante una consulta filtro los registros que cumplan la condicion para poder elegir el que corresponda, por ejemplo si tecleo gomez, me manda en un for auxiliar todos los registros que empiezan por gomez, si tecleo 12345678 me busca primero en el nombre, como no lo encuentra tendria que buscar en el dni pero me devuelve la consulta en blanco.
Este es el código:
procedure TF_Inscripcions.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If (Key=#13) then
begin
F_BuscarInscripcio:=TF_BuscarInscripcio.Create(Application);
begin
F_BuscarInscripcio.BuscarCorredor.Close;
F_BuscarInscripcio.BuscarCorredor.SQL.Clear;
F_BuscarInscripcio.BuscarCorredor.SQL.Add('SELECT DORSAL, NOM_LLARG, DNI, LLICENCIA, CODIUCI, NACIO, CLUB, ABR_CLUB, PUBLICITAT, EDAT, CATEGORIA FROM CTR0003');
F_BuscarInscripcio.BuscarCorredor.SQL.Add('WHERE NOM_LLARG STARTING' +QuotedStr(Edit1.Text));
F_BuscarInscripcio.BuscarCorredor.SQL.Add('ORDER BY NOM_LLARG');
F_BuscarInscripcio.BuscarCorredor.Open;
If F_BuscarInscripcio.BuscarCorredor.Recordcount>0 then
Abort;
end;
begin
F_BuscarInscripcio.BuscarCorredor.Close;
F_BuscarInscripcio.BuscarCorredor.SQL.Clear;
F_BuscarInscripcio.BuscarCorredor.SQL.Add('SELECT DORSAL, NOM_LLARG, DNI, LLICENCIA, CODIUCI, NACIO, CLUB, ABR_CLUB, PUBLICITAT, EDAT, CATEGORIA FROM CTR0003');
F_BuscarInscripcio.BuscarCorredor.SQL.Add('WHERE LLICENCIA STARTING' +QuotedStr(Edit1.Text));
F_BuscarInscripcio.BuscarCorredor.SQL.Add('ORDER BY LLICENCIA');
F_BuscarInscripcio.BuscarCorredor.Open;
if F_BuscarInscripcio.BuscarCorredor.RecordCount>0 then
Abort;
end;
begin
F_BuscarInscripcio.BuscarCorredor.Close;
F_BuscarInscripcio.BuscarCorredor.SQL.Clear;
F_BuscarInscripcio.BuscarCorredor.SQL.Add('SELECT DORSAL, NOM_LLARG, DNI, LLICENCIA, CODIUCI, NACIO, CLUB, ABR_CLUB, PUBLICITAT, EDAT, CATEGORIA FROM CTR0003');
F_BuscarInscripcio.BuscarCorredor.SQL.Add('WHERE DNI STARTING' +QuotedStr(Edit1.Text));
F_BuscarInscripcio.BuscarCorredor.SQL.Add('ORDER BY DNI');
F_BuscarInscripcio.BuscarCorredor.Open;
if F_BuscarInscripcio.BuscarCorredor.RecordCount>0 then
Abort;
end;
begin
F_BuscarInscripcio.BuscarCorredor.Close;
F_BuscarInscripcio.BuscarCorredor.SQL.Clear;
F_BuscarInscripcio.BuscarCorredor.SQL.Add('SELECT DORSAL, NOM_LLARG, DNI, LLICENCIA, CODIUCI, NACIO, CLUB, ABR_CLUB, PUBLICITAT, EDAT, CATEGORIA FROM CTR0003');
F_BuscarInscripcio.BuscarCorredor.SQL.Add('WHERE CODIUCI STARTING' +QuotedStr(Edit1.Text));
F_BuscarInscripcio.BuscarCorredor.SQL.Add('ORDER BY CODIUCI');
F_BuscarInscripcio.BuscarCorredor.Open;
if F_BuscarInscripcio.BuscarCorredor.RecordCount>0 then
end;
F_BuscarInscripcio.Show;
end;
end;
No se si los Abort esan bien colocados o donde puede estar el fallo, pero no me salta de un bloque a otro si el recordcount vale > 0
Gracias y saludos
Josep
Necesito buscar un registro dentro de una tabla pero por diferentes campos, os explico tengo un form con un grid en el que se van colocando los registros seleccionados, este form tiene un edit en el que tecleo el nombre, la licencia, el dni o el codigo uci y mediante una consulta filtro los registros que cumplan la condicion para poder elegir el que corresponda, por ejemplo si tecleo gomez, me manda en un for auxiliar todos los registros que empiezan por gomez, si tecleo 12345678 me busca primero en el nombre, como no lo encuentra tendria que buscar en el dni pero me devuelve la consulta en blanco.
Este es el código:
procedure TF_Inscripcions.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If (Key=#13) then
begin
F_BuscarInscripcio:=TF_BuscarInscripcio.Create(Application);
begin
F_BuscarInscripcio.BuscarCorredor.Close;
F_BuscarInscripcio.BuscarCorredor.SQL.Clear;
F_BuscarInscripcio.BuscarCorredor.SQL.Add('SELECT DORSAL, NOM_LLARG, DNI, LLICENCIA, CODIUCI, NACIO, CLUB, ABR_CLUB, PUBLICITAT, EDAT, CATEGORIA FROM CTR0003');
F_BuscarInscripcio.BuscarCorredor.SQL.Add('WHERE NOM_LLARG STARTING' +QuotedStr(Edit1.Text));
F_BuscarInscripcio.BuscarCorredor.SQL.Add('ORDER BY NOM_LLARG');
F_BuscarInscripcio.BuscarCorredor.Open;
If F_BuscarInscripcio.BuscarCorredor.Recordcount>0 then
Abort;
end;
begin
F_BuscarInscripcio.BuscarCorredor.Close;
F_BuscarInscripcio.BuscarCorredor.SQL.Clear;
F_BuscarInscripcio.BuscarCorredor.SQL.Add('SELECT DORSAL, NOM_LLARG, DNI, LLICENCIA, CODIUCI, NACIO, CLUB, ABR_CLUB, PUBLICITAT, EDAT, CATEGORIA FROM CTR0003');
F_BuscarInscripcio.BuscarCorredor.SQL.Add('WHERE LLICENCIA STARTING' +QuotedStr(Edit1.Text));
F_BuscarInscripcio.BuscarCorredor.SQL.Add('ORDER BY LLICENCIA');
F_BuscarInscripcio.BuscarCorredor.Open;
if F_BuscarInscripcio.BuscarCorredor.RecordCount>0 then
Abort;
end;
begin
F_BuscarInscripcio.BuscarCorredor.Close;
F_BuscarInscripcio.BuscarCorredor.SQL.Clear;
F_BuscarInscripcio.BuscarCorredor.SQL.Add('SELECT DORSAL, NOM_LLARG, DNI, LLICENCIA, CODIUCI, NACIO, CLUB, ABR_CLUB, PUBLICITAT, EDAT, CATEGORIA FROM CTR0003');
F_BuscarInscripcio.BuscarCorredor.SQL.Add('WHERE DNI STARTING' +QuotedStr(Edit1.Text));
F_BuscarInscripcio.BuscarCorredor.SQL.Add('ORDER BY DNI');
F_BuscarInscripcio.BuscarCorredor.Open;
if F_BuscarInscripcio.BuscarCorredor.RecordCount>0 then
Abort;
end;
begin
F_BuscarInscripcio.BuscarCorredor.Close;
F_BuscarInscripcio.BuscarCorredor.SQL.Clear;
F_BuscarInscripcio.BuscarCorredor.SQL.Add('SELECT DORSAL, NOM_LLARG, DNI, LLICENCIA, CODIUCI, NACIO, CLUB, ABR_CLUB, PUBLICITAT, EDAT, CATEGORIA FROM CTR0003');
F_BuscarInscripcio.BuscarCorredor.SQL.Add('WHERE CODIUCI STARTING' +QuotedStr(Edit1.Text));
F_BuscarInscripcio.BuscarCorredor.SQL.Add('ORDER BY CODIUCI');
F_BuscarInscripcio.BuscarCorredor.Open;
if F_BuscarInscripcio.BuscarCorredor.RecordCount>0 then
end;
F_BuscarInscripcio.Show;
end;
end;
No se si los Abort esan bien colocados o donde puede estar el fallo, pero no me salta de un bloque a otro si el recordcount vale > 0
Gracias y saludos
Josep