DataObjects

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

DataObjects

Beitrag von Manfred »

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!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: DataObjects

Beitrag von Jan »

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
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: DataObjects

Beitrag von georg »

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 S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DataObjects

Beitrag von brandelh »

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()
      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 
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
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DataObjects

Beitrag von Manfred »

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 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!!
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: DataObjects

Beitrag von georg »

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 S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DataObjects

Beitrag von brandelh »

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
Antworten