Wieso? Nimm doch einfach verschiedene Queries. Pack Sie z.B. in ein Array Of TQuery. Oder in eine Combobox:
Beispiel: 4 x TQuery, 1xTComboBox, 1xTDataSource, 1xTDBGrid.
Delphi-Quellcode:
Procedure TForm1.FormCreate (Sender : TObject);
Var
i : Integer;
Begin
DataSource1.DataSet := Nil;
DBGrid1.DataSource := DataSource1;
ComboBox1.Items.clear;
For i:=0 to ComponentCount - 1 do
if Components[i] is TQuery Then
ComboBox1.Items.AddObject (Components[i].Name, Components[i]);
ComboBox1.ItemIndex := 0; // Sollte ComboBox1Change auslösen
End;
Procedure TForm1.ComboBox1Change (Sender : TObject);
Begin
With ComboBox1 do
DataSource1.DataSet := (Items.Objects[ItemIndex]) as TQuery;
End;
Was ich hier mache? Ich verzichte sogar auf das Array of TQuery und packe in die Objects-Eigenschaft der ComboBox.Items (sind ja TStrings), die Namen der Queries sowie einen Zeiger auf die
Query selbst. Anstatt des Names kannst (und solltest) Du besser eine Beschreibung packen, aber egal.
Wenn ich den Inhalt der ComboBox ändere, wird das OnChange-Ereignis ausgelöst. Hier wechsle ich einfach die Dataset-Eigenschaft der Datasource und das war's.