Autor Beitrag
Chris Maslowski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 109



BeitragVerfasst: So 08.01.06 17:06 
Hallo,
ich möchte den Inhalt einer Spalte einer Tabelle auslesen und in Variablen speicher. Die Tabelle heist beispielsweise test und die Spalte: spalte_2. In der Spalte sollen alle einträge ausgelesen werden und in Variablen gespeichert werden. Zum Beispiel wäre das der SQL Befehl:
ausblenden SQL-Anweisung
1:
SELECT spalte_2 FROM test					

Die Datenbank ist ja schon ausgewählt. Ich hab schon so viele Tutorials gelesen aber irgendwie nicht draus schlau geworden. Wäre echt gut wenn ihr mir dat beantworten könntet.
Schon mal Danke für die Hilfe!
Lex
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 08.01.06 18:23 
Ich verstehe nicht genau was Du meinst.
Weise der Query die Abfrage zu, öffne die Query mit open und lies die Datensätze mit "fieldbyname" aus.

Für eine detailiertere Antwort müsstest Du noch genauer angeben, wo Du genau das Problem hast.

Lex
fränk0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 22

Windows XP Prof. SP2
Delphi 2006 Prof. (Win32)
BeitragVerfasst: So 08.01.06 19:03 
So zum Beispiel kannst du Datensätze in eine Stringlist einfügen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
if FSqlClient.connect then
  begin
    q := 'Select spalte_2 from test';
    FSqlResult := FSqlClient.query(q,False,FExecuted);

    if FSqlResult.RowsCount <= 0 then exit else
    begin
      FSqlResult.First; // Springe zum ersten Datensatz des Querys
      while not FSqlResult.EOF do //Sind wir schon am Ende
      begin
        // Einfügen in TStringList 
        SL.Add(FSqlResult.FieldValueByName('spalte_2',False));
        FSqlResult.Next; // Rufe nächsten Datensatz auf wenn nicht EOF
      end;
      FreeAndNil(FSqlResult); //Result freigeben
    end;
  end;
  FSqlClient.close; // Connection schliessen
  FreeAndNil(FSqlClient); // Client freigeben


Ich hoffe damit ist dir geholfen.
Chris Maslowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 109



BeitragVerfasst: So 08.01.06 20:56 
user profile iconLex hat folgendes geschrieben:
Ich verstehe nicht genau was Du meinst.
Weise der Query die Abfrage zu, öffne die Query mit open und lies die Datensätze mit "fieldbyname" aus.

Lex


Ja genau das will ich. Nur ich bekomm das nicht hin. Ich hab zwar schon Tuts gelesen aber da steht das nur wie man dat in ein Stringgrid bekommt. Nur wie mach ich das genau? Könntest du den Code dafür schreiben? Ich glaub der is net so groß oder?

Vielleicht sollte ich auch sagen das ich Delphi 7 PE benutze und deswegen keine Datenbank unterstützung habe. Ich habe MySQL Direct importiert.
fränk0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 22

Windows XP Prof. SP2
Delphi 2006 Prof. (Win32)
BeitragVerfasst: So 08.01.06 20:59 
Hast du des Beispiel da oben nicht gesehen ?

Sollte eigentlich so funktionieren ... Odersteh ich jetzt total am Schlauch ?
Chris Maslowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 109



BeitragVerfasst: So 08.01.06 21:06 
Da gibt es ein Problem beziehungsweise mehrere.
Zum Beispiel "FSqlResult" kennt der Compiler nicht. Kann es sein das du FMysqlResult meintest? Aber das hat auch net geklappt. Auch nicht FMysql.Result oder FMysql.Status. Vielleicht stehe ich ja auf'm Schlauch.
fränk0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 22

Windows XP Prof. SP2
Delphi 2006 Prof. (Win32)
BeitragVerfasst: So 08.01.06 21:15 
du musst in der Procedur wo du das ausführst zuerst einmal dafür sorgen das "er" weis was ein FSqlResult ist :

FSqlClient (TMysqlClient) muss natürlich zuvor erzeugt und initialisiert werden,
auch dei StringList oder die Variablen wo die Datensätze hinsollen sollten schon bestehen oder von dir in der Procedure erzeugt werden.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TForm1Click(Sender: Tobject);
var
  FSqlResult  : TMySqlResult;
  FExecuted : Boolean;
begin
  if FSqlClient.connect then
  begin
    q := 'Select spalte_2 from test';
    FSqlResult := FSqlClient.query(q,False,FExecuted);

    if FSqlResult.RowsCount <= 0 then exit else
    begin
      FSqlResult.First; // Springe zum ersten Datensatz des Querys
      while not FSqlResult.EOF do //Sind wir schon am Ende
      begin
        // Einfügen in TStringList 
        SL.Add(FSqlResult.FieldValueByName('spalte_2',False));
        FSqlResult.Next; // Rufe nächsten Datensatz auf wenn nicht EOF
      end;
      FreeAndNil(FSqlResult); //Result freigeben
    end;
  end;
  FSqlClient.close; // Connection schliessen
  FreeAndNil(FSqlClient); // Client freigeben
end;



Ich denke jetzt solltest du klarkommen
Chris Maslowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 109



BeitragVerfasst: So 08.01.06 21:30 
Jetzt klappt es auch sowei aber einen Fehler hab ich immer noch den ich net behoben bekomme. In Zeile 17 das
ausblenden Delphi-Quelltext
1:
SL.Add(FSqlResult.FieldValueByName('spalte_2',False));					

Bereitet mir wieder Kopfzerbrechen. Das "SL" kennt der Compiler nicht? Hat das was mit dem Stringgrid zu tun?
Matthias-K
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271

Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
BeitragVerfasst: So 08.01.06 21:33 
das wird die stringlist sein!

matthias

_________________
Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!