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.