Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

dbRegisterClient() - Erfahrungen ?

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

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13900
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

dbRegisterClient() - Erfahrungen ?

Beitrag von brandelh » Do, 12. Okt 2006 14:08

Hallo,

hat schon jemand mit dbRegisterClient() Erfahrungen gesammelt ?

Das Beispiel mit einer Neuimplementation von @ GET ist ja wieder zum schreien ;) ...

Ich würde es natürlich mit XbpSLE einsetzen.
Gruß
Hubert

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 12543
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Beitrag von Jan » Do, 12. Okt 2006 14:44

Hallo Hubert,

ja, ich setze das in einem meiner Projekte ein. Natürlich GUI pur, wie immer :-)

Allerdings nutze ich bei weitem nicht alles, was die Funktion anbietet. Bei mir ist das hauptsächlich die Aktualisierung von SLE im Verbund mit einem Browse. Und SLE zu anderen Tabpages mit dem Browse und weiteren SLE.

Jan

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17151
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von Manfred » Do, 30. Jul 2009 21:04

Hi,

ich bin gerade mal wieder darauf gestossen in der Anleitung, bzw. im Beispiel MDIDEMO. Was macht man damit überhaupt, irgendwie verstehe ich nur Bahnhof.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17151
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von Manfred » Mi, 06. Dez 2017 11:08

ich bin mal wieder hier im Forum darauf gestossen. Können wir das Thema nochmals aufwärmen und ein wenig Licht ins Dunkel bringen? Ich habe immer noch nicht so richtig den Einsatzsinn und -zweck verstanden.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
HaPe
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 273
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von HaPe » Mi, 06. Dez 2017 11:15

Da vermutlich ich den aktuellen Anlass dazu gegeben habe zitiere ich frei aus der 1,9er Hilfe.
Man sollte diese Methode verwenden wenn der Anwender in seiner Applikation mehrere Fenster auf die gleiche Datenquelle, also Tabelle, öffnen kann.
Ändert dieser in einem Fenster Daten erzeugt nach eine DbRegisterClient die DBE ein Notify sodaß alle geöffneten Fenster die auf dieselbe Tabelle zugreifen ein REQUERY bzw. einen REFRESH auslösen können und die Änderungen in allen Fenstern sichtbar werden ...
--
Hans-Peter

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17151
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von Manfred » Mi, 06. Dez 2017 11:22

alles klar, jetzt habe ich es verstanden.
Wobei da natürlich das Problem mit den Threads dann wieder aufkommt (wie schon erwähnt hier im Forum). Wer also die einzelnen Menues in verschiedenen Threads aufruft muß dann was stricken, damit man die anderen Workareas sieht.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13900
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von brandelh » Mi, 06. Dez 2017 11:24

Es gibt ja grundsätzlich wie unter Clipper die Möglichkeit, dass du bei einem Fenster die Buttons zum Skippen mit Funktionen hinterlegst und das dann so aussieht:

Button Anfang => dbGoTop(), alle controls aufrufen und z.B. aEditControls:setdata() auszuführen.
Button Ende => dbGoBottom(), alle controls aufrufen und z.B. aEditControls:setdata() auszuführen.
...
Button Edit und Button Save, jeweils im Programm dann auf der Seite disable() was grad nicht erlaubt ist und hoffen, dass nicht eine Routine im Hintergrund auf der Datei ein dbskip() macht etc.

ODER

Man registriert alle Controls in ihrer Workarea (es können verschiedene Dateien pro Fenster sein) und egal warum ein dbSkip() ausgeführt wird,
würde die notify() methode aufgerufen und im einfachsten Fall die Daten neu ins Control geladen werden.
Im Beispiel wird mal wieder ein schönes ... DBGET() ... also kein Control im eigentlichen Sinne genutzt. Nicht wirklich erhellend.

Im Grunde geht es darum, die Controls selbst wissen zu lassen wo sie die Daten herbekommen und in der Oberfläche nicht jedesmal den gleichen Code schreiben zu müssen ...
??? darf ich jetzt skippen
??? muss ich vorher speichern, soll ich fragen oder ...

Das könnte man alles zentral in einer Routine regeln, die per do case die einzelnen Stadien abarbeitet und gezielt reagiert.
Wer also die einzelnen Menues in verschiedenen Threads aufruft muß dann was stricken, damit man die anderen Workareas sieht.
man soll das ja gerade nicht machen, jeder Thread nutzt seine offene Workarea und man hat keine Probleme ;-)
Gruß
Hubert

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13900
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von brandelh » Mi, 06. Dez 2017 11:40

Ein Beispiel für Notify findest du bei den Beispielen:

???\XPPW32\source\samples\apps\mdidemo\datadlg.prg
Gruß
Hubert

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17151
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von Manfred » Mi, 06. Dez 2017 12:28

man soll das ja gerade nicht machen, jeder Thread nutzt seine offene Workarea und man hat keine Probleme ;-)
was meinst Du damit? Das verstehe ich nicht.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13900
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von brandelh » Mi, 06. Dez 2017 12:39

Manfred hat geschrieben:
Mi, 06. Dez 2017 12:28
man soll das ja gerade nicht machen, jeder Thread nutzt seine offene Workarea und man hat keine Probleme ;-)
was meinst Du damit? Das verstehe ich nicht.
Nun man soll nicht versuchen auf Workareas anderer Threads zuzugreifen. Das ist nur bei sehr speziellen (mir jetzt entfallenen) Aufgabenstellungen nötig.
Also jeder Thread soll sich seine Dateien selbst öffnen, auch wenn dadurch eine DBF in 2 Threads offen ist.
Gruß
Hubert

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17151
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von Manfred » Mi, 06. Dez 2017 12:50

OK, dann habe ich es doch verstanden. Aber dann ist ja DbRegisterClient() uninteressant in selchen Modellen!?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1334
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von Rudolf » Fr, 08. Dez 2017 8:54

Hallo,
ich nutze es z.B. um die DBF Dateien zu synchronisieren, ist eine geniale Funktion. Damit kann ich z.B. im ERP System den Artikelstamm in verschiedenen Mandanten synchronisieren. Für einen andere Anwendung synchronisiere ich DBFs mit SQL Tabellen, habe damit sofort gespiegelte Daten auf SQL für Schnittstellen und andere Anwendungen. Und es funktioniert sehr zuverlässig.
Grüße
Rudolf

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10723
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: dbRegisterClient() - Erfahrungen ?

Beitrag von AUGE_OHR » Sa, 09. Dez 2017 2:53

SCATTER() und GATHER() arbeiten auch zuverlässig aber trotzdem bevorzuge ich die "volle" Schreibweise

Code: Alles auswählen

AEval( aEditControl, {|o| o:setData() } )
AEval( aEditControl, {|o| o:GetData() } )
die ich noch Jahre später identifizieren kann.

---

was Thread angeht, welche ihre eigene Workspace haben, muss man mit Events arbeiten.

Code: Alles auswählen

PostAppEvent(MyTuwas, FIELD->(RECNO()),, oThread2)
---

das Problem des "update" von anderen XbPart in einem Fenster hat man oft mit einem Browse.
nun gibt es 2 Möglichkeiten :

a.) die "alte" wenn ein Browse "stable" ist
b.) per Event mit DbRegisterClient()

man sollte aber IMHO nicht "beide" Methoden gleichzeitig verwenden :!:

während a.) immer nur "1 Tastendruck" verarbeiten kann "könnte" mit b.) eine Reihe von Events kommen.

---

IMHO funktioniert DbRegisterClient() nur innerhalb "einer" Xbase++ App.
weder eine weitere Instanze lokal oder im Netzwerk bekommt "jemand" etwas von dem Xbase++ "UserDef" Event mit :roll:

---

ich schreibe meinen xBase Source Code gerne so das ich ihn mit verschiedenen Compilern gebrauchen kann.
Xbase++ "Erfindungen" sind in solchen Fällen wie eine 3-PP Lib wo man kein Zugriff hat [-X
gruss by OHR
Jimmy

Antworten