Domanda

Questo mi ha sempre attirato su qual è il modo migliore per fare quanto segue ...

con un semplice da uno a molti db, quando si hanno 2 tabelle / griglie in un modulo e il secondo filtrato dal primo.

dove è il posto migliore dove inserire il codice filtro
vale a dire:

procedure TForm1.tblCustormersAfterScroll(DataSet: TDataSet);
begin
  if tblCustormersCustormerID.AsString <> '' then
   begin
     tblCustormersThings.Filter := 'CustormerID = ' + tblCustormersCustormerID.AsString;
     tblCustormersThings.Filtered := true;
   end;
end;

AfterScroll sembra funzionare la maggior parte delle volte, ma non viene licenziato su alcuni eventi, ad esempio dopo la pubblicazione. Normalmente avrei una procedura per fare l'aggiornamento del filtro e metterlo dove mai sembra essere necessario.

Ma mi chiedevo se ci fosse un modo migliore, sembra che semplicemente cose che Delphi dovrebbe sapere su ...

Non credo sia importante, ma sto usando Delphi7 e NexusDB1

È stato utile?

Soluzione

Devi impostare MasterSource e le proprietà dei campi master su " many " lato.

Si chiama relazione Master - Dettaglio e dovresti verificare con l'aiuto di NexusDB un modo per creare questa relazione tra le tabelle.

Se la tua tabella supporta gli indici, puoi creare un indice su CustomerID e utilizzare anche il metodo SetRange () .

Il modo in cui imposti Filter è il più lento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top