Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Query.ParamByName mit Mengen (https://www.delphipraxis.net/197155-query-parambyname-mit-mengen.html)

DCoderHH 19. Jul 2018 11:33

Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC

Query.ParamByName mit Mengen
 
Hallo,

wie kann ich bei Query.ParamByName eine Menge übergeben?

Bisher nutze ich das so:

Code:
 Query.SQL.Text := 'SELECT * FROM MyTable WHERE Vorname = :Vorname and Alter in (34,55,89)';
 Query.ParamByName('Vorname').Value := 'Peter';
Ich möchte das aber so in der Art nutzen:

Code:
 Query.SQL.Text := 'SELECT * FROM MyTable WHERE Vorname = :Vorname and Alter in :Alter';
 Query.ParamByName('Vorname').Value := 'Peter';
 Query.ParamByName('Alter').Value := [34,55,89];
Wie? Danke!

hoika 19. Jul 2018 11:57

AW: Query.ParamByName mit Mengen
 
Hallo,
mit AsString und mit Komma getrennt vielleicht?

himitsu 19. Jul 2018 12:09

AW: Query.ParamByName mit Mengen
 
Ich dachte mal gehört zu haben, dass IBDAC-Komponenten eine Array-Funktionalität besitzen, also statt .Value oder .Text usw. etwas, wo man auch einen Index benutzen kann. (im PGDAC fand ich leider noch nichts)

Du kannst es aber mal so versuchen
Delphi-Quellcode:
Field.Variant := VarArrayCreate(...);
?


Ich hatt es zuletzt so gemacht, dass ich mein Array als kommaseparierten String übergab und auf Datenbankseite in ein Array umwandelte.
SQL-Code:
Alter in unnest(string_to_array(:liste, ',')) -- ParamByName('liste').AsString := '34,55,89';
Alter in regexp_split_to_table(:liste, ',')


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 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