Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Tabellenkopf nach SQL-Abfrage auslesen? (https://www.delphipraxis.net/129763-tabellenkopf-nach-sql-abfrage-auslesen.html)

Exterior 25. Feb 2009 00:27

Datenbank: Access • Zugriff über: ADO

Tabellenkopf nach SQL-Abfrage auslesen?
 
Hallo an alle, ich hab schon wieder eine Frage:

Ich arbeite momentan mit einer ADO-Connection und einer ADOQuery, beides auf ein DataModule ausgelagert.
Außerdem habe ich in diesem DataModule unter Public noch ein dynamisches Array namens myArray.

Nun übergebe ich meiner Prozedur die SQL-Anweisung. Die Prozedur deaktiviert die Query und setzt die SQL-Anweisung ein. Danach wird geprüft, ob es eine Auswahl- oder Aktions-Abfrage ist (ist momentan sehr simpel gestaltet, wollte nur mal schnell bissel was probieren).
Wenn es sich um eine Auswahl-Abfrage handeln sollte, dann wird der Inhalt des Dynaset in das Array übertragen.

Das alles habe ich momentan mit folgendem Code gelöst:

Delphi-Quellcode:
procedure TDBModul.Abfrage(q: string);
var ex : boolean;
    i, j : integer;
    exString : string;
begin
ex := true;

//Prüfen, ob Auswahl- oder Aktions-Abfrage vorliegt
exString := '';
for i := 1 to 6 do
  exString := exString + upcase(q[i]);

if exString = 'SELECT'
  then
    ex := false;


  QueryModul.Active := false;
  Querymodul.SQL.Text := q;

  if ex
    then
      begin
        QueryModul.ExecSQL;
      end
    else
      begin
        QueryModul.Active := true;

        setArray; //passt die Größe des Arrays an das Dynaset an

        for i := 0 to QueryModul.RecordCount-1 do
          begin
            for j := 0 to QueryModul.FieldCount-1 do
              MyArray[i,j] := QueryModul.Fields.Fields[j].AsString;

            QueryModul.Next;
          end;
      end;
Wie gesagt, er ist recht einfach gehalten und ich habe ihn auch noch nicht testen können. Aber ich denke, dass das so funktionieren müsste.

Nun aber zu meinem Anliegen:
Auf diese Art bekomme ich ja nur den Inhalt in das Array. Allerdings bräuchte ich auch noch die Feld- bzw. Tabellennamen (Also die, auf die man mit FieldByName zugreift).
Die sollen in der ersten Zeile des Arrays gespeichert werden, allerdings habe ich keine Ahnung, wie ich auf die zugreifen kann :(

Könnt ihr es mir sagen?

omata 25. Feb 2009 01:01

Re: Tabellenkopf nach SQL-Abfrage auslesen?
 
Delphi-Quellcode:
Spaltenname:=QueryModul.Fields.Fields[j].FieldName;
Bei den Tabellennamen wird das schwierig, was ist wenn deine SQL-Abfrage mehrere Tabellen abfragt?

Exterior 25. Feb 2009 01:27

Re: Tabellenkopf nach SQL-Abfrage auslesen?
 
Ach verdammt, hatte mich falsch ausgedrückt -.-' Anstelle von "Tabellenname" sollte da oben lieber "Spaltenname" stehen, das sollte nicht in dem Sinne werden, dass ich den Feld- und Tabellenname brauche, sondern ich wollte nur das Wort "Feldname" noch näher beschreiben und habe dann Tabelle statt Spalte geschrieben -.-'

Lange Rede, kurzer Sinn: Dein Code hat meine ganze Frage schon beantwortet, vielen Dank ;) Werde das morgen mal testen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr.

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