Servus,
hat sich da schon mal jemand Gedanken gemacht? Dürfte so ja wohl nicht mehr funktionieren, sobald man auf PostgreSQL umstellt?
Frax mit PostgreSQL
Moderator: Moderatoren
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Frax mit PostgreSQL
Hallo Werner,
das ist ja das gute am FRAX. Dieser bringt keine eigenen Datenbanktreiber mit und kann alles was dein Programm auch kann. (genauso gut, aber auch genauso schlecht)
Die Methode :SetWorkArea wird wahrscheinlich wirklich nicht mehr funktionieren. Dafür gibt es aber :SetUserDataSet.
Damit können eigene Datasets deklariert werden. Dabei müssen nur entsprechende Codeblöcke zum navigieren übergeben werden.
Die Deklaration mit den bisher bekannten Datenbankfunktionen könnte folgendermaßen aussehen:
Wer lieber mit Objekten arbeitet, kann natürlich auch Methoden einer Klasse zum navigieren benutzen... auch Arrays sind möglich.
Solange du also weißt, wie in der SQL-Abfrage navigiert werden soll, muss es nur noch FRAX beigebracht werden.
Gruß
Christian
Edit: Fieldname() durch Fieldpos() ersetzt
das ist ja das gute am FRAX. Dieser bringt keine eigenen Datenbanktreiber mit und kann alles was dein Programm auch kann. (genauso gut, aber auch genauso schlecht)
Die Methode :SetWorkArea wird wahrscheinlich wirklich nicht mehr funktionieren. Dafür gibt es aber :SetUserDataSet.
Damit können eigene Datasets deklariert werden. Dabei müssen nur entsprechende Codeblöcke zum navigieren übergeben werden.
Die Deklaration mit den bisher bekannten Datenbankfunktionen könnte folgendermaßen aussehen:
Code: Alles auswählen
cFields := ""
AEval( (cAlias)->( DBSTRUCT() ), {|a| cFields += a[DBS_NAME] + ";" } )
cFields := Left( cFields, Len( cFields ) - 1 ) // letztes ";" entfernen
frReportManager:SetUserDataSet( cAlias, cFields, ;
{|| (cAlias)->( DBGOTOP() ) }, ; // Positionierung auf Satzanfang
{|| (cAlias)->( DBSKIP() ) }, ; // nächster Datensatz
{|| (cAlias)->( DBSKIP(-1) ) }, ; // vorheriger Datensatz
{|| (cAlias)->( EOF() ) }, ; // Eof prüfen
{|feld| (cAlias)->( FIELDPOS( FIELDNAME(feld) ) ) } ) // Feldwert abfragen
Solange du also weißt, wie in der SQL-Abfrage navigiert werden soll, muss es nur noch FRAX beigebracht werden.
Gruß
Christian
Edit: Fieldname() durch Fieldpos() ersetzt
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Frax mit PostgreSQL
Servus Christian,
das wusste ich gar nicht, dass das auch mit Feldern geht, steht nirgends in der Doku. Hab das bisher nur mit Arrays gemacht. Interessant, danke! Werde das bald testen, bin eh am Experimentieren mit CTP4. Geht dann wohl nur über die ISAM-Emulation.
das wusste ich gar nicht, dass das auch mit Feldern geht, steht nirgends in der Doku. Hab das bisher nur mit Arrays gemacht. Interessant, danke! Werde das bald testen, bin eh am Experimentieren mit CTP4. Geht dann wohl nur über die ISAM-Emulation.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Frax mit PostgreSQL
Ich würde grundsätzlich über Arrays gehen, so kann man Ausgabe von Datenauswertung trennen und vorher die Ergebnismenge anzeigen ...
"Möchten Sie wirklich 5000 Zeilen drucken ?"
"Möchten Sie wirklich 5000 Zeilen drucken ?"
Gruß
Hubert
Hubert