AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DataSet und Rave

Ein Thema von oXmoX · begonnen am 21. Dez 2006 · letzter Beitrag vom 3. Apr 2007
Antwort Antwort
oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#1

DataSet und Rave

  Alt 21. Dez 2006, 10:20
Hallo,

ich habe ein Problem beim Zugriff auf ein DataSet über einen Rave Report.

Das DataSet ist quasi von hier kopiert und funtioniert auch soweit, wenn ich z.B. ein TDBGrid damit verknüpfe. Wenn ich allerdings in Rave ein DataBand definiere, welches über eine DataView darauf zugreift, so erhalte ich beim Anzeigen des Preview-Dokuments eine Fehlermeldung "Record not found", die in der Prozedur TDataSet.Resync(Mode: TResyncMode) (DB.pas, Zeile 9869) versursacht wird. Offenbar wird der Methode GetFieldData(Field: TField; Buffer: Pointer): Boolean des DirDataSets ein nicht initialisierter Pointer "Buffer" übergeben. Ist das korrekt? Was kann ich an dem Dataset ändern, damit ich es auch für Reports verwenden kann?

Gruß,
oXmoX
  Mit Zitat antworten Zitat
oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#2

Re: DataSet und Rave

  Alt 22. Dez 2006, 13:36
Ist denn niemand da, der mir einen Tipp geben kann?
  Mit Zitat antworten Zitat
merlin17

Registriert seit: 15. Dez 2002
Ort: Mittelfranken
980 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: DataSet und Rave

  Alt 22. Dez 2006, 14:26
doch, ich bin stellenweise da.....
komme aber frühestens erst nach den "ruhigen Feiertagen" dazu, mir Deine Frage näher anzuschauen, -> not promised
außerdem ist der Thread ja erst von gestern.... things.take.time.

-take care


thomas, TeamNevrona
- TeamNevrona cannot respond to questions received via email -
http://rave-notes.blogspot.com
  Mit Zitat antworten Zitat
oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#4

Re: DataSet und Rave

  Alt 27. Dez 2006, 08:58
okay! ...ich übe geduld *daumendreh*
  Mit Zitat antworten Zitat
merlin17

Registriert seit: 15. Dez 2002
Ort: Mittelfranken
980 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: DataSet und Rave

  Alt 8. Jan 2007, 13:40
So,

nun habe ich mir mal die BSP von Marco angeschaut und um die Rave-Eigenschaft erweitert;
der GetCols-Bereich ist sicherlich nicht korrekt, aber mti dtStrings ging es am schnellesten <g>


Delphi-Quellcode:
type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    DirectoryListBox1: TDirectoryListBox;
    RvProject1: TRvProject;
    Button1: TButton;
    RvCustomConnection1: TRvCustomConnection;
    procedure FormCreate(Sender: TObject);
    procedure DirectoryListBox1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure RvCustomConnection1GetCols(Connection: TRvCustomConnection);
    procedure RvCustomConnection1GetRow(Connection: TRvCustomConnection);
    procedure RvCustomConnection1Open(Connection: TRvCustomConnection);
    procedure RvCustomConnection1Next(Connection: TRvCustomConnection);
    procedure RvCustomConnection1EOF(Connection: TRvCustomConnection;
      var Eof: Boolean);
  private
    { Private declarations }
  public
    DirDataset: TDirdataSet;
  end;

var
  Form1: TForm1;

implementation

.........................................


procedure TForm1.RvCustomConnection1EOF(Connection: TRvCustomConnection;
  var Eof: Boolean);
begin
  eof := false;
  if DirDataset.Eof then
    eof := true;
end;

procedure TForm1.RvCustomConnection1GetCols(Connection: TRvCustomConnection);
begin

  with Connection do
  begin
    WriteField('shortFileName', dtString, 50, 'Dateiname',
      'aus MarcoCantu-BSP');
    WriteField('Time', dtString, 50, 'Zeit', 'aus MarcoCantu-BSP');
    WriteField('Size', dtString, 50, 'Groesse', 'aus MarcoCantu-BSP');
    WriteField('Attr', dtString, 50, 'Dateiname', 'aus MarcoCantu-BSP');
  end;
end;

procedure TForm1.RvCustomConnection1GetRow(Connection: TRvCustomConnection);
begin
  with Connection do
  begin
    WriteStrData('', DirDataset.Fields.FieldByNumber(1).AsString);
    WriteStrData('', DirDataset.Fields.FieldByNumber(2).AsString);
    WriteStrData('', DirDataset.Fields.FieldByNumber(3).AsString);
    WriteStrData('', DirDataset.Fields.FieldByNumber(4).AsString);
  end;
end;

procedure TForm1.RvCustomConnection1Next(Connection: TRvCustomConnection);
begin
 DirDataset.Next;
end;

procedure TForm1.RvCustomConnection1Open(Connection: TRvCustomConnection);
begin
  Connection.DataRows := DirDataset.RecordCount;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   RvProject1.Execute;
end;
In der Zip-Datei noch die RAV; hat bei mir problemlos geklappt <g>


thomas, TeamNevrona
Angehängte Dateien
Dateityp: zip marco_dp_129.zip (1,0 KB, 17x aufgerufen)
- TeamNevrona cannot respond to questions received via email -
http://rave-notes.blogspot.com
  Mit Zitat antworten Zitat
oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#6

Re: DataSet und Rave

  Alt 9. Jan 2007, 22:08
SPITZEN LEISTUNG!!!

Ich werd wohl erst nächste Woche dazu kommen, mir die Sachen anzuschauen, aber ein dickes Lob schick ich dir schonmal vorraus ...wird bestimmt auch bei mir klappen! Ich meld mich.
  Mit Zitat antworten Zitat
merlin17

Registriert seit: 15. Dez 2002
Ort: Mittelfranken
980 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: DataSet und Rave

  Alt 17. Jan 2007, 18:26
und... bin neugierig... hat es geklappt ?!?!



thomas, TeamNevrona
- TeamNevrona cannot respond to questions received via email -
http://rave-notes.blogspot.com
  Mit Zitat antworten Zitat
oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#8

Re: DataSet und Rave

  Alt 20. Jan 2007, 17:20
bin leider grad an einer anderen baustelle ...aber ich werde berichten
  Mit Zitat antworten Zitat
oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#9

Re: DataSet und Rave

  Alt 26. Feb 2007, 15:43
Sorry, aber bin erst jetzt wieder dazu gekommen, hier weiterzumachen.

Es hat natürlich auch bei mir funktioniert.

Allerdings verstehe ich nicht, warum das ganze nicht auch mit einer RvDataSetConnection funktioniert. Naja, die RvCustomConnection tuts jedenfalls auch und ich bin echt dankbar dafür .
  Mit Zitat antworten Zitat
oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#10

Re: DataSet und Rave

  Alt 3. Apr 2007, 11:04
Hallo nochmal!

Leider habe ich noch immer Probleme mit dem TDirDataSet und Rave.

Folgendes möchte ich erreichen: Im Report soll eine verschachtelte Liste mit zwei Ebenen dargestellt werden. Die erste Ebene zeigt die Dateien aus dem aktuellen Verzeichnis, die zweite Ebene zeigt die Dateien aus den Unterverzeichnissen. Das lässt sich soweit ich weiß in Rave Reports über Master und Detail Databands realisieren.

Also habe ich TDirDataSet um einen Master- und einen Detailkey erweitert (Filename - der vollständige Dateiname mit Pfad und ParentDir - der vollständige Name des übergeordneten Verzeichnisses mit Pfad) und schließlich eine Klasse TSubDirDataSet hizugefügt, die nicht die Dateien des aktuellen Verzeichnisses zurückgibt, sondern die Dateien aus den Unterverzeichnissen des aktuellen Verzeichnisses.

Das Ergebnis habe ich als Attachment beigefügt incl. eines neuen .rav Projektes, das eine Region mit zwei DataBands enthält, die mit TDirDataSet (DataBand1 --> DataView1) bzw. TSubDirDataSet (DataBand2 --> DataView2) verknüpft sind. Wenn ich die Preview des Reports ausführe, sehe ich eine Liste, die im oberen Teil die Dateien des aktuellen Verzeichnisses enthält und im unteren Teil die Dateien der Unterverzeichnisse. Bis hierhin läuft alles nach Plan .

Und jetzt endlich zu meinem Problem: Wie muss ich die .rav konfiguriern, damit ich meine verschachtelte Liste bekomme?
Ich denke, dazu muss ich im DataBand2 das DataBand1 als Controllerband einstellen, sowie DataView1 als Master angeben. Dann setze ich den Masterkey auf FileName sowie den DetailKey auf ParentDir, right? Und zum Schluss stelle ich den Bandstyle von DataBand2 noch auf Detail ..auf diese Weise hat es bisher jedenfalls immer funktioniert.

...Funktioniert aber nicht mit dem TDirDataSet ...jetzt bekomme ich nur noch den Inhalt von DataBand1 angezeigt, obwohl es Unterverzeichnisse mit Dateien gibt (und für die gilt ja: Detail.ParentDir = Master.FileName).

Ich bin ziemlich ratlos. Kann es sein dass TDirDataSet nicht Threadsafe ist, dies aber für Rave erforderlich ist? Oder liegt es evtl. an einem Bug in Rave (Version 5.0 Borland Edition)?

Danke für jede Hilfe!
Angehängte Dateien
Dateityp: zip dirdataset_462.zip (41,7 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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