Autor Beitrag
schnief7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: So 19.01.03 20:07 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: So 19.01.03 22:38 
Hallo,

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

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: So 19.01.03 23:00 
Hallo,

ausblenden 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;
  ...

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
schnief7 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: 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.