HILFE: Schreiben von Daten in die DBF über Netzwerk !

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

Moderator: Moderatoren

Benutzeravatar
Jan
Marvin
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 !

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

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 :banghead:

mfg Klaus
Benutzeravatar
satmax
1000 working lines a day
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 !

Beitrag von satmax »

Ich denke gleich wie bei der Pro Version: Extras / Konfiguration (F8): PC Sicherheit / System-Scanner / Suche / Ausnahmen
Gruß
Markus
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

@ satmax: Danke
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

Leider habe ich immer noch das Problem, daß er meine internen Nummern nicht aktualisiert

Code: Alles auswählen

replace nummer with nummer +1
ohne einen Fehler !

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

*-------------šberprfung ob erh”ht----------
if anzahl1->terminnr = termnr
	replace terminnr with terminnr+2
endif
dbcommit()
so im andern Source Code wo es immer funktioniert habe ich es so geschrieben:

Code: Alles auswählen

...
replace anzahl1->terminnr with anzahl1->terminnr+2
...
also jeweils "anzahl1->"

sollte das nicht egal sein, da ich ja mit "select 2" den definierten Arbeitsbereich ausgewählt habe :banghead: :banghead: :banghead:

mfg Klaus
Benutzeravatar
Martin Altmann
Foren-Administrator
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 !

Beitrag von Martin Altmann »

Mache nach dem replace einfach ein dbskip(0).

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.
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

@Martin: du meinst nach replace...

mfg Klaus
Benutzeravatar
AUGE_OHR
Marvin
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 !

Beitrag von AUGE_OHR »

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 ...
es mag ja sein das du es in der Function überprüfst aber du gibt den Wert ja nicht zurück !
xbaseklaus hat geschrieben:neterr() funktioniert leider nicht bei mir ... warum auch immer !?!
das gibt es nicht !!!
xbaseklaus hat geschrieben:

Code: Alles auswählen

replace nummer with nummer +1
es ist nicht sehr schlau eine Read/Write Aktion in einem Schritt erledigen zu wollen.

Code: Alles auswählen

nNummer := FIELD->nummer
nNummer++
IF RLOCK()
    REPLACE FIELD->nummer WITH nNummer
    UNLOCK
    COMMIT
ENDIF
xbaseklaus hat geschrieben:

Code: Alles auswählen

also jeweils "anzahl1->" 
dann überprüfe doch mal den ALIAS()
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
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 !

Beitrag von Martin Altmann »

xbaseklaus hat geschrieben:@Martin: du meinst nach replace...
Ja - aber die Autokorrektur auf dem iPhone meinte was anderes :lol:
Habe es jetzt oben korrigiert!
: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.
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

@ Jimmy

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
sollte doch - es wird eine Meldung angezeigt !?!

mfg Klaus
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
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 !

Beitrag von Werner_Bayern »

Code: Alles auswählen

select 2
netflock(5)
termnr=anzahl1->terminnr

replace terminnr with terminnr+2

*-------------šberprfung ob erh”ht----------
if anzahl1->terminnr = termnr
	replace terminnr with terminnr+2
endif
dbcommit()
Zeile 3: Bist Du da überhaupt auf der höchsten (letzten?) Nummer? Stimmt der Index?
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()
   *-------------šberprfung 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()
So würde ich das machen...

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!>
Benutzeravatar
AUGE_OHR
Marvin
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 !

Beitrag von AUGE_OHR »

xbaseklaus hat geschrieben:sollte doch - es wird eine Meldung angezeigt !?!
wenn man den Source dazu sieht : JA
zum lesen wäre es aber eindeutiger wenn du den Rückgabewert von NetFlock() auch auswertest.
xbaseklaus hat geschrieben:

Code: Alles auswählen

      Flock()
      if flock() = .F.
das ist "doppel-ge-moppelt"
gruss by OHR
Jimmy
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

erstmal danke für eure Antworten !

Irgendwie komm ich trotzdem nicht weiter :banghead:

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()
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
Benutzeravatar
Manfred
Foren-Administrator
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 !

Beitrag von Manfred »

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!!
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

Manfred hat geschrieben:hast Du schonmal zum Test ein DbClose() dahinter gemacht, statt nur dbcommit()? Dann sollte es geschrieben werden, wenn alles ok ist.
Du meinst DBcloseArea() oder , DBclose kann ich im HELP file nicht finden

mfg Klaus
Benutzeravatar
Manfred
Foren-Administrator
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 !

Beitrag von Manfred »

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!!
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

werde es testen und berichten - Danke
Benutzeravatar
komnick
UDF-Programmierer
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 !

Beitrag von komnick »

Hallo Klaus,
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?
Gruß
Martin
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

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()
Was ich nicht verstehe ich schreibe von der Workstation auch Lagerbewegungen " replace artikelmenge with artikelmenge - verkaufsmenge"
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
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

@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
Benutzeravatar
komnick
UDF-Programmierer
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 !

Beitrag von komnick »

Bau doch die Datenbank ANZAHL1 mal neu auf...
Benutzeravatar
Manfred
Foren-Administrator
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 !

Beitrag von Manfred »

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.
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: 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 !

Beitrag von Martin Altmann »

Statt eines commit()s ist ein DbSkip(0) effektiver, sofern ich mich an die Ausführungen von Steffen korrekt erinnere.

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.
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

Re: HILFE: Schreiben von Daten in die DBF über Netzwerk !

Beitrag von xbaseklaus »

komnick hat geschrieben:Bau doch die Datenbank ANZAHL1 mal neu auf...
Danke , ich werde die Datenbank anzahl1 nochmal neu erstellen!

Verwende dazu das Programm "DBF-Viewer" , mit dem Programm gibt es hoffentlich keine Probleme !?!

mfg Klaus
Benutzeravatar
Manfred
Foren-Administrator
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 !

Beitrag von Manfred »

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