Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Consulta rapida sobre buscar en una tabla (https://www.clubdelphi.com/foros/showthread.php?t=86036)

Leopard2 10-06-2014 03:54:46

Consulta rapida sobre buscar en una tabla
 
Hola, tengo una duda sobre usar Locate y Select, he buscado en varios post y según lo que he leido Locate funciona en modo local, es decir si traigo los datos de la tabla a la terminal pero si uso una instrucción Select, si el registro existe me lo muestra sin problema pero si no existe como retorna el valor de "no encontrado" o "False" para tomarlo como lo hace Locate?
Uso Firebird 2.5 con IBX

Ejemplo Locate :
Código Delphi [-]
Var
  R_es: Boolean;
begin
  C_od := FBuscodi.Edit1.Text;
  if C_od = '' then
  begin
    MessageDlg('! NO puede Ingresar el Codigo en Blanco !',mtConfirmation,[mbOK], 0);
    Exit;
  end;
  R_es:= Masterdb.Bodega.Locate('CODIGO', C_od, []);
  if R_es = False then
  begin
    MessageDlg('! El Codigo NO Existe !',mtConfirmation,[mbOK], 0);
    Exit;
  end
ejemplo SQL:

Código Delphi [-]
   
  DM.ValeMas.close;
  DM.ValeMas.SelectSql.Clear;
  DM.ValeMas.SelectSql.Add('Select * From BODEGA WHERE NUMERO = :BUSCADO');
  DM.ValeMas.SelectSql.Add('ORDER BY NUMERO');
  DM.ValeMas.ParamByName('BUSCADO').AsInteger:= Nva;
  DM.ValeMas.Open;
O

Código Delphi [-]
     
  MasterDB.IBQuery1.close;
  MasterDB.IBQuery1.Sql.Clear;
  MasterDB.IBQuery1.Sql.Add('Select Codigo,Descripcion,Stock,Proveedor,Fecha_c From BODEGA WHERE CODIGO LIKE :BUSCADO');
  MasterDB.IBQuery1.ParamByName('BUSCADO').AsString:= EditCon.Text+'%';
  MasterDB.IBQuery1.Open;

Saludos

ecfisa 10-06-2014 04:54:17

Cita:

Empezado por Leopard2 (Mensaje 477546)
... pero si uso una instrucción Select, si el registro existe me lo muestra sin problema pero si no existe como retorna el valor de "no encontrado" o "False" para tomarlo como lo hace Locate?

Hola Leopard2.

Podes usar el método IsEmpty:
Código Delphi [-]
function TForm1.CodeExists(const Code: string): Boolean;
begin
  with IBQuery do
  begin
    Close;
    SQL.Text:= 'SELECT CODIGO FROM TABLA WHERE CODIGO = :PCOD';
    ParamByName('PCOD').AsString:= Code;
    Open;
    Result:= not IsEmpty;
  end;
end;

Ej. de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if CodeExists('000111') then
    ShowMessage('El código existe')
  else
    ShowMessage('El código no existe');
end;

Saludos :)

Leopard2 10-06-2014 15:57:11

Gracias por la respuesta, voy a probarlo.
saludos


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

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