Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Query-Komponente mit mehreren SQL-Statments zur Auswahl.

  Alt 27. Nov 2005, 12:37
Du kannst es natürlich noch viel eleganter machen, aber so wäre es eine schnelle Möglichkeit, viele Queries unter einen Hut zu bekommen. Ich würde es noch eleganter machen, nämlich über dynamisch erzeugte TQueries. Du definierst Dir zwei Arrays, eins mit Beschreibungen, das andere mit SELECT-Anweisungen. SQLQuery[i] ist das SELECT für den Bericht mit Namen Beschreibung[i].

Dann änderst Du das Combobox1Change-Event so ab;
Delphi-Quellcode:
Procedure TForm1.Combobox1Change (Sender : TObject);
Var
  Q : TQuery;

Begin
  Q := Combobox1.Items.Objects[ComboBox1.ItemIndex];
  If Not Assigned (Q) Then Begin
    Q := TQuery.Create (Nil);
    Q.Database := 'foobar';
    Q.SQL.Text := SQLCmd [ComboBox1.ItemIndex];
    Q.Active := True;
    Combobox1.Items.Objects[ComboBox1.ItemIndex] := Q;
    End;
  DataSource1.Dataset := Q;
End;
Am Anfang füllst Du einfach die ComboBox1.Items Eigenschaft mit den Beschreibungen. Wenn Du nun per Combobox einen Bericht auswählst, wird geprüft, ob schon eine Query angelegt ist. Wenn nicht, wird das jetzt nachgeholt.

Du musst aber die Queries beim FormDestroy wieder freigeben.

Viel viel umständlicher geht es mit einer Klasse 'TReport', aber wozu? Ich finde diese Möglichkeit schön kompakt. Für einen Prototypen reicht es allemal. Wenn Du aber noch Formatierungsanweisungen für die einzelnen Spalten mit kodieren willst, dann solltest Du eine Reportklasse erstellen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat