Autor Beitrag
tacl
Hält's aus hier
Beiträge: 13

WinXP, Linux, OS/2
Delphi2/2010 Prof., FoxPro, C++
BeitragVerfasst: Sa 03.07.10 15:35 
Hi Leute,

ich steh seit gestern Abend ein wenig auf dem Schlauch und bräuchte Eure Hilfe:

Ich habe in meinem Projekt eine Form mit DBGrid, dem ich zur Laufzeit eine dynamisch erzeugte DataSource zuweisen möchte, die auf einem DataModule liegt. Nun rufe ich von der Form eine, im DataModule liegende Function auf:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
function ebsExecuteSQL(intStatement: integer; parent_id: string): tDataSource;
begin
  //...
  result := tempDataSource.Create(DataModule1);
end;

Die aufrufende Procedure sieht so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.DBGrid1.DataSource := ebsExecuteSQL(1'0');
end;

Ich habe auch schon versucht (ursprünglicher Ansatz) mit Pointern über die Operatoren ^ und @ zu arbeiten, aber hiermit auch keine Lösung gefunden. Das Problem ist, dass mir die Zeile der Procedure eine Adressierungs-Exception rauswirft, mit der man natürlich nix anfangen kann.

Die eigentliche Idee dahinter: Ich möchte mir einen Vorrat an SQL-Statements anlagen, diese im Datamodule in eigens zur Laufzeit erzeugten Querys ausführen lassen und eine ebenfalls zur Laufzeit erzeugte DataSource über die Function zurückliefern.
Gibt es eventuell fertige Lösungen für diese Aufgabe?

Danke für Eure Hilfe
Patrick

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
tacl Threadstarter
Hält's aus hier
Beiträge: 13

WinXP, Linux, OS/2
Delphi2/2010 Prof., FoxPro, C++
BeitragVerfasst: So 04.07.10 19:20 
Leute ich verzweifel bald. Hat wirklich niemand eine Lösung hierfür?
Kann doch nicht sein, dass man keinen Zeiger auf eine Komponente übergeben kann.
Hab heute den ganzen Tag daran herumgeschraubt und finde einfach keine Lösung...

Ich bin wirklich für jeglichen Gedankengang dankbar.

Gruß
Patrick
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mo 05.07.10 11:31 
Hallo,

versuche mal anstelle von:

ausblenden Delphi-Quelltext
1:
result := tempDataSource.Create(DataModule1);					


ein

ausblenden Delphi-Quelltext
1:
result := tDataSource.Create(DataModule1);					


critter

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)