Erste Erfahrungen mit DataObjects

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

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

Erste Erfahrungen mit DataObjects

Beitrag von Manfred »

Hubert,

kannst Du denn mal generell was zu den DataObjects sagen hier im Forum?
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
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: Alaska-Subskriptionsangebot für Vereinsmitglieder

Beitrag von brandelh »

bisher habe ich damit nur ein bisschen gespielt, meine Überlegungen gehen im Prinzip davon aus,
dass ich einen Datensatz in einem DataObject vorhalte und dann einfach per Feldnamen darauf zugreifen kann, etwa so:

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"

procedure main()
   local i, o, cI
   set exclusive on

   dbcreate("Test",{{"Feld1","C",10,0},;
                    {"Feld2","C",10,0},;
                    {"Feld3","N", 5,0},;
                    {"Feld4","D", 8,0},;
                    {"Feld5","L", 1,0} } )

   use test
   if neterr()
      ? "NETERR()"
      inkey(5)
      quit
   endif

   for i := 1 to 5
       cI := alltrim(str(i))
       dbAppend()
       replace Feld1 with cI+" Feld1"
       replace Feld2 with "Recno()="+alltrim(str(recno()))
       replace Feld3 with recno()
       replace Feld4 with date()
       replace Feld5 with ((recno() % 2) = 0 ) // gerade ?
   next

   dbGotop()

   do while ! eof()

      o := ReadRecord(select())

      ? o:Feld1,o:Feld2,o:Feld3,o:Feld4,o:Feld5

      dbSkip()

   enddo

   inkey(20)

return

function ReadRecord(nSelect)
   local nFC := (nSelect)->(fcount())
   local o   := DataObject():new()
   local i, cFN
   for i := 1 to nFC
       cFN := (nSelect)->(fieldName(i))
       o:&(cFN) := (nSelect)->(fieldGet(i))
   next
return o



wie man sieht, kann man mit den gewünschten Feldnamen einzeln arbeiten, ohne diese bei allgemeinen Funktionen zu benötigen.
Die Funktion wird immer alle Felder einlesen und solange man keine neuen Felder im Hauptprogramm ausgeben will passt es !

So könnte ich mir z.B. auch Ausgaben von SQL Servern vorstellen, Einfache Arrays mit DataObjects.
Für Browser wäre natürlich etwas mehr Aufwand nötig, aber in diese Richtung gehen meine Überlegungen ... falls das Aktivierungsproblem gelöst wird :roll:
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Alaska-Subskriptionsangebot für Vereinsmitglieder

Beitrag von Koverhage »

Hubert,

kannst Du denn mal generell was zu den DataObjects sagen hier im Forum?
als extra Thema wäre nicht schlecht, passt hier nicht unbedingt rein.
Gruß
Klaus
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: Erste Erfahrungen mit DataObjects

Beitrag von brandelh »

Euer Wunsch war mir Befehl :D

Irgendwie hatte ich im Hinterkopf, dass Steffen mal mit einem Befehl einen kompletten Datensatz in ein DataObject kopiert hat,
ähnlich der Funktion scatter() und Arrays ...

PS: scatter() steht immer noch nicht in der Hilfe ...
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Erste Erfahrungen mit DataObjects

Beitrag von AUGE_OHR »

brandelh hat geschrieben:Euer Wunsch war mir Befehl :D

Irgendwie hatte ich im Hinterkopf, dass Steffen mal mit einem Befehl einen kompletten Datensatz in ein DataObject kopiert hat,
ähnlich der Funktion scatter() und Arrays ...
es müsste viel "eleganter" gehen
Sander Elias <Sander Elias>
27. März 2015
public.xbase++.postgresql
Small helper functions for conneciton strings



Hi all,

As I was really annoyed by the connection string manipulation all the time, I wrote this small helper functions
perhaps it is of some use to someone:

Code: Alles auswählen

function connectSettings()
   local oSet  := dataObject():new()
   // in this sample I set the needed info from strings
   // in a real project, you should read it from a configuration
   oSet:DBE    := "pgdbe"
   oSet:SERVER := "LocalHost"
   oSet:UID    := "postgres"
   oSet:PWD    := "postgres"
   oSet:DB     := "xppsamples"
   oSet:defineMethod("asString","_connectSettingsToString")
   // return the connection as an easy to use dataObject
   // the asString method will return a connection string as needed
   // by all the SQL and DACsession stuff.
   return oSet

function _connectSettingsToString(self)
   local aMembers := self:classDescribe(CLASS_DESCR_MEMBERS)
   local cRet     := ""
   aEval(aMembers,{|e|cRet += e[1] + '=' + self:&(e[1]) + ";"})
   return cRet
Regards
Sander Elias
--------------------------------------------
also a member off the XXP (http://www.xxp.nl)
du kann zu einem DataObject "beliebige Ivar" definieren z.b. die "Feld" Namen der DBF.
hm ... ich frage mich ob solch ein Pseudo-Code laufen würde

Code: Alles auswählen

local oSet,aStru,i,iMax
   USE TEST
   aStru := DBSTRU()
   iMax := LEN(aStru)
   FOR i := 1 TO iMax
      oSet  := dataObject():new()
      // can i create MEMBER Name "on-fly" and assign Value ?  
     
      // does this work ???
      oSet:aStru[i][DBS_NAME] := &(aStru[i][DBS_NAME]) 

      // need to add into Array ... how to "skip" a  dataObject() like ot4xb GWST
      AADD(aData,oSet)
   NEXT
gruss by OHR
Jimmy
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: Erste Erfahrungen mit DataObjects

Beitrag von Jan »

Ich bereite ja gerade einen Vortrag für das Forentreffen zu dem Thema vor.

Und habe inzwischen auch, nachdem meine eigene Hauptanwendung nun auf 2.0 umgestellt ist, auch darin mit DO gearbeitet. Man muß sich ein wenig daran gewöhnen, aber dann ist das echt super.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten