DataObjects

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

DataObjects

Beitragvon Manfred » Mo, 29. Dez 2014 11:27

Hat sich jemand schonmal mit den neuen DataObjects der 2.0 beschäftigt?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16095
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DataObjects

Beitragvon Jan » Mo, 29. Dez 2014 12:08

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 :-D )

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11624
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: DataObjects

Beitragvon georg » Mo, 29. Dez 2014 12:56

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.
Liebe Grüsse aus der Eifel,

Georg
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1780
Registriert: Fr, 08. Feb 2008 21:29

Re: DataObjects

Beitragvon brandelh » Mo, 29. Dez 2014 18:15

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.

DataObjects in der 1.90 ????

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).
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 ?

Den Code dazu muss man selbst schreiben, und genauso muss man alles andere selbst schreiben wenn man keine DBE nutzt. Hier die verbesserte Version:
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()
   ENDIF                   // Verbesserung von Alaska - Ende
   for i := 1 to nFC
       cFN := (nSelect)->(fieldName(i))
       o:&(cFN) := (nSelect)->(fieldGet(i))
   next
return o


Aktuell verwende ich (falls ich SQL nutze) immer Arrays, die Resultsets (oder Teile davon) speichern. Diese Arrays browse ich dann.

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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13328
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: DataObjects

Beitragvon Manfred » Mo, 29. Dez 2014 18:24

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.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16095
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DataObjects

Beitragvon georg » Mo, 29. Dez 2014 19:55

Hallo,


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
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1780
Registriert: Fr, 08. Feb 2008 21:29

Re: DataObjects

Beitragvon brandelh » Mo, 29. Dez 2014 23:15

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.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13328
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim


Zurück zu OOP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast