Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ClientDataSet in mehreren Spalten suchen (https://www.delphipraxis.net/180979-clientdataset-mehreren-spalten-suchen.html)

Luki206 4. Jul 2014 17:19

ClientDataSet in mehreren Spalten suchen
 
Hi DP, wie kann man mit dem ClientDataSet mehrere Spalten durchsuchen sprich, beide Spalten müssen meinen Kriterien entsprechen. Ich habe auch schon gegoogled aber wahrscheinlich nach dem Falschen..
Danke
Luki :spin:

himitsu 4. Jul 2014 17:26

AW: ClientDataSet in mehreren Spalten suchen
 
Das geht, wie in jedem anderen DataSet auch, indem man mehrere Namen und Werte übergibt. :angel:

Delphi-Quellcode:
Locate('feld', wert, ...)
Locate('feld1;feld2', VarArrayOf([wert1, wert2]), ...)

Luki206 4. Jul 2014 17:33

AW: ClientDataSet in mehreren Spalten suchen
 
Oh ok, danke :thumb:

PS: Ich dachte das geht in die Richtung mit
Delphi-Quellcode:
Locate(Feld1 and Feld2, Wert1 and Wert2, ...
:mrgreen:

Edit: ich bekomme den Fehler
Code:
[dcc32 Fehler] haupt.pas(213): E2010 Inkompatible Typen: 'array of Variant' und 'string'
:gruebel:

Sir Rufo 4. Jul 2014 17:36

AW: ClientDataSet in mehreren Spalten suchen
 
Zitat:

Zitat von Luki206 (Beitrag 1264483)
Oh ok, danke :thumb:

PS: Ich dachte das geht in die Richtung mit
Delphi-Quellcode:
Locate(Feld1 and Feld2, Wert1 and Wert2, ...
:mrgreen:

Ja, so steht das ja auch in der Dokumentation Delphi-Referenz durchsuchenTDataSet.Locate, oder etwa doch anders?

himitsu 4. Jul 2014 17:42

AW: ClientDataSet in mehreren Spalten suchen
 
Zitat:

Zitat von Luki206 (Beitrag 1264483)
Edit: ich bekomme den Fehler
Code:
[dcc32 Fehler] haupt.pas(213): E2010 Inkompatible Typen: 'array of Variant' und 'string'
:gruebel:

Dann machst du was falsch?
Aber ich kann jetzt nciht sagen was, da ich ja nicht weiß was du genau machst. :wink:


Es geht natürlich auch so
Delphi-Quellcode:
Locate('feld1,feld2', [wert1, wert2])
, wobei hier , und ; als Trennzeichen erlaubt sind und man sich um das Array nicht selber kümmern muß.
Man kann eventuell auch noch Leerzeichen entfernen, womit dann auch
Delphi-Quellcode:
'feld1, feld2'
ginge, falls man eine bessere Tennung mag.
Delphi-Quellcode:
type
  TDataSetHelper = class helper for TDataSet
    function Locate(const KeyFields: string; const KeyValues: Variant): Boolean; overload;
    function Locate(const KeyFields: string; const KeyValues: array of Variant; Options: TLocateOptions=[]): Boolean; overload;
    function Lookup(const KeyFields: string; const KeyValues: array of Variant; const ResultFields: string): Variant; overload;
  end;

function TDataSetHelper.Locate(const KeyFields: string; const KeyValues: Variant): Boolean;
begin
  Result := Locate(KeyFields, KeyValues, []);
end;

function TDataSetHelper.Locate(const KeyFields: string; const KeyValues: array of Variant; Options: TLocateOptions): Boolean;
begin
  Result := Locate(ReplaceStr(KeyFields, ',', ';'), VarArrayOf(KeyValues), Options);
end;

function TDataSetHelper.Lookup(const KeyFields: string; const KeyValues: array of Variant; const ResultFields: string): Variant;
begin
  Result := Lookup(ReplaceStr(KeyFields, ',', ';'), VarArrayOf(KeyValues), ResultFields);
end;

Luki206 4. Jul 2014 17:43

AW: ClientDataSet in mehreren Spalten suchen
 
Ok, danke. Der Fehler hat sich erübrigt, habe anscheinend nur eckige Klammern vergessen

himitsu 4. Jul 2014 17:44

AW: ClientDataSet in mehreren Spalten suchen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1264484)
Ja, so steht das ja auch in der Dokumentation Delphi-Referenz durchsuchenTDataSet.Locate, oder etwa doch anders?

Es kommt drauf an, welche Doku du davon verwendest. :angel: (z.B. die vom TBDEDataSet)


[edit] Ups. Ja, die Klammern vergessen. :oops:

Sir Rufo 4. Jul 2014 18:13

AW: ClientDataSet in mehreren Spalten suchen
 
Zitat:

Zitat von himitsu (Beitrag 1264487)
Zitat:

Zitat von Sir Rufo (Beitrag 1264484)
Ja, so steht das ja auch in der Dokumentation Delphi-Referenz durchsuchenTDataSet.Locate, oder etwa doch anders?

Es kommt drauf an, welche Doku du davon verwendest. :angel: (z.B. die vom TBDEDataSet)

Die eine ist mit "Bildern" und die andere nur mit Beschreibung ... die Aussagen sind aber gleich.

himitsu 4. Jul 2014 18:16

AW: ClientDataSet in mehreren Spalten suchen
 
Ahhh, hab's im TDataSet.Locate gefunden ... siehe "Siehe auch" :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.

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