Exclusive Zugriff für Dbpack
Moderator: Moderatoren
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Exclusive Zugriff für Dbpack
Hallo zusammen,
ich möchte beim Programmstart alle Datenbanken packen. Deshalb lade ich alle dbf in ein Array und dieses durchlaufe ich dann. Es läuft auch, aber irgendwann knallt es dann immer bei der gleichen datenbank.
so sieht mein Code aus:
aDb:=Directory("*.dbf")
For i = 1 to Len(aDb)
cDb:=aDb[1]
If Netz_Use(cDb,.t.,cDB+"im Zugiff")
(cDB)->(DbPack())
Close (cDb)
EndIf
Next i
beim Dbpack() erhalte ich die Meldung, daß die Datenbank ungültig ist.
Dies müßte doch gehen, ohne die Datenbanken direkt anzusprechen.
Die Function Netz_Use funkt. in anderen Programmteilen problemlos.
Auch mit Alias kommt die gleiche Meldung.
ich möchte beim Programmstart alle Datenbanken packen. Deshalb lade ich alle dbf in ein Array und dieses durchlaufe ich dann. Es läuft auch, aber irgendwann knallt es dann immer bei der gleichen datenbank.
so sieht mein Code aus:
aDb:=Directory("*.dbf")
For i = 1 to Len(aDb)
cDb:=aDb[1]
If Netz_Use(cDb,.t.,cDB+"im Zugiff")
(cDB)->(DbPack())
Close (cDb)
EndIf
Next i
beim Dbpack() erhalte ich die Meldung, daß die Datenbank ungültig ist.
Dies müßte doch gehen, ohne die Datenbanken direkt anzusprechen.
Die Function Netz_Use funkt. in anderen Programmteilen problemlos.
Auch mit Alias kommt die gleiche Meldung.
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Exclusive Zugriff für Dbpack
hi,
a.) Umlaute in DBF Namen ? (wenn ja ConvToOemCP() )
b.) NTX oder CDX ? (wenn CDX -> DbeSys.PRG ?
c.) ist die DBF wirklich ok ? wenn Memo auch ok ?
gruss by OHR
Jimmy
Rolf Ramacher hat geschrieben: aDb:=Directory("*.dbf")
For i = 1 to Len(aDb)
cDb:=aDb[1]
If Netz_Use(cDb,.t.,cDB+"im Zugiff")
(cDB)->(DbPack())
Close (cDb)
EndIf
Next i
beim Dbpack() erhalte ich die Meldung, daß die Datenbank ungültig ist.
Dies müßte doch gehen, ohne die Datenbanken direkt anzusprechen.
a.) Umlaute in DBF Namen ? (wenn ja ConvToOemCP() )
b.) NTX oder CDX ? (wenn CDX -> DbeSys.PRG ?
c.) ist die DBF wirklich ok ? wenn Memo auch ok ?
gruss by OHR
Jimmy
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Hi Jimmy,
danke für deine schnelle Antwort. Ich habe es gefunden, es lag am anhang .dbf. Ohne ".dbf" läuft es. Aber nächstes Problem.
Nachdem etliche Datenbanken erfolgreich gepackt wurden erhalte ich die Meldung Kein Platz im Workspace für diese Workarea .
Gibt es eine Begrenzung ? Die Länge der aDb ist 332 Einträge.
danke für deine schnelle Antwort. Ich habe es gefunden, es lag am anhang .dbf. Ohne ".dbf" läuft es. Aber nächstes Problem.
Nachdem etliche Datenbanken erfolgreich gepackt wurden erhalte ich die Meldung Kein Platz im Workspace für diese Workarea .
Gibt es eine Begrenzung ? Die Länge der aDb ist 332 Einträge.
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Martin Altmann
- Foren-Administrator
- Beiträge: 16545
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Rolf,
Du öffnest 332 Datenbanken? Wie geschieht das in Deiner Funktion? Wird immer mit NEW geöffnet? Ist dann vielleicht der Workarea-Counter zu hoch?
Viele Grüße,
Martin
Du öffnest 332 Datenbanken? Wie geschieht das in Deiner Funktion? Wird immer mit NEW geöffnet? Ist dann vielleicht der Workarea-Counter zu hoch?
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.
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Exclusive Zugriff für Dbpack
hi,
wie Martin auch schon fragte ob du in deiner Netz_Use() ein NEW benutzt ?
kannst ja einfach mal ein
um zu prüfen wie viele er in seiner List hat.
unabhängig davon würde ich ihm in der FOR/NEXT ein wenig SLEEP()
geben damit er den "Cache" auch wegschreiben kann.
oder wie wäre es mit Index aufbauen nach dem PACK ?
gruss by OHR
Jimmy
müsste doch sein ?Rolf Ramacher hat geschrieben: Nachdem etliche Datenbanken erfolgreich gepackt wurden erhalte ich
die Meldung Kein Platz im Workspace für diese Workarea .
Die Länge der aDb ist 332 EinträgeCode: Alles auswählen
(cDB)->(DbPack()) Close (cDb)
Code: Alles auswählen
(cDB)->( DbClose() )
kannst ja einfach mal ein
Code: Alles auswählen
IF USED()
? LEN( WorkSpaceList() )
ENDIF
unabhängig davon würde ich ihm in der FOR/NEXT ein wenig SLEEP()
geben damit er den "Cache" auch wegschreiben kann.
oder wie wäre es mit Index aufbauen nach dem PACK ?
gruss by OHR
Jimmy
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Hallo Martin/Jimmy
@Martin - Nein ich öffne nicht 332 Datenbanken gleichzeitig, sondern das Array enthält 332 Datenbanken.
also mit sleep(001) brachte den gleichen Fehler. Der Hinweis von Jimmy
Close (cDB) brachte ebenfalls den gleichen Fehler.
Die Datenbank heißt im Orginal 0204261.dbf - Ich habe diese mal als
aaa.dbf umbenannt . dann hat es funktioniert. Darf eine Datenbank nicht mit nummern beginnen ??
@Martin - Nein ich öffne nicht 332 Datenbanken gleichzeitig, sondern das Array enthält 332 Datenbanken.
also mit sleep(001) brachte den gleichen Fehler. Der Hinweis von Jimmy
Close (cDB) brachte ebenfalls den gleichen Fehler.
Die Datenbank heißt im Orginal 0204261.dbf - Ich habe diese mal als
aaa.dbf umbenannt . dann hat es funktioniert. Darf eine Datenbank nicht mit nummern beginnen ??
- Martin Altmann
- Foren-Administrator
- Beiträge: 16545
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Rolf,
dann ist das klar!
Warum? Nun, ganz einfach - der Datenbankname ist der ALIAS() - und ein ALIAS() als so hohe Nummer kann Probleme geben (->Workarea!)
Ergo: Die Datei darf schon eine Nummer als Dateinamen haben - nur nicht der entsprechende Alias()!
Viele Grüße,
Martin
dann ist das klar!
Warum? Nun, ganz einfach - der Datenbankname ist der ALIAS() - und ein ALIAS() als so hohe Nummer kann Probleme geben (->Workarea!)
Ergo: Die Datei darf schon eine Nummer als Dateinamen haben - nur nicht der entsprechende Alias()!
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.
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Hallo,
früher bei DOS (eventuell auch Win98) hieß es einmal, dass eine Datei mit einem Buchstaben beginnen muss, das ist heute nicht mehr so, aber eventuell kommt da ein Übersetzungsproblem ins Spiel.
Wenn der Compiler den Dateinamen als Alias nimmt und dieser nur aus Ziffern besteht, könnte bei (cAlias) der Alias 999999 intern mit dem numerischen Selectbereich 3-> ... verwechselt werden, da ja beides erlaubt ist, aber einen Selectbereich mit 9989989 ist jenseits aller Grenzen.
Nur so als Vermutung, passen würde dann die Fehlermeldung.
früher bei DOS (eventuell auch Win98) hieß es einmal, dass eine Datei mit einem Buchstaben beginnen muss, das ist heute nicht mehr so, aber eventuell kommt da ein Übersetzungsproblem ins Spiel.
Wenn der Compiler den Dateinamen als Alias nimmt und dieser nur aus Ziffern besteht, könnte bei (cAlias) der Alias 999999 intern mit dem numerischen Selectbereich 3-> ... verwechselt werden, da ja beides erlaubt ist, aber einen Selectbereich mit 9989989 ist jenseits aller Grenzen.
Nur so als Vermutung, passen würde dann die Fehlermeldung.
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16545
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Hubert,
das tun sie - bin da früher nämlich auch oft genug drüber gestolpert...
Viele Grüße,
Martin
das tun sie - bin da früher nämlich auch oft genug drüber gestolpert...
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.
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Wie wäre es denn, wenn man diese Datei dann öffnet als Dann könnte man den Alias aus dem Inhalt des Arrays und dem vorgestellten Buchstaben einfach zusammenstellen, und es wäre keine Nummer mehr?
Jan
Code: Alles auswählen
Use 0204261 Alias A0204261 new Shared
Jan
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Hi,
genau so sollte es gehen und wenn wir gleich dabei sind.
Hast du schon mal versucht 'DBF1234567890' mit DBU zu öffnen ?
Das Öffnen wäre kein Problem, da ja kurze Dateinamen gebildet werden, aber leider 'DBF123~1' ist das ~ Zeichen wohl im Namen, aber nicht im Alias erlaubt, somit würde ich eine Funktion vorschlagen, die beides erledigt:
(... nicht getestet, einfach so aus dem Kopf... nicht getestet, einfach so aus dem Kopf, also sind Fehlermeldungen möglich)
genau so sollte es gehen und wenn wir gleich dabei sind.
Hast du schon mal versucht 'DBF1234567890' mit DBU zu öffnen ?
Das Öffnen wäre kein Problem, da ja kurze Dateinamen gebildet werden, aber leider 'DBF123~1' ist das ~ Zeichen wohl im Namen, aber nicht im Alias erlaubt, somit würde ich eine Funktion vorschlagen, die beides erledigt:
Code: Alles auswählen
function MyAlias(cDBF)
local cAlias := "A"+cDBF
cAlias := StrTran(cAlias,"~","_")
return cAlias
USE (cDBF) ALIAS (MyAlias(cDBF)) ...
Gruß
Hubert
Hubert