Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Array/List-Datatype (https://www.delphipraxis.net/200540-array-list-datatype.html)

lxo 30. Apr 2019 10:55

Datenbank: Firebird • Version: 3 • Zugriff über: UniDAC

Array/List-Datatype
 
Hallo zusammen,

ich komme nicht darauf wie ich das realisieren soll bzw. macht es anders Sinn?

Folgendes Problem:
Ich habe eine Tabelle mit einem Feld in der ich eine Referenzkette schreibe.
z.B. "10.436.223.454.34" "10.1" "2" "4943.393.59"
Momentan würde ich diese Kette als String mit Punkt getrennt schreiben.
Angenehmer wäre jedoch meiner Meinung ein dynamisches array of Integer oder ähnliches.
Gibt es eine Möglichkeit so ein Array in ein Feld in der Datenbank zu sichern bzw. in ein Feld in einem Dataset?

hoika 30. Apr 2019 10:58

AW: Array/List-Datatype
 
Hallo,
FB kennt zwar arrays (https://firebirdsql.org/file/documen...bnrytypes.html), aber dafür sind die glaube ich nicht geeignet.

Warum willst du das ausdröseln?
Für eine bessere Suche?

mkinzler 30. Apr 2019 11:01

AW: Array/List-Datatype
 
Man könnte dies in einen BLOB Streamen. Firebird kennt zwar Arrays, die (clientseitige) Unterstützung dafür ist aber nicht so toll.

peterbelow 30. Apr 2019 11:02

AW: Array/List-Datatype
 
Zitat:

Zitat von lxo (Beitrag 1431345)
Hallo zusammen,

ich komme nicht darauf wie ich das realisieren soll bzw. macht es anders Sinn?

Folgendes Problem:
Ich habe eine Tabelle mit einem Feld in der ich eine Referenzkette schreibe.
z.B. "10.436.223.454.34" "10.1" "2" "4943.393.59"
Momentan würde ich diese Kette als String mit Punkt getrennt schreiben.
Angenehmer wäre jedoch meiner Meinung ein dynamisches array of Integer oder ähnliches.
Gibt es eine Möglichkeit so ein Array in ein Feld in der Datenbank zu sichern bzw. in ein Feld in einem Dataset?

Klar geht das, dazu gibt es BLOB-Felder. Du kannst halt nur nicht in einem solchen Feld direkt irgend was suche, aber eine array zu speichern und später wieder zu laden ist einfach. Schreib als erstes die Zahl der Elemente in den bolb-stream, dann den Inhalt des Arrays. Zum Laden lies ein Integer aus dem Blobstream (= Zahl der Elemente), dimensioniere den Zielarray per SetLength entsprechend und lies den Rest des stream in den Array ein.

lxo 30. Apr 2019 11:04

AW: Array/List-Datatype
 
Zitat:

Zitat von hoika (Beitrag 1431346)
Warum willst du das ausdröseln?
Für eine bessere Suche?

Genau um angenehmer an jedes Element des Eintrags zu gelangen.

lxo 30. Apr 2019 11:07

AW: Array/List-Datatype
 
Zitat:

Zitat von peterbelow (Beitrag 1431348)
Zitat:

Zitat von lxo (Beitrag 1431345)
Hallo zusammen,

ich komme nicht darauf wie ich das realisieren soll bzw. macht es anders Sinn?

Folgendes Problem:
Ich habe eine Tabelle mit einem Feld in der ich eine Referenzkette schreibe.
z.B. "10.436.223.454.34" "10.1" "2" "4943.393.59"
Momentan würde ich diese Kette als String mit Punkt getrennt schreiben.
Angenehmer wäre jedoch meiner Meinung ein dynamisches array of Integer oder ähnliches.
Gibt es eine Möglichkeit so ein Array in ein Feld in der Datenbank zu sichern bzw. in ein Feld in einem Dataset?

Klar geht das, dazu gibt es BLOB-Felder. Du kannst halt nur nicht in einem solchen Feld direkt irgend was suche, aber eine array zu speichern und später wieder zu laden ist einfach. Schreib als erstes die Zahl der Elemente in den bolb-stream, dann den Inhalt des Arrays. Zum Laden lies ein Integer aus dem Blobstream (= Zahl der Elemente), dimensioniere den Zielarray per SetLength entsprechend und lies den Rest des stream in den Array ein.

Hm.. siehst du da denn ein Vorteil zu der Methode die ich habe?
Vom Aufwand eigentlich das mindestens das selbe oder?

Union 30. Apr 2019 11:15

AW: Array/List-Datatype
 
Warum schreibst Du nicht jedes Element der Referenzkette in eine weitere Tabelle?

peterbelow 30. Apr 2019 11:18

AW: Array/List-Datatype
 
Zitat:

Zitat von lxo (Beitrag 1431353)

Hm.. siehst du da denn ein Vorteil zu der Methode die ich habe?
Vom Aufwand eigentlich das mindestens das selbe oder?

Naja, Du brauchst halt keine komplexen String zusammenzubauen und wieder auseinanderzunehmen. Ob Du mit einem array of integer in deinem Programm einfacher arbeiten kannst als mit deinem momentanen Konstrukt mußt Du selbst wissen.

DeddyH 30. Apr 2019 11:21

AW: Array/List-Datatype
 
Zitat:

Zitat von Union (Beitrag 1431354)
Warum schreibst Du nicht jedes Element der Referenzkette in eine weitere Tabelle?

Ich habe auch das Gefühl, dass es eigentlich um eine Master-Detail-Beziehung geht.

lxo 30. Apr 2019 11:43

AW: Array/List-Datatype
 
Zitat:

Zitat von Union (Beitrag 1431354)
Warum schreibst Du nicht jedes Element der Referenzkette in eine weitere Tabelle?

Aber nicht jedes Element gehört zwingend zur gleichen Vorfahr.
Es gibt auch solche Konstrukte "10.436.1" "10.235.1" "10.1" (theoretisch)
Da müsste ich ja jedes Element mehrfach eintragen und woher weiß ich welches jetzt der richtige Vorfahr ist?


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