DataObjects
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21218
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
DataObjects
Hat sich jemand schonmal mit den neuen DataObjects der 2.0 beschäftigt?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: DataObjects
Moin Manfred,
nur zur Info: Auf dem Forentreffen am 24./25. April in Potsdam werde ich darüber eine Session halten. Da werde ich dann sicher auch ein paar Antworten zu dem Thema geben können. Andererseits bin ich natürlich auch noch auf der Suche nach noch ein paar mehr praktischen Anwendungsbeispielen dafür ... wenn jemand eine gute Idee dazu hat ... auch gerne bilateral (mein Weib würde jetzt sagen: Mein Dank würde demjenigen ewig nachschleichen )
Jan
nur zur Info: Auf dem Forentreffen am 24./25. April in Potsdam werde ich darüber eine Session halten. Da werde ich dann sicher auch ein paar Antworten zu dem Thema geben können. Andererseits bin ich natürlich auch noch auf der Suche nach noch ein paar mehr praktischen Anwendungsbeispielen dafür ... wenn jemand eine gute Idee dazu hat ... auch gerne bilateral (mein Weib würde jetzt sagen: Mein Dank würde demjenigen ewig nachschleichen )
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: DataObjects
Hallo, Jan -
interessieren würde mich z.B., das Result Set eines MySQL-Zugriffs in einem solchen Objekt abzubilden.
Mit der 1.9x geht das nur, indem ich die Daten in ein Array packe und das Data Object mit diesem Array als Quelle erzeuge. Nicht sonderlich praktisch, und auch nicht sonderlich hilfreich, da das Data Object zerstört und neu erstellt werden muss, wenn sich z.B. der Array-Inhalt ändert (laut Alaska), da das Data Object wohl eine Kopie des Arrays "zu den Akten" nimmt.
interessieren würde mich z.B., das Result Set eines MySQL-Zugriffs in einem solchen Objekt abzubilden.
Mit der 1.9x geht das nur, indem ich die Daten in ein Array packe und das Data Object mit diesem Array als Quelle erzeuge. Nicht sonderlich praktisch, und auch nicht sonderlich hilfreich, da das Data Object zerstört und neu erstellt werden muss, wenn sich z.B. der Array-Inhalt ändert (laut Alaska), da das Data Object wohl eine Kopie des Arrays "zu den Akten" nimmt.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: DataObjects
DataObjects in der 1.90 ????georg hat geschrieben:Mit der 1.9x geht das nur, indem ich die Daten in ein Array packe und das Data Object mit diesem Array als Quelle erzeuge.
Es gibt in der 2.0 Befehle die nach Datenbankoperationen das Ergebnis auch als Array mit Dataobjects zurückgeben kann, aber das setzt wohl voraus, dass man die PostGreSQL-DBE nutzt.
In der 1.90 habe ich dynamische Klassen verwendet um DataObjects nachzubilden, die sind aber deutlich langsamer als Echte (Laut Vortrag auf der Devcon 2012).
Was mir z.B. gefehlt hat sind Methoden, mit dem man einen kompletten Datensatz in ein DataObject laden kann (ähnlich wie SCATTER / GATHER bei Arrays).
Den Code dazu muss man selbst schreiben, und genauso muss man alles andere selbst schreiben wenn man keine DBE nutzt. Hier die verbesserte Version:Anfrage in NEWS hat geschrieben:SCATTER() for DataObjects ?
I use this function to read a record into an DataObject and it works, but I asked me if there is a better / build in solution for it ?
Code: Alles auswählen
function ReadRecord(nSelect)
local nFC := (nSelect)->(fcount())
local o := DataObject():new()
local i, cFN
IF PCount() == 0 // Verbesserung von Alaska - Anfang
nSelect := Select()
nFC := (nSelect)->(fcount())
ENDIF // Verbesserung von Alaska - Ende
for i := 1 to nFC
cFN := (nSelect)->(fieldName(i))
o:&(cFN) := (nSelect)->(fieldGet(i))
next
return o
Ich könnte mir vorstellen in Zukunft eher ein Array mit DataObjects zu erstellen, aber ich habe auch nur kurze Codeschippsel von kleineren Tests.
Was genau interessiert dich ?
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21218
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DataObjects
Hi Hubert,
es gab ja mal einen längere Diskussion hier im Forum, in der auch meine Datenbankklassen zur Sprache kamen. Ich habe zu jedem Feld einer DBF eine membervar bereitgestellt, in die der jeweilige Inhalt des jeweiligen DBF Feldes geschrieben wird bei mir. Es gibt eine Routine, die ließt das ein aus der DBF und eine, die alles wieder wegschreibt. Das geschieht aber derzeit alles noch statisch. D.h. ich muß selbst darauf achten, dass es zu jedem Feld eine Membervar gibt und umgekehrt. Das klappt bei mir alles. So kann ich einer DBF Tabelle eine klasse zuordnen, die dann alles macht was ich haben will und brauche. Laut Steffen soll das aber alles jetzt automatisch per Laufzeit klappen. (So wie ich es verstanden habe) Ich öffne eine DBF und dann wird (vereinfacht ausgedrückt) alles automatisch/dynamisch gemacht, was ich derzeit statisch mache.
Und das würde mich jetzt interessieren, ob das mit den DAtaObjects gemeint war.
es gab ja mal einen längere Diskussion hier im Forum, in der auch meine Datenbankklassen zur Sprache kamen. Ich habe zu jedem Feld einer DBF eine membervar bereitgestellt, in die der jeweilige Inhalt des jeweiligen DBF Feldes geschrieben wird bei mir. Es gibt eine Routine, die ließt das ein aus der DBF und eine, die alles wieder wegschreibt. Das geschieht aber derzeit alles noch statisch. D.h. ich muß selbst darauf achten, dass es zu jedem Feld eine Membervar gibt und umgekehrt. Das klappt bei mir alles. So kann ich einer DBF Tabelle eine klasse zuordnen, die dann alles macht was ich haben will und brauche. Laut Steffen soll das aber alles jetzt automatisch per Laufzeit klappen. (So wie ich es verstanden habe) Ich öffne eine DBF und dann wird (vereinfacht ausgedrückt) alles automatisch/dynamisch gemacht, was ich derzeit statisch mache.
Und das würde mich jetzt interessieren, ob das mit den DAtaObjects gemeint war.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: DataObjects
Hallo,
sieht so aus, als habe ich DataObjects mit den DacSession bzw. DacPagedDataStore verwechselt. Sorry und Asche auf mein Haupt.
sieht so aus, als habe ich DataObjects mit den DacSession bzw. DacPagedDataStore verwechselt. Sorry und Asche auf mein Haupt.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: DataObjects
Der Select-Bereich als solcher ist ein Objekt, ob dieses aber das macht was du willst weiß ich nicht.
Was automatisch geht ist z.B. ein neuer SQL Befehl (Syntax kenne ich nicht) INTO DataObjects ... oder so und dann weiß das Dataobjekt alle Felder des Resultsets.
Mehr ist möglich, aber ich habe nichts in der Doku gefunden.
Neu mit den DataObjekts ist auf jeden Fall dass du keine Klasse pro DBF anlegen musst, sondern einfach ein DataObjekt anlegst und z.b. mit dem obigen Code alle Felder (oder auch nur die nötigen) überträgst. Du kannst natürlich auch Klassen ableiten und mehr Methoden anlegen, aber das ist das was ich aus dem damaligen Chat mit Steffen und seinem Vortrag noch in Erinnerung habe. Wenn mehr geht wäre das schön, aber der Hauptvorteil soll sein, dass man eben nicht für jede DBF eine eigene Klasse braucht und dass der Zugriff und das Anlegen von iVars (per Feldname) viel schneller sein soll als mit der alten NoIVar-Methode und auf jeden Fall weniger Code benötigt als die Klassendeklarationen.
Was automatisch geht ist z.B. ein neuer SQL Befehl (Syntax kenne ich nicht) INTO DataObjects ... oder so und dann weiß das Dataobjekt alle Felder des Resultsets.
Mehr ist möglich, aber ich habe nichts in der Doku gefunden.
Neu mit den DataObjekts ist auf jeden Fall dass du keine Klasse pro DBF anlegen musst, sondern einfach ein DataObjekt anlegst und z.b. mit dem obigen Code alle Felder (oder auch nur die nötigen) überträgst. Du kannst natürlich auch Klassen ableiten und mehr Methoden anlegen, aber das ist das was ich aus dem damaligen Chat mit Steffen und seinem Vortrag noch in Erinnerung habe. Wenn mehr geht wäre das schön, aber der Hauptvorteil soll sein, dass man eben nicht für jede DBF eine eigene Klasse braucht und dass der Zugriff und das Anlegen von iVars (per Feldname) viel schneller sein soll als mit der alten NoIVar-Methode und auf jeden Fall weniger Code benötigt als die Klassendeklarationen.
Gruß
Hubert
Hubert