Relationen aktualisieren

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

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

Relationen aktualisieren

Beitrag von Manfred »

Hi Leute,

mal wieder eine komische Frage:

Ich habe folgende Sache gemacht. 2 DB über Relationen miteinander verbunden, was auch prima klappt. (wäre ja auch der Hammer ;-) )

Ich springe in der Vaterbank einen Satz an und Exportiere dann die passenden Sätze aus der Sohndatenbank über DBexport(). Das klappt auch.

Wenn ich in der Vaterdatenbank den gleichen Record sofort wieder anspringe, scheint wohl die Sohndatenbank auf EOF() zu stehen. Also dachte ich mir, die Vaterdatenbank mit einem Skip() zu versehen und danach wieder auf den Record zu springen. Aber es kommt aus der Sohnbank kein Ergebnis. Erst wenn ich einen anderen Record anspringe und dann wieder der vorherigen, dann werden die entsprechenden Daten exportiert.
Ich dachte mit Skip() würde es so machbar sein? Fehlgedacht?
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
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: Relationen aktualisieren

Beitrag von AUGE_OHR »

Manfred hat geschrieben:Ich springe in der Vaterbank einen Satz an und Exportiere dann die passenden Sätze aus der Sohndatenbank über DBexport().
em ... verwendest du "<lRest>" bei DbEport ?
( The default value is .F. (false), indicating that all records are exported. )
Wenn ich in der Vaterdatenbank den gleichen Record sofort wieder anspringe, scheint wohl die Sohndatenbank auf EOF() zu stehen.
aber nur wenn du per DbExport "<lRest>" nichts gesetzt hast
Also dachte ich mir, die Vaterdatenbank mit einem Skip() zu versehen und danach wieder auf den Record zu springen. Aber es kommt aus der Sohnbank kein Ergebnis. Erst wenn ich einen anderen Record anspringe und dann wieder der vorherigen, dann werden die entsprechenden Daten exportiert.
Ich dachte mit Skip() würde es so machbar sein? Fehlgedacht?
hm ... meinst du Skip(0), anderfalls würdest du ja immer einen anderen
Datensatz bekommen. ich bin mir nicht sicher ob Skip(0) hier was
bringt, ich würde immer ein SEEK() benutzten den es wäre ja möglich
das der Datensaätz nicht mehr "zur verfügung" steht (wenn du ihn nicht
vorher gespeert hast).

ansonsten wäre kleine sample gut um zu sehen was du gemacht hast.

gruss by OHR
Jimmy
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

Beitrag von Manfred »

Moin Jimmy,

Code: Alles auswählen

vater->(DBSEEK(UPPER(name),.T.,"name"))
sohn->(DBEXPORT("ergebnis",,,{|| sohn->id = vater->id}))
vater->(DbSkip())
Das ist jetzt eine verkürzte Version. Es klappt alles, nur nicht immer hintereinander mit dem gleichen Vatersatz. Einan anderen Vatersatz kurz angesprungen, (selbst wenn die Liste NICHT damit angezeigt wird), schon wird wieder etwas gefunden. Direkt hintereinander den gleichen DBSEEK() gesucht und es gibt eine leere EXPORT DB.

Ich hoffe es genügt?
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
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

Beitrag von AUGE_OHR »

Manfred hat geschrieben:Moin Jimmy,

Code: Alles auswählen

vater->(DBSEEK(UPPER(name),.T.,"name"))
sohn->(DBEXPORT("ergebnis",,,{|| sohn->id = vater->id}))
vater->(DbSkip())
Das ist jetzt eine verkürzte Version. Es klappt alles, nur nicht immer hintereinander mit dem gleichen Vatersatz. Einan anderen Vatersatz kurz angesprungen, (selbst wenn die Liste NICHT damit angezeigt wird), schon wird wieder etwas gefunden. Direkt hintereinander den gleichen DBSEEK() gesucht und es gibt eine leere EXPORT DB.

Ich hoffe es genügt?

uuiiiiiiiiiii ... welche Xbase++ Version ?
klar sowas darf nicht passieren !!!

ich habe das noch nicht erlebt mit v1.80 / v.19x, vermutlich weil ich
irgendwann von "set relation" auf ein "workaround" mit "scope" um-
gestiegen bin (es gab mal ein "set relation" problem ...)

Code: Alles auswählen

vater->(DBSEEK(UPPER(name),.T.,"name"))
select sohn
set scope "name"
do while !eof()
...
enddo
select vater
das problem "damals" war das wenn ich in "sohn" mich auf einen
"anderen" datensatz befand und auch der "vater" sich bewegte ...

hoffe das es nicht mit der "aktuellen" v1.9x passiert !

gruss by OHR
Jimmy
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

Beitrag von Manfred »

Hi Jimmy,

leider muß ich direkt nach Ostern mit dem Bösen raus: Es ist die "aktuelle" Version 1.9.326

Das mit dem Scope wollte ich auch erst machen, aber auch hier: Ich habe es auf die Schnelle nicht kapiert, wozu das gut ist und wie man es einsetzt.

Jaja ich weiß, ich sollte besser Eier suchen gehen, als zu Programmieren....

:(

Aber es macht doch so einen Spaß.... :D

PS:

Jetzt fällt es mir wie Schuppen aus den Haaren, stimmt, da ist wirklich ne Macke drin. Ich hatte vor ein paar Wochen eine Unstimmigkeit mit Relationen, als ich ein Clipperprogramm umgebaut hatte auf Xbase++. Dort wurde auch nicht richtig aktualisiert. Hm, das geht mal an den Support.....
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:

Beitrag von brandelh »

Hallo Manfred,

da fällt mir ein ...

Ich würde bei deinem Beispiel eine SELECTIVE Relation durchführen, dann sind im Kinddatensatz nur noch genau die zum Vater gehörenden Datensätze und du brauchst beim Export keine for / while Beschränkungen eingeben, was schneller sein dürfte.

Da fällt mir ein, teste mal ob die Verwendung einer Variablen das Ergebnis ändert:

Code: Alles auswählen

vater->(DBSEEK(UPPER(name),.T.,"name")) 
cSuchBeg := vater->id
sohn->(DBEXPORT("ergebnis",,,{|| sohn->id = cSuchBeg})) 
vater->(DbGoTop())   // oder auch hier mit mehr Bewegung.
bzw. auch ganz ohne while codeblock, eventuell kommt auch dieser durcheinander ?
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

Beitrag von Manfred »

Hi Hubert,

was mich noch etwas verwirrt, ist folgendes:

Ich mache vorher eine Abfrage, ob die Sohndatei auf EOF() steht. Das steht sie, wenn keine passenden Einträge zur Vaterdatei gefunden werden.

Es wird aber kein EOF() angezeigt, bei nochmaligem Suchen mit dem gleichen Wert.

Ich werde die Routine mal ändern...
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
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

Beitrag von Manfred »

Hm,

ich habe die Sache erweitert und nach dem DBEXPORT() ein sohn->(DBGOTOP()) eingebaut......

Nüscht.

Hm, das sieht verdammt nach Futtsack aus....
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
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

Beitrag von AUGE_OHR »

Manfred hat geschrieben: leider muß ich direkt nach Ostern mit dem Bösen raus: Es ist die "aktuelle" Version 1.9.326
also ich habe mir meine "set relation" stellen mal genauer angesehen.

da ich immer auf etwas "eindeutiges" wie z.b. Kundennummer gehe
hab ich immer nur exact einen "Sohn" Treffer.
(z.b. Lieferschein -> Kundennummer -> Kunde )
Das mit dem Scope wollte ich auch erst machen, aber auch hier:
Ich habe es auf die Schnelle nicht kapiert, wozu das gut ist und
wie man es einsetzt.
das sind nun meine Stellen wo ich "mehrere Sohn" Datensätze habe.
(Kunden -> Kundennummer -> Rechnungen). Hier hab ich nun SCOPE
auf der "Sohn" Daten.

Code: Alles auswählen

KUNDEN->(DBSEEK(Kundenname))
IF FOUND()
    cSuch := KUNDEN->KDNR
    SELECT SOHN
    SEEK(cSuch)
    IF FOUND() 
       SET SCOPE to cSuch
       ....
       SET SCOPE to
    ENDIF
ENDIF

beides funktioniert prima bei mir ! (v1.9.326 / v1.9.330)

gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Manfred.

Ein SCOPE entspricht weitgehend einem Filter, mit dem großen Unterschied, daß die Bedingung des Scopes eines Indexausdrucks in der zu scopenden (zu filternden) Datei bedarf, wohingegen ein Filter Ausdrücke beliebiger Art zu nutzen in der Lage ist. SCOPES und Relationen entsprechen sich insofern, daß eine Relation ebenfalls eines Indexes bedarf, aber Relationen den "sichtbaren" Bereich der abhängigen Datenbank automatisch einschränken (durch Bewegungen in der "Master"-Datenbank), wohingegen Scopes keine Master-Datenbank benötigen.

SCOPES sind sehr gut z.B. für schnelle Browses von Daten-Untermengen. Wenn Du das klassische Beispiel Auftrag/Auftragspositionen hast, setzt Du in der Positionendatei einfach einen Scope auf die Auftragsnummer:

Code: Alles auswählen

DbSelectArea("pos")
DbSetScope(SCOPE_BOTH,auf->auftragsnummer)
Gleiches erreicht man natürlich mit einer Relation, aber Scopes haben, wie gesagt, den Vorteil, unabhängig von Master-Datenbanken arbeiten und z.B. auf Benutzereingaben reagieren zu können. Datenbankbewegungen wie beim Filter sind nicht nötig. Scopes und Relationen schränken in einer Datenbank den sichtbaren Bereich der Datensätze ein, Eof() und Bof() feuern quasi "mittendrin".
Herzlich,
Tom
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

Beitrag von Manfred »

Hi,

hier die Antwort vom Alaska Support
-----------------------------------------------------------------
Hallo Herr Kunz,

Ich habe mir inzwischen ein kleines Beispiel geschrieben um
das Problem zu sehen.

Was hier passiert ist eine Optimierung die wir in der Xbase++
runtime gemacht haben um einige PDRs zu schliessen. Im detail
heisst das, das eine client Workarea nicht in jedem Fall synchronisiert
wird. So ist es möglich eine Relation aufzubauen und dann auf
beiden Workareas unabhängig voneinander zu Arbeiten. Es
handelt sich hier also um einen Wunsch unserer Kunden dem
wir nachgekommen sind.

Ich habe diese Fall an die Entwicklung weitergegeben. Es währe
durchaus wünschenswert, wenn ein DbSeek() auf jeden Fall die
Child Areas synchronisiert, auch wenn sich die Schlüssen nicht
geändert haben. Wir müssen das aber noch genauer prüfen.

Mit freundlichen Grüssen,
Andreas Herdt
Alaska Technical Support
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
wann kam denn die Antwort? Ich hoffe mal, heute. Nicht, dass sich die Auslieferung jetzt noch weiter verzögert... :?:
Obwohl - dann bekommen wir die 1.9 ja vielleicht doch auf der DevCon in die Hand :roll:
Na mal schauen :lol:

Viele Grüße,
Martin
:grommit:
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.
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

Beitrag von Manfred »

Hi Martin

heute um 10:30 war sie in meinem Postfach. Ich lese da aber nicht draus, das die sich damit sofort beschäftigen wollen....
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:

Beitrag von brandelh »

So ist es möglich eine Relation aufzubauen und dann auf
beiden Workareas unabhängig voneinander zu Arbeiten. Es
handelt sich hier also um einen Wunsch unserer Kunden dem
wir nachgekommen sind.
Also wenn er meinen PDR anspricht, so wollte ich lediglich, dass ein RLOCK() im Stammdatensatz, KEINE Nachpositionierung im Childsatz nachsich zieht. Da diese dann immer auf den ersten Datensatz zeigt, was meist falsch wäre.

Dass ein DBSEEK() nicht nachpositioniert kann niemand gewünscht haben.
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

Beitrag von Manfred »

Hi,

ja, was soll ich dazu sagen. Ich war bisher immer der Meinung, das man trotzdem in beiden Workareas hin und herspringen kann. Die Relation wird doch angeblich immer erst wieder aktualisiert, wenn auf die Sohndatei zugegriffen wird und nicht schon vorher. So habe ich es jedenfalls gelesen. Aus Perfomancegründen.
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
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

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Was hier passiert ist eine Optimierung die wir in der Xbase++
runtime gemacht haben um einige PDRs zu schliessen.
na toll, einen BUG mit einem workaround zu beheben
Im detail heisst das, das eine client Workarea nicht in jedem Fall
synchronisiert wird. So ist es möglich eine Relation aufzubauen
und dann auf beiden Workareas unabhängig voneinander zu Arbeiten.
dann frag ich mich wofür ich dann noch eine "Set Relation" brauche
Es handelt sich hier also um einen Wunsch unserer Kunden dem
wir nachgekommen sind.
das ist ja sehr nett von den Alaska Leuten, aber ist das auch
Cl*pper compatible ?
Ich habe diese Fall an die Entwicklung weitergegeben. Es währe
durchaus wünschenswert, wenn ein DbSeek() auf jeden Fall die
Child Areas synchronisiert, auch wenn sich die Schlüssen nicht
geändert haben. Wir müssen das aber noch genauer prüfen.
gut das ich mich seit dem ersten "Set Relation" BUG bei 1:N auf
SCOPE in der Childarea umgestellt habe ...:)

gruss by OHR
Jimmy
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:

Beitrag von brandelh »

das ist ja sehr nett von den Alaska Leuten, aber ist das auch
Cl*pper compatible ?
Das von mir monierte alte Verhalten war nicht clipper compatibel.
Ob die Verbesserung eine Verschlimmerung ist kann ich mangels XPP Version 1.9.xxx nicht beurteilen. Offensichtlich hat man in der alten einen RLOCK() mit einem internen DBSKIP(0) gekoppelt, welches dann aber die Clientdatenbank auf den ersten Satz zurückgesetzt hat. Wenn man das nicht weiß und eine alte Clipperanwendung umstellt, überschreibt man immer den ersten Satz mit den falschen Daten. Das hatte ich - zu spät - bemerkt und moniert.

Ein RLOCK() hat keine Satzbewegung auszulösen !!! :!:

Wenn man beim Verbessern den DBSKIP(0) und SEEK() bei gleichem Suchbegriff zahnlos gemacht hat, ist das aus meiner Sicht ebenfalls ein Fehler.
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

Beitrag von Manfred »

Noch was in Sachen Relationen.

Ich weiß nicht, ob es bekannt ist, oder ob es nachvollziehbar oder sonst was ist, ich wußte es bis gerade noch nicht:

Ich habe gerade aus Versehen versucht eine Relation zu bilden, auf eine DB, die ich vorher durch Pennerei auf SetOrdFocus(0) gesetzt hatte. Der Index wurde also abgeschaltet und es wurde auf RECNO() gemacht.

Das hatte aber zur Folge, als ich die Relation auf den von mir vermeintlich aktivierten Index gesetzt habe, wurde die Kind-DB geschlossen und es erschien beim Aufruf der DB mit Angabe eines Feldes eine Fehlermeldung.

Im VX Debugger sah es folgendermaßen aus:

Ich ging über die Relation drüber und ließ mir das Feld anzeigen. Das ging nicht, weil die DB geschlossen war. Nachdem ich aber eine kurze Zeit gewartet hatte, stand die Kind DB wieder zur Verfügung und ich konnte im Debugger das Feld der DB wieder anzeigen.

Ist das korrekt so? Ich glaube nicht.
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:

Beitrag von brandelh »

Hallo Manfred,

ich weiß nur dass es erlaubt ist eine Relation auf die Satznummer zu setzen und es ist erlaubt, dass die Stammdatei überhaupt keinen (aktiven) Index hat. Den brauchen nur die Kinddateien.

Das Schließen der Datei, davon habe ich noch nie gehört.

Allerdings, wie schon mehrfach bemerkt, verwende ich Relationen sehr selten - und nach den Datenverlusten (Rlock auf Stammsatz ändert passenden Kindsatz) halte ich davon noch weniger.

VX-Debugger - ich nutze noch 1.82.294 inkl. Debugger ...
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

Beitrag von Manfred »

Hi Hubert,

wenn ich sonst schon nichts gescheites von mir gebe, dann wollte ich wenigstens ein wenig aus der Fehlerkiste plaudern. Immerhin habe ich an dem Sch....fehler jetzt 15 Minuten gesessen, bis ich endlich auf diesen Futtsack gestoßen bin.

Ich mal wie immer an den Support schreiben. Die sollen sich bloß nicht langweilen.
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
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

Beitrag von Manfred »

Eine kurze Verbindung zu diesem Thread:

http://www.xbaseforum.de/viewtopic.php?p=3325#3325

Die Relationen sind zur Zeit absoluter Mist.

folgende Relationen:

DB1 -> DB2 -> DB3

DB1 wurde nacheinander mit der gleichen RECNO() angesprungen. DB3 wollte ich eine Änderung wegschreiben, da kam der Fehler 128 über den Debugger. Das Programm verabschiedet sich ohne eine Meldung. DB3 stand auf irgendwas, aber nicht mehr auf dem Satz, auf dem sie vorher stand. Sobald ich im Debugger die DB3 mit RECNO() aufrufe, stirbt das Programm

Ich habe die gleiche Sache über DSEEK() nachgebildet und das klappte.

Tolle Wurst.
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
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

Beitrag von Manfred »

Hi,

obwohl wir uns hier im Moment alle einig sind, das es mit den Relationen etwas hapert, hier nochmal eine Frage:

Kann man eigentlich einzelne Relationen beenden? Ich meine, wenn ich jetzt folgendes habe:

db1 relation in Db2
Db1 relation in Db3
db1 realtion in db4

Was ist wenn ich nur noch db3 und db4 benötige, wie bekomme ich die relation in db2 weg? Alles trennen und dann neu auf db3 und db4 aufbauen? Ich habe keine Erklärung dazu in der Anleitung gefunden und meine Versuche sind auch fehlgeschlagen.
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
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Hallo Manfred,
Alles trennen und dann neu auf db3 und db4 aufbauen?
ich glaube, dass du damit recht hast.
Gruß,

Andreas
VIP der XUG Osnabrück
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

Beitrag von Manfred »

Hi Manfred,

ich fürchte, hier fehlt uns tatsächlich etwas ;-(. Du hast völlig Recht:
was man sukzessive aufbauen kann sollte man auch sukzessive
wieder abbauen können!

Das Merkmal befindet sich bereits auf der "Wishlist". Im Augenblick
gibt es leider keine andere Möglichkeit, als schon vorhandene
Relationen nach einem DbClearRelation() wieder einzeln neu
zu setzen.

Schöne Grüße,
Till Warweg
Alaska Technical Support
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
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

Beitrag von Manfred »

Hi,

so einfach gebe ich mich nicht geschlagen:

Ich grübel jetzt schon die ganze Zeit darüber, wenn hier etliche sind, die Relationen meiden und es mit Scope oder Dbseek regeln, wie löst ihr denn dann das Problem in einem Browsefenster? Dort kann doch nicht jedesmal ein Dbseek abgeschickt werden, wenn mehrere "verknüpfte" Tabellen angezeigt werden sollen, oder?
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!!
Antworten