Eine dbf gleichzeitig in zwei Browses [Erledigt]
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Eine dbf gleichzeitig in zwei Browses [Erledigt]
Eine Fortsetzung des Problems mit dem Scope...
Ich habe die dbf mit den Positionen, die abgearbeitet werden sollen. In einem Browse sollen alle die Positionen angezeigt werden, die der angemeldete Mitarbeiter erledigen soll. Zur Info, damit der weiß was da noch alles zu gehört (um z. B. einen Karton in passender Größe für alle Artikel dieses Auftrages zu wählen), sollen in einem zweiten Browse alle anderen Artikel dieses Auftrages angezeigt werden. Das regel ich durch einen Filter, der auf die gescopten Positionen gelegt wird.
Es ist überhaupt kein Problem, die dbf 2x zu öffnen, und bei zweiten einen anderen Alias zu vergeben. Es ist überhaupt kein Problem, diese beiden unterschiedlichen dbf den beiden Browses zuzuordnen. Alle Artikel, die der Mitarbeiter abarbeiten soll, werden auch ganz korrekt angezeigt. Aber in dem anderen Browse werden nicht z. B. 10 weitere Positionen angezeigt, sondern in einer der Anzahl Positionen im ersten Browses entsprechenden Anzahl Zeilen mit immer die gleiche Position. Die zwar in diesen Browse gehört, aber nicht z. B. 3x, nur weil im anderen Browse ganz korrekt 3 abzuarbeitende Positionen angezeigt werden. Und natürlich auch nicht 3x die gleiche Position.
Jan
Ich habe die dbf mit den Positionen, die abgearbeitet werden sollen. In einem Browse sollen alle die Positionen angezeigt werden, die der angemeldete Mitarbeiter erledigen soll. Zur Info, damit der weiß was da noch alles zu gehört (um z. B. einen Karton in passender Größe für alle Artikel dieses Auftrages zu wählen), sollen in einem zweiten Browse alle anderen Artikel dieses Auftrages angezeigt werden. Das regel ich durch einen Filter, der auf die gescopten Positionen gelegt wird.
Es ist überhaupt kein Problem, die dbf 2x zu öffnen, und bei zweiten einen anderen Alias zu vergeben. Es ist überhaupt kein Problem, diese beiden unterschiedlichen dbf den beiden Browses zuzuordnen. Alle Artikel, die der Mitarbeiter abarbeiten soll, werden auch ganz korrekt angezeigt. Aber in dem anderen Browse werden nicht z. B. 10 weitere Positionen angezeigt, sondern in einer der Anzahl Positionen im ersten Browses entsprechenden Anzahl Zeilen mit immer die gleiche Position. Die zwar in diesen Browse gehört, aber nicht z. B. 3x, nur weil im anderen Browse ganz korrekt 3 abzuarbeitende Positionen angezeigt werden. Und natürlich auch nicht 3x die gleiche Position.
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.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
Hallo, Jan.
Ich habe viele solcher Anwendungsfälle und sie funktionieren alle. Es kann m.E. nur daran liegen, dass Du einen Denk- oder Codefehler hast. Die Browses sind unabhängig voneinander, aber die Datenquellen sind es aus irgendwelchen Gründen nicht. Du machst im "Bearbeiten"-Browse irgendwas, das das andere Browse beeinflusst. Hundertpro. Im einfachsten Fall ist die Filterbedingung falsch bzw. verhält sich dynamisch, obwohl sie statisch sein sollte.
Ich habe viele solcher Anwendungsfälle und sie funktionieren alle. Es kann m.E. nur daran liegen, dass Du einen Denk- oder Codefehler hast. Die Browses sind unabhängig voneinander, aber die Datenquellen sind es aus irgendwelchen Gründen nicht. Du machst im "Bearbeiten"-Browse irgendwas, das das andere Browse beeinflusst. Hundertpro. Im einfachsten Fall ist die Filterbedingung falsch bzw. verhält sich dynamisch, obwohl sie statisch sein sollte.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
Hallo Tom,
da stimme ich Dir durchaus zu. Was ich habe:
Code posten wird hier etwas schwierig, weil sich das natürlich in die Länge zieht.
Jan
da stimme ich Dir durchaus zu. Was ich habe:
- Gleiche dbf 2x geöfnet, jeweils mit eigenem Alias. Alias ist kontrolliert per Alias(), passt.
- Filter und Scopes auf beide Aliasse passen, werden auch nicht angefasst während der Abarbeitung des Auftrages.
- 2x Browse mit eigenen sprechenden Namen. Werden jeweils komplett eigenständig erzeugt, nur 2 Dinge sind gleich: Das Fontobjekt, und das Array mit den Feldnamen für die verwendeten Spalten.
- Datalinks gehen jeweils auf den korrekten Alias.
- :stableBlock gibt es nur in dem Browse mit den aktuellen Positionen.
- Spalten werden dem korrekten Browse angehängt.
- Im Info-Browse habe ich den Cursor komplett rausgenommen, der würde da nur irritieren. Ändert aber auch nichts am falschen Verhalten.
- Es gibt bei jeder Änderung ein :refreshAll(), das getrennt auf jeden der beiden Browses ausgeführt wird.
Code posten wird hier etwas schwierig, weil sich das natürlich in die Länge zieht.
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.
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
Ich habe mich da mal durchgetestet. Sobald ich bei einem der beiden Aliassse einen Scope einbaue, kommt dieses Phänomen. Da ist es dann auch egal welcher Alias den Scope bekommt. Immer wird der Alias mit den aktuellen Positionen korrekt angezeigt, der mit den Infopositionen falsch.
Jan
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: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
Ich muß gestehen, den hervorgehobenen Teil habe ich nicht verstanden. Vielleicht muß ein Refresh über die Tabelle und den Browser gemacht werden? Testweise könntest Du die Tabelle des zweiten Browsers schließen und wieder öffnen.Jan hat geschrieben:Eine Fortsetzung des Problems mit dem Scope...
Ich habe die dbf mit den Positionen, die abgearbeitet werden sollen. In einem Browse sollen alle die Positionen angezeigt werden, die der angemeldete Mitarbeiter erledigen soll. Zur Info, damit der weiß was da noch alles zu gehört (um z. B. einen Karton in passender Größe für alle Artikel dieses Auftrages zu wählen), sollen in einem zweiten Browse alle anderen Artikel dieses Auftrages angezeigt werden. Das regel ich durch einen Filter, der auf die gescopten Positionen gelegt wird.
Es ist überhaupt kein Problem, die dbf 2x zu öffnen, und bei zweiten einen anderen Alias zu vergeben. Es ist überhaupt kein Problem, diese beiden unterschiedlichen dbf den beiden Browses zuzuordnen. Alle Artikel, die der Mitarbeiter abarbeiten soll, werden auch ganz korrekt angezeigt. Aber in dem anderen Browse werden nicht z. B. 10 weitere Positionen angezeigt, sondern in einer der Anzahl Positionen im ersten Browses entsprechenden Anzahl Zeilen mit immer die gleiche Position. Die zwar in diesen Browse gehört, aber nicht z. B. 3x, nur weil im anderen Browse ganz korrekt 3 abzuarbeitende Positionen angezeigt werden. Und natürlich auch nicht 3x die gleiche Position.
Jan
Könntest Du ein einfaches Bildschirm-Beispiel konstruieren und zeigen, wie es derzeit falsch ist bzw. wie es richtig sein soll?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Eine dbf gleichzeitig in zwei Browses
das die beiden DBF verschiedene ALIAS() haben ist klar aber du scheinst ja auch eine INDEX zu haben (sonst könntest du kein SCOPE setzten)Jan hat geschrieben:Ich habe mich da mal durchgetestet. Sobald ich bei einem der beiden Aliassse einen Scope einbaue, kommt dieses Phänomen. Da ist es dann auch egal welcher Alias den Scope bekommt. Immer wird der Alias mit den aktuellen Positionen korrekt angezeigt, der mit den Infopositionen falsch.
wenn du nun im 1st Browse eine Aktion machst welcher den INDEX ändert und dieser auch im 2nd Browse aktive ist ...
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
Jimmy, das darf keine Rolle spielen, sonst liegt ein Bug vor!
Mal sehen, ob sich Jan noch einmal meldet...
Uli
Mal sehen, ob sich Jan noch einmal meldet...
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
Das WLan hier auf den Xbase-Tracks ist - nahezu nicht existent. Sorry, ich kann daher nicht viel Online sein.
Ich hab gestern mit Andreas über das Problem gesprochen. Der Code scheint soweit OK zu sein. Ich werde ihm eine kleine Musteranwendung fertig amchen, die er sich nächste Woche im Büro dann ansehen wird.
Jan
Ich hab gestern mit Andreas über das Problem gesprochen. Der Code scheint soweit OK zu sein. Ich werde ihm eine kleine Musteranwendung fertig amchen, die er sich nächste Woche im Büro dann ansehen wird.
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: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
Danke für die Info, Jan.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
So, das Problem ist gelöst. Wir haben heute mit der XUG mit vier Personen knapp 1 Stunde davor gesessen, dann war die Lösung da.
Der Punkt war, das die Bewegungen in den Navigations-Codeblöcke der beiden Browses jeweils den Alias davorgesetzt bekommen müssen. Es reicht nicht, das der Browse über die :datalink den richtigen Alias haben. DbSkipper etc. müssen den ebenfalls bekommen.
Noch einmal vielen Dank für Eure ganzen Tipps und Hinweise.
Jan
Der Punkt war, das die Bewegungen in den Navigations-Codeblöcke der beiden Browses jeweils den Alias davorgesetzt bekommen müssen. Es reicht nicht, das der Browse über die :datalink den richtigen Alias haben. DbSkipper etc. müssen den ebenfalls bekommen.
Noch einmal vielen Dank für Eure ganzen Tipps und Hinweise.
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.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16509
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses [Erledigt]
Stichwort: ungenügende Kapselung.
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Eine dbf gleichzeitig in zwei Browses
nun hat sich Jan gemeldetUliTs hat geschrieben:Jimmy, das darf keine Rolle spielen, sonst liegt ein Bug vor!
und das ist genau das was ich mit dem Record Pointer meine was mit dem "DbSkipper" dann passiert.Der Punkt war, das die Bewegungen in den Navigations-Codeblöcke der beiden Browses jeweils den Alias davorgesetzt bekommen müssen. Es reicht nicht, das der Browse über die :datalink den richtigen Alias haben. DbSkipper etc. müssen den ebenfalls bekommen.
Deshalb habe ich ja auch 2 "getrennte" Browse (Class), vorzugsweise im Thread, vorgeschlagen die natürlich ihren "eigenen DbSkipper" dann hätten.
ob es mit den beiden ALIAS nun wirklich stabil ( im Netzwerk ?) läuft wird man, speziell bei Power Usern, schnell merken
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses [Erledigt]
Ich hatte das schon ganz am Anfang im Originalthread geschrieben: ... oder eben die Navi-Codeblöcke nicht stimmen
Tatsächlich kann man mit allgemeinen Navi-Codeblöcken für mehrere Workareas arbeiten, muss dann aber dafür sorgen, dass im Navi-Fall immer auch die richtige Workarea selektiert ist. Wenn das nicht der Fall ist, navigiert das Browse in der falschen, zeigt aber (weil die Datalinks richtig sind) die Daten aus der korrekten an.
Tatsächlich kann man mit allgemeinen Navi-Codeblöcken für mehrere Workareas arbeiten, muss dann aber dafür sorgen, dass im Navi-Fall immer auch die richtige Workarea selektiert ist. Wenn das nicht der Fall ist, navigiert das Browse in der falschen, zeigt aber (weil die Datalinks richtig sind) die Daten aus der korrekten an.
Herzlich,
Tom
Tom
- Martin Altmann
- Foren-Administrator
- Beiträge: 16509
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses [Erledigt]
Und genau das war hier das Problem. Fiel Andreas dann als erstem auf.
Viele Grüße,
Martin
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses
Hallo Jan, kannst Du bitte den Codeblock für die :datalink zeigen?Jan hat geschrieben:...Der Punkt war, das die Bewegungen in den Navigations-Codeblöcke der beiden Browses jeweils den Alias davorgesetzt bekommen müssen. Es reicht nicht, das der Browse über die :datalink den richtigen Alias haben. DbSkipper etc. müssen den ebenfalls bekommen.
---
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Eine dbf gleichzeitig in zwei Browses
warum willst du den "falschen" o:Datalink sehen wenn das Problem in den Navigations-Codeblöcke lag ?!UliTs hat geschrieben:kannst Du bitte den Codeblock für die :datalink zeigen?
wenn du die Navitations Codeblöcke erstellst
Code: Alles auswählen
oBrowse:skipBlock := {|n| DbSkipper(n) }
*** in c:\ALASKA\XPPW32\Source\SYS\BrowUtil.prg
IMHO sollte man nicht mehr FUNCTION in den Navitations Codeblöcke verwenden sondern eine Class mit Methoden.
Code: Alles auswählen
INLINE METHOD GuiBrowseDB( oParent, aPos, aSize )
...
// Navigationscodeblöcke für den Browser
self:oBrowse:skipBlock := {|n| self:DbSkipper(n) }
self:oBrowse:goTopBlock := {| | self:DbGoTop() }
self:oBrowse:goBottomBlock := {| | self:DbGoBottom() }
self:oBrowse:phyPosBlock := {| | self:Recno() }
// Navigationscodeblöcke für den vertikalen Scrollbar
self:oBrowse:posBlock := {| | self:DbPosition() }
self:oBrowse:goPosBlock := {|n| self:DbGoPosition(n) }
self:oBrowse:lastPosBlock := {| | 100 }
self:oBrowse:firstPosBlock := {| | 0 }
INLINE METHOD DbSkipper(n)
INLINE METHOD DbGoTop()
INLINE METHOD DbGoBottom()
INLINE METHOD Recno()
INLINE METHOD DbPosition()
INLINE METHOD DbGoPosition(n)
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses [Erledigt]
Eine abgeleitete Browse-Klasse kann auch einfach über eine neue iVar verfügen, die die Datenquelle referenziert (Alias der DB oder Name des Arrays), und diese könnte dann in allen allgemeinen Navi-Codeblöcken verwendet werden (und z.B. auf das aktuelle Alias defaulten). So mache ich das, einfach gesagt. Oder man stellt eben sicher, dass vor der Navigation immer und in jeder Situation auch die richtige Workarea selektiert wird. Was bei zwei parallelen Browses ein wenig kompliziert werden kann.
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Eine dbf gleichzeitig in zwei Browses [Erledigt]
Du hast Recht, Jimmy. Ich habe da ein Problem gesehen, was es gar nicht gibt, wenn man sauber programmiert .
Tom, ich mache es genauso wie Du.
Uli
Tom, ich mache es genauso wie Du.
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück