Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Tabelle durchsuchen ohne Angabe eines Feldnamens (https://www.delphipraxis.net/164865-tabelle-durchsuchen-ohne-angabe-eines-feldnamens.html)

smart 3. Dez 2011 13:49

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?

mkinzler 3. Dez 2011 14:03

AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
 
Direkt überhaupt nicht. Man könnte dynamisch die Felder der Tabelle ermitteln und dann in diesen suchen.

smart 3. Dez 2011 14:11

AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
 
Zitat:

Zitat von mkinzler (Beitrag 1139083)
Direkt überhaupt nicht. Man könnte dynamisch die Felder der Tabelle ermitteln und dann in diesen suchen.

ist es nicht möglich eine Tabelle so ähnlich wie eine Stringliste zu durchsuchen?

Bummi 3. Dez 2011 14:39

AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
 
Mir wird ganz schlecht bei dem was ich jetzt schreibe...
Delphi-Quellcode:
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;
(ungetestet)

Stevie 3. Dez 2011 14:46

AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
 
Zitat:

Zitat von Bummi (Beitrag 1139091)
Mir wird ganz schlecht bei dem was ich jetzt schreibe...

Mir auch, wenn ich den Einsatz von Pos>0 und Upper oder Lowercase lese, wo man einfach ContainsText (case insensitive) oder ContainsStr (case sensitive) benutzen könnte :)

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 Locate helfen.

Bummi 3. Dez 2011 15:04

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:
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;
4727
3916

Stevie 3. Dez 2011 15:56

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.

Bummi 3. Dez 2011 16:26

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"

smart 3. Dez 2011 17:13

AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
 
Wieso klappt dieser Code nicht?
Delphi-Quellcode:
      Form1.ABSTable1.Locate(Form1.ABSTable1.Fields['*'].DisplayName , Edit1.Text,[loPartialKey]);
in Edit1 seht der zu suchende Text.

Stevie 3. Dez 2011 17:54

AW: Tabelle durchsuchen ohne Angabe eines Feldnamens
 
Auch wenn du als Abfrage
Code:
select * from table
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz