![]() |
Datenbank: ABS • Version: 6.8 • Zugriff über: DataSource
Tabelle durchsuchen ohne Angabe eines Feldnamens
Halle,
wie kann ich eine Tabelle ohne Angabe von Feldnamen, also die ganze Tabelle durchsuchen? |
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
Direkt überhaupt nicht. Man könnte dynamisch die Felder der Tabelle ermitteln und dann in diesen suchen.
|
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
Zitat:
|
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
Mir wird ganz schlecht bei dem was ich jetzt schreibe...
Delphi-Quellcode:
(ungetestet)
Found := -1;
While not DS.EOF and (Found=-1) do begin For i := 0 to DS.FieldCount - 1 do begin if pos(Uppercase(Search),Uppercase(DS.Fields[i].asString))>0 then begin Found := i; break; end; end; if found=-1 then DS.Next; end; |
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
Zitat:
Zu dem eigentlichen Problem eine kleine Rückfrage: Willst du eine Tabelle in der Datenbank durchsuchen (also per SQL) oder hast du ein DataSet in deinem Program? Bei letzterem könnte ![]() |
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
@Stevie
Ja der Befehl schreibt sich kürzer.... ich hatte mich vor längerem trotzdem für meine Version entschieden.
Delphi-Quellcode:
4727
var
tc:Cardinal; i:Integer; begin tc := GetTickCount; for I := 0 to 10000000 do begin ContainsStr('Ein kleiner Text mit wenig Inhalt','TEXT'); end; Memo2.Lines.Add(IntToStr(GetTickCount - tc)); tc := GetTickCount; for I := 0 to 10000000 do begin Pos(UPPERCASE('TEXT'),UPPERCASE('Ein kleiner Text mit wenig Inhalt')); end; Memo2.Lines.Add(IntToStr(GetTickCount - tc)); end; 3916 |
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
Performance gegen Korrektheit einzutauschen find ich nen schlechten Deal - such mal mit deiner Version nach Umlauten - von Unicode fang ich jetzt mal nicht an.
Außerdem musst du ContainsText vergleichen, denn du machst eine case insensitive Suche - die schneidet beim direkten Zeitvergleich noch schlechter ab. |
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
Ich geb mich geschlagen ....
In einer "üblichen" Umgebung schlägt zwar die AnsiUppercase Variante immer noch bei weitem die Containstextvariante, aber was ist heute noch "üblich" |
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
Wieso klappt dieser Code nicht?
Delphi-Quellcode:
in Edit1 seht der zu suchende Text.
Form1.ABSTable1.Locate(Form1.ABSTable1.Fields['*'].DisplayName , Edit1.Text,[loPartialKey]);
|
AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
Auch wenn du als Abfrage
Code:
hast, wirst du kein field haben, was als Name '*' hat. Wenn du in allen Feldern suchen willst musst du als ersten Parameter für Locate die Liste aller Felder abgeben, in denen du suchen willst - durch Semikolon getrennt.
select * from table
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz