Einzelnen Beitrag anzeigen

Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#17

AW: Tabelle durchsuchen ohne Angabe eines Feldnamens

  Alt 4. Dez 2011, 05:18
Hmm.. O(n*m*m), wobei n=Recordcount und m=Fieldcount, weil bei dem Code immer erst das Feld anhand des Feldnamens gesucht werden muss.

Wieso nicht schlicht, ergreifend und am naheliegensten:
Delphi-Quellcode:
MyDataset.First;
While Not MyDataSet.Eof Do Begin
  For i:=0 to MyDataset.Fieldcount-1 do
     If ContaintsText (Search, MyDataset.Fields[i].AsString) Then
        ShowMEssage(Format('Gefunden in Feld "%s" in Record #%d',[MyDataSet.Fields[i].Name, MyDataSet.RecNo]));
  MyDataset.Next
End;
Der Aufwand dürfte O(n*m) sein.

Damit ist die Forderung des Fragestellers erfüllt: KEINE Feldnamen (außer zur Ausgabe).Schneller (vom algorithmischen Aufwand her) geht es in Memory nicht.

Auch per SQL wird man nicht umhin kommen, alle Spalten zu durchsuchen.

Abhilfe: Man designt die Tabelle so, das die Felder selbst als Metadaten gehalten sind.
  Mit Zitat antworten Zitat