PDA

Ver la Versión Completa : Consulta rapida sobre buscar en una tabla


Leopard2
10-06-2014, 03:54:46
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 :

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:


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


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

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:

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