Entwickler-Ecke

Datenbanken - Datensatz in Variable??


schnief7 - So 19.01.03 20:07
Titel: Datensatz in Variable??
Hallo!

Ich möchte gern einen Datensatz aus einer DB (z.B. über TQuery) in eine Variable speichern.

Wenn dann die Verbindung zur DB beendet wird, sollte in der Variable immer noch der Inhalt des Datansatzes stehen.

Am besten wäre natürlich, wenn die Werte über

<variable>.fieldbyname('name').asstring

abrufbar wären.


Geht das überhaupt??


smiegel - So 19.01.03 22:38

Hallo,


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  meineTextVar:String;
  
  ...
  ...
  MyQuery.Open;
  meineTextVar:=MyQuery.FieldByName('MeinFeld').AsString;
  ...


UGrohne - So 19.01.03 22:42

Also ich glaube nicht, dass er das meinte, er wollte glaub ich einen ganzen Datensatz in eine Variable speichern.

ALso ich würde es so lösen, wenn sich die Anzahl und Namen der Spalten nicht ändern würden.

Ich würde eine Klasse erstellen mit den ganzen Feldern:

Quelltext
1:
2:
3:
4:
5:
6:
7:
type TDatensatz = record 
   Feld1:String;
   Feld2:Integer;
   ....
   end;

var datensatz:TDatensatz


Dann kannste einfach über
datensatz.Feld1 usw auf die einzelnen Felder zugreifen.

Is das so in Ordnung?

Gruß


schnief7 - So 19.01.03 22:53

Hallo!

Danke schon mal für die Vorschläge!!

Aber ich habe genau das Problem, das sich die Anzahl der Spalten ändert.

Ich hab schon probiert das irgendwie über den Typ TDataSet oder TField zu machen. Habs aber nicht hinbekommen (bin nocht nicht so tief in der materie drin)

Weis jemand weiter??


smiegel - So 19.01.03 23:00

Hallo,


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type
  TMyTextArr=array of String;

var
  MyTextArr:TMyTextArr;

  ...
  MyQuery.Open;
  SetLength(MyTextArr, MyQuery.FieldCount);
  for i:=0 to MyQuery.FieldCount-1 do
    MyTextArr[i]:=MyQuery.Fields[i].AsString;
  ...


schnief7 - Mo 20.01.03 02:30

H!

jup! das funktioniert.

ist zwar nicht ganz so konfortabel wie ich mir das gewüncht habe aber funktioniert bestens :lol:

Danke für die schnelle Hilfe

schnief7


bis11 - Mo 20.01.03 08:05

Nimm statt einem Array doch eine StringList. Und speichere jeden Datensatz in eine Zeile. Die Felder trennt Du durch ein Semikolon z.B. So kannst Du es auch als Textdatei abspeichern und in Excel zum Beispiel einlesen.