Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FResult.FieldValue in Array (https://www.delphipraxis.net/113981-fresult-fieldvalue-array.html)

Masterraven9 17. Mai 2008 19:13

Datenbank: MySQL • Version: 5 • Zugriff über: direct

FResult.FieldValue in Array
 
Hy,

ich bin noch ein ziehmlicher Anfänger in der Programmierung und hoffe ihr könnt mir bei meinen Startschwierigkeiten helfen.

Ich versuche die Daten die in einer MySQL Datenbakn stehen auszulesen und in einem Array zu speichern. Ist das überhaupt möglich?

Also zuerst habe ich nach der Anleitung von delphi-treff gearbeitet, was auch funktioniert hat.

Nun möchte ich die Daten aber nicht in einer Tabelle ausgeben sondern in einem Array zwischenspeichern.

Variable:

Delphi-Quellcode:
type
  Daten = record
    ID : string[150];
    Titel : string[150];
    Serie : string[150];
    Staffel : string[150];
  end;

var
  Form1: TForm1;
  Ergebnis : array[1..20] of Daten;
Die Verbindung steht auch soweit und auch die Abfrage ist erfolgreich:

Delphi-Quellcode:
  if assigned(FResult) then begin
    if FMysql.Status<>MYSQL_STATUS_READY then
      ShowMessage('Ein Ergebnis wurde unvollständig gelesen!');
      FreeAndNil(FResult);
  end;
  q := 'SELECT * FROM videos WHERE Art = "3" ORDER BY Serie';
  FResult := FMysql.query(q, true, ex);
  if assigned(FResult) then
    ShowMessage('Query: OK - Ergebnis gespeichert')
  else
    if ex then
      ShowMessage('Query: OK - ausgeführt')
    else
      ShowMessage('Query fehlgeschlagen: '+FMysql.LastError);
Nun versuch ich die Ergebnisse in dem Array Ergebnis zu speichern:

Delphi-Quellcode:
if assigned(FResult) then begin
    if FResult.ResultType=rtStored then begin
      FResult.First;
      for i:=0 to FResult.RowsCount-1 do begin
        Ergebnis[i].ID := FResult.FieldValue(0);
        Ergebnis[i].Titel := FResult.FieldValue(1);
        Ergebnis[i].Serie := FResult.FieldValue(2);
        Ergebnis[i].Episode := FResult.FieldValue(3);
        FResult.Next;
      end;
      FResult.RecNo := cr;
    end;
  end;
Und wenn ich diesen Befehl ausführe bricht der Debugger ab mit einem Prozessfehler beim lesen einer Adresse.
Ich weiß nicht ob ich den Aufbau der Abfrage richtig verstanden hab oder ob der Code 100%ig in Ordnung ist.

Ich hoffe jemand kann mir einen Rat geben

thx

marabu 17. Mai 2008 19:21

Re: FResult.FieldValue in Array
 
Herzlich willkommen in der Delphi-PRAXiS, Masterraven9.

Ein offensichtlicher Fehler ist wohl, dass du die Indizierung des Arrays vergessen hast:

Delphi-Quellcode:
// ...
      for i:=0 to FResult.RowsCount-1 do
        if i < Length(Ergebnis) then
        begin
          Ergebnis[i].ID := FResult.FieldValue(0);
          Ergebnis[i].Titel := FResult.FieldValue(1);
          Ergebnis[i].Serie := FResult.FieldValue(2);
          Ergebnis[i].Episode := FResult.FieldValue(3);
          FResult.Next;
        end else raise Exception.Create('array too small, some results dropped');
// ...
Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz