Table - obter recordcount mesmo estando filtrado |
Top Previous Next |
|
uses DbiProcs
// Os componentes TTable e TQuery possuem a propriedade RecordCount // que indicam a quantidade de registros da tabela. // No entanto esta propriedade é dependente de filtros, ou seja, se // tivermos uma tabela com dez registros com campo "Codigo" de 1 a 10 e // aplicarmos o filtro mostrado a seguir, a propriedade RecordCount // retornará 5 e não 10.
Table1.Filter := 'Codigo <= 5'; Table1.Filtered := true;
// Se quizermos obter a quantidade total de registros, // independentemente de filtros, devemos usar uma API do BDE conforme abaixo:
var Total: integer; begin Check(DbiGetRecordCount(Table1.Handle, Total)); ShowMessage('Total de registros: ' + IntToStr(Total)); end;
// Para testar o exemplo acima, o Table1 precisa estar aberto. é OBVIO
================ OUTRO EXEMPLO =====================
function RecNo(Dataset: TBDEDataset): Longint; var RecordProps: RECProps; CursorProps : CurProps; begin Result := 0; with Dataset do begin // dataset deve estar ativo if State = dsInactive then raise EDatabaseError.Create('Dataset não pode estar fechado'); DbiGetCursorProps(Handle, CursorProps); // preenche RecordProps com as propriedades do registro DbiGetRecord(Handle, dbiNOLOCK, nil, @RecordProps); // CursorProps.iSeqNums tem o tipo de números de registro case CursorProps.iSeqNums of 0: Result := RecordProps.iPhyRecNum; // 0 - números de registro (DBase) 1: Result := RecordProps.iSeqNum; // 1 - números de seqüência (Paradox) end; end; end;
procedure TForm1.Table1CalcFields(DataSet: TDataSet); begin Table1RecNo.Value := RecNo(Table1); end; |