HILFE: Schreiben von Daten in die DBF über Netzwerk !
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Klaus,
das wird vermutlich nichts damit zu tun haben. Aber warum arbeitest Du mit Select? Mach doch einfach ein Use ... New. Dann kommst Du mit den Bereichen nicht in Konflikt wie Du das weiter oben geschrieben hast.
Jan
das wird vermutlich nichts damit zu tun haben. Aber warum arbeitest Du mit Select? Mach doch einfach ein Use ... New. Dann kommst Du mit den Bereichen nicht in Konflikt wie Du das weiter oben geschrieben hast.
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.
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Hi , kann mir mal bitte jemand sagen wo bei AVIRA Free der Menüpunkt ist in dem ich den Datenordner vom Scan ausschließen kann
Ich finds nicht
mfg Klaus
Ich finds nicht
mfg Klaus
- satmax
- 1000 working lines a day
- Beiträge: 831
- Registriert: Do, 02. Dez 2010 19:34
- Wohnort: Biberbach in Österreich
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Ich denke gleich wie bei der Pro Version: Extras / Konfiguration (F8): PC Sicherheit / System-Scanner / Suche / Ausnahmen
Gruß
Markus
Markus
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Leider habe ich immer noch das Problem, daß er meine internen Nummern nicht aktualisiert
ohne einen Fehler !
und das schlimme ist auf meinem Testrechner hier funktioniert es !
so im andern Source Code wo es immer funktioniert habe ich es so geschrieben:
also jeweils "anzahl1->"
sollte das nicht egal sein, da ich ja mit "select 2" den definierten Arbeitsbereich ausgewählt habe
mfg Klaus
Code: Alles auswählen
replace nummer with nummer +1
und das schlimme ist auf meinem Testrechner hier funktioniert es !
Code: Alles auswählen
select 2
netflock(5)
termnr=anzahl1->terminnr
replace terminnr with terminnr+2
*-------------šberprfung ob erh”ht----------
if anzahl1->terminnr = termnr
replace terminnr with terminnr+2
endif
dbcommit()
Code: Alles auswählen
...
replace anzahl1->terminnr with anzahl1->terminnr+2
...
sollte das nicht egal sein, da ich ja mit "select 2" den definierten Arbeitsbereich ausgewählt habe
mfg Klaus
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Mache nach dem replace einfach ein dbskip(0).
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.
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
@Martin: du meinst nach replace...
mfg Klaus
mfg Klaus
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
es mag ja sein das du es in der Function überprüfst aber du gibt den Wert ja nicht zurück !xbaseklaus hat geschrieben:@Jimmy : Ich überprüfe ja ob da Flock() erfolgreich war
Code: Alles auswählen
function NetFlock(nTries) local nWaitTime := 0.2 local lOK do while nTries > 0 if flock() = .F. .... select 12 netflock(10) // -> IF netflock(10) replace ...
das gibt es nicht !!!xbaseklaus hat geschrieben:neterr() funktioniert leider nicht bei mir ... warum auch immer !?!
es ist nicht sehr schlau eine Read/Write Aktion in einem Schritt erledigen zu wollen.xbaseklaus hat geschrieben:Code: Alles auswählen
replace nummer with nummer +1
Code: Alles auswählen
nNummer := FIELD->nummer
nNummer++
IF RLOCK()
REPLACE FIELD->nummer WITH nNummer
UNLOCK
COMMIT
ENDIF
dann überprüfe doch mal den ALIAS()xbaseklaus hat geschrieben:Code: Alles auswählen
also jeweils "anzahl1->"
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Ja - aber die Autokorrektur auf dem iPhone meinte was anderesxbaseklaus hat geschrieben:@Martin: du meinst nach replace...
Habe es jetzt oben korrigiert!
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.
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
@ Jimmy
sollte doch - es wird eine Meldung angezeigt !?!
mfg Klaus
Code: Alles auswählen
function NetFlock(nTries)
local nWaitTime := 0.2
local lOK
do while nTries > 0
Flock()
if flock() = .F.
lOK := .f.
cls
wait("Datenbank F konnte nicht gesperrt werden - ....")
nTries := nTries -1
inkey(nWaitTime)
else
lOK := .t.
exit
endif
enddo
return lOK
mfg Klaus
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Code: Alles auswählen
select 2
netflock(5)
termnr=anzahl1->terminnr
replace terminnr with terminnr+2
*-------------šberprfung ob erh”ht----------
if anzahl1->terminnr = termnr
replace terminnr with terminnr+2
endif
dbcommit()
NACH dem 1. replace das dbcommit() und nach dem evtl. 2. auch. Nicht erst später.
Code: Alles auswählen
select anzahl1
if netflock(5)
dbgobottom()
termnr := anzahl1->terminnr + 2
replace anzahl1->terminnr with termnr
dbcommit()
*-------------šberprfung ob erh”ht----------
if anzahl1->terminnr = termnr - 2
// kann eigentlich nicht passieren, würde ich in eine Log-Datei schreiben!
replace terminnr with termnr +2
dbcommit()
endif
endif
DbUnlock()
Wobei der Code so nur Sinn macht, wenn Du einen bestehenden Satz ändern willst, also nicht einen neuen mit einer neuen Nummer, die um 2 höher ist.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
wenn man den Source dazu sieht : JAxbaseklaus hat geschrieben:sollte doch - es wird eine Meldung angezeigt !?!
zum lesen wäre es aber eindeutiger wenn du den Rückgabewert von NetFlock() auch auswertest.
das ist "doppel-ge-moppelt"xbaseklaus hat geschrieben:Code: Alles auswählen
Flock() if flock() = .F.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
erstmal danke für eure Antworten !
Irgendwie komm ich trotzdem nicht weiter
Fakt ist meine Nummern werden auf der Workstation nicht replaced
Warum zeigt er die richtige nummer (1002) durch ? anzahl1->terminnr nach dem replace richtig an -> aber steht danach nicht in der Datenbank sondern weiterhin 1000 ??????????????
kann mir bitte einer erklären warum ? Eigentlich zeigt er doch an, daß er die nummer erhöht hat !
ein andere nummer wird danach auch nicht aktualisiert , obwohl er die nummern hochzählt und ine eine Datenbank richtig schreibt --> aber beim schreiben der anderen nummer in die gleiche Datenbank wie oben wird die letzte neue nummer auch nicht replaced
mfg Klaus
j
Irgendwie komm ich trotzdem nicht weiter
Fakt ist meine Nummern werden auf der Workstation nicht replaced
Code: Alles auswählen
select 2
*use anzahl1
dbskip(0)
netrlock(5) oder netflock() ... es geht bei beiden nicht
? anzahl1->terminnr (hier zeigt er zb 1000 an !!!)
termnr=anzahl1->terminnr
replace anzahl1->terminnr with anzahl1->terminnr+2
dbskip(0)
? anzahl1->terminnr (hier zeigt er mir 1002 an -> wenn ich dann aber in die Datenbank schaue steht da immer noch 1000 ???????????)
wait("")
dbcommit()
dbunlock()
kann mir bitte einer erklären warum ? Eigentlich zeigt er doch an, daß er die nummer erhöht hat !
ein andere nummer wird danach auch nicht aktualisiert , obwohl er die nummern hochzählt und ine eine Datenbank richtig schreibt --> aber beim schreiben der anderen nummer in die gleiche Datenbank wie oben wird die letzte neue nummer auch nicht replaced
mfg Klaus
j
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
hast Du schonmal zum Test ein DbClose() dahinter gemacht, statt nur dbcommit()? Dann sollte es geschrieben werden, wenn alles ok ist.
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!!
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!!
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Du meinst DBcloseArea() oder , DBclose kann ich im HELP file nicht findenManfred hat geschrieben:hast Du schonmal zum Test ein DbClose() dahinter gemacht, statt nur dbcommit()? Dann sollte es geschrieben werden, wenn alles ok ist.
mfg Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
sorry, stimmt. Dbclosearea(). Damit werden auf jeden Fall alle Werte geschrieben. Außerdem empfehle ich wärmstens immer den Alias mit anzugeben, damit man auch weiß, dass genau die Tabelle genommen wird, die man haben will. Ohne Alias wird immer der aktive Bereich genommen. ABer teste erstmal das Schließen ob es dann gespeichert wird.
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!!
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!!
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
- komnick
- UDF-Programmierer
- Beiträge: 75
- Registriert: Mi, 04. Jun 2014 9:56
- Wohnort: Berlin
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 5 Mal
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Hallo Klaus,
hier ein paar Fragen, die du dir noch durch den Kopf gehen lassen könntest:
Martin
hier ein paar Fragen, die du dir noch durch den Kopf gehen lassen könntest:
- Gibt es in der Datenbank ANZAHL1 nur einen einzigen Datensatz? Bist du sicher, dass du auf dem auch stehst? Nicht auf EOF()? Nicht auf einem Satz mit Löschmarke? Vielleicht baust du ein GOTO oder ähnliches ein, um sicher zu gehen?
- Bist du sicher, dass es die Datenbank ANZAHL1 nur einmal gibt? Dass das Programm auf derselben Datenbank arbeitet, die du anschließend prüfst? Dass nicht auf verschiedenen Datenbereichen gearbeitet wird?
- Bist du während deines Tests der einzige, der auf dem Datenbestand arbeitet? Könnte ein anderer User oder Prozess die geänderten Daten wieder mit dem alten Stand überschreiben?
- Wenn du am Ende deines Tests die Datenbank schließt und wieder öffnest, steht dann laut Programm noch immer 1002 im Feld?
Martin
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Code: Alles auswählen
select 2
*use anzahl1
dbskip(0)
netrlock(5)
? anzahl1->terminnr
termnr=anzahl1->terminnr
replace anzahl1->terminnr with anzahl1->terminnr+2
dbskip(0)
? anzahl1->terminnr
wait("")
dbcommit()
DBcloseArea() (mit dem Befehl schreibt er jetzt nach dem replace die Daten in die Datenbank!!! - ich hoffe immer !?!)
dbunlock()
auch ohne DBcloseArea() und das stimmt immer !
Mal abgesehen wird das Programm auf dem Server als erstes gestartet und der Server wird auch als Workstation verwendet und dort zähle ich auch die gleichen Nummern hoch und mache ein replace auf die gleiche Datenbank OHNE DBcloseArea() und das funktioniert auch immer aber nur auf dem Server!
Irgenwie habe ich trotzdem immer noch ein ungutes Gefühl !
Soll oder muß ich überall DBcloseArea() verwenden ?
mfg Klaus
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
@komnick:
Ja die Datenbank anzahl1 gibt es nur einmal !
Es gibt nur einen Datensatz mit meheren Nummern Feldern die mit replace hochgezählt werden !
anzahl1 wird nicht mit append erweitert !
Diese Datenbank ist trotzdem die einzige die beim replacen ärger macht !?!
mfg Klaus
Ja die Datenbank anzahl1 gibt es nur einmal !
Es gibt nur einen Datensatz mit meheren Nummern Feldern die mit replace hochgezählt werden !
anzahl1 wird nicht mit append erweitert !
Diese Datenbank ist trotzdem die einzige die beim replacen ärger macht !?!
mfg Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Hi,
das ist das, was ich ganz am Anfang erwähnt habe. Ich hatte seiner Zeit auch das Problem gehabt, dass die Nummern nicht geschrieben wurde. Sie bleiben sicherlich in irgendeinem Cache. Aber man muß nicht überall die DBF sofort schließen, obwohl das sicherlich auch philosophisch werden könnte, darüber zu diskutieren. Wichtig ist doch nur, dass Du das Problem jetzt im Griff hast und für die Zukunft Bescheid weißt, was woran liegen kann und wie man es umgeht. Wobei ein Close kein Dbcommit() vorher benötigt. das wird automatisch beim Schließen vorher gemacht.
das ist das, was ich ganz am Anfang erwähnt habe. Ich hatte seiner Zeit auch das Problem gehabt, dass die Nummern nicht geschrieben wurde. Sie bleiben sicherlich in irgendeinem Cache. Aber man muß nicht überall die DBF sofort schließen, obwohl das sicherlich auch philosophisch werden könnte, darüber zu diskutieren. Wichtig ist doch nur, dass Du das Problem jetzt im Griff hast und für die Zukunft Bescheid weißt, was woran liegen kann und wie man es umgeht. Wobei ein Close kein Dbcommit() vorher benötigt. das wird automatisch beim Schließen vorher gemacht.
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!!
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!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Statt eines commit()s ist ein DbSkip(0) effektiver, sofern ich mich an die Ausführungen von Steffen korrekt erinnere.
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.
-
- Rekursionen-Architekt
- Beiträge: 246
- Registriert: Mi, 04. Jun 2014 12:01
- Wohnort: FRANKEN
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Danke , ich werde die Datenbank anzahl1 nochmal neu erstellen!komnick hat geschrieben:Bau doch die Datenbank ANZAHL1 mal neu auf...
Verwende dazu das Programm "DBF-Viewer" , mit dem Programm gibt es hoffentlich keine Probleme !?!
mfg Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !
Martin,
ich hatte damals alles ausprobiert. DbCommit() DbCommitAll() DbSkip(0) DbSkip(1) vor und zurück. Nichts half. Es gab immer wieder Probleme. Ein Exklusives Öffnen, Schreiben und wieder Schließen hat dem Problem sofort den garaus gemacht. Es muß (in dem Fall) ja nur ab und an passieren und schon ist das System inkonsistent. Ich denke mal, irgendwas, was die Daten weiterreicht hat das Wort SCHREIBEN nicht verstanden.
ich hatte damals alles ausprobiert. DbCommit() DbCommitAll() DbSkip(0) DbSkip(1) vor und zurück. Nichts half. Es gab immer wieder Probleme. Ein Exklusives Öffnen, Schreiben und wieder Schließen hat dem Problem sofort den garaus gemacht. Es muß (in dem Fall) ja nur ab und an passieren und schon ist das System inkonsistent. Ich denke mal, irgendwas, was die Daten weiterreicht hat das Wort SCHREIBEN nicht verstanden.
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!!
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!!