Handles unter FOXDBE ermitteln

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

Moderator: Moderatoren

Antworten
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

Handles unter FOXDBE ermitteln

Beitrag von komnick »

Liebe Xbase-Gemeinde,

ich habe eine Datenbank mit dem Treiber FOXDBE geöffnet und möchte gern die Handles der beiden Dateien (DBF und FPT) wissen.

Wenn ich eine Datenbank mit dem Treiber DBFDBE geöffnet habe, dann gibt mir DBINFO(DBFDBO_DBFHANDLE) und DBINFO(DBFDBO_DBTHANDLE) das, was ich wissen möchte. Eine Konstante FOXDBO_DBFHANDLE gibt es in foxdbe.ch aber nicht.

Kennt jemand einen Weg, wie ich die Handles unter FOXDBE erfahren kann?

Liebe Grüße, bleibt gesund!

Martin
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: Handles unter FOXDBE ermitteln

Beitrag von komnick »

Gar niemand hat eine Idee? Schade. :(
Trotzdem vielen Dank an alle, die dies lasen und kurz darüber nachdachten.

Bleibt gesund!
Martin
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: Handles unter FOXDBE ermitteln

Beitrag von AUGE_OHR »

komnick hat geschrieben: Mi, 06. Jan 2021 12:27 ich habe eine Datenbank mit dem Treiber FOXDBE geöffnet und möchte gern die Handles der beiden Dateien (DBF und FPT) wissen.
unter Clipper v5.3 gab es erst FPT und Xbase++ ist nur v5.2 kompatible ...
DBINFO()

Syntax

DBINFO(<nInfoType>, [<expNewSetting>])
--> uCurrentSetting

Arguments

<nInfoType> determines the type of information, as specified by the
constants below. Note, however, that not all constants are supported
for all RDDs. These constants are defined in the Dbinfo.ch header file,
which must be included (#include) in your application.

DBI_FILEHANDLE
Integer representing the DOS file handle for this database file.

DBI_MEMOHANDLE
Integer representing the DOS file handle for the memo file associated with this database file.
gruss by OHR
Jimmy
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: Handles unter FOXDBE ermitteln

Beitrag von komnick »

unter Clipper v5.3 gab es erst FPT und Xbase++ ist nur v5.2 kompatible ...
Das klingt wie ein Argument dafür, dass Xbase keine FPT-Dateien öffnen kann. Kann es aber (mit der FOXDBE). Die Frage ist nun, gibt es - jenseits von DBINFO() - einen Weg, den Handle zu erfahren?
DBI_FILEHANDLE
Integer representing the DOS file handle for this database file.

DBI_MEMOHANDLE
Integer representing the DOS file handle for the memo file associated with this database file.
Das scheint aus der Clipper-Doku zu sein und hilft mir hier nicht weiter.

Vermutlich wolltest du mir mit deiner Rückmeldung nur sagen, dass es unter Xbase nicht geht? Tja, dachte ich mir jetzt schon. Trotzdem vielen Dank.

Bleibt gesund!

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

Re: Handles unter FOXDBE ermitteln

Beitrag von Tom »

Mmh, ich finde da auch nichts, Martin - aber sagst Du mal, nur interessehalber, wozu Du die Handles brauchst?
Herzlich,
Tom
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: Handles unter FOXDBE ermitteln

Beitrag von komnick »

Hallo Tom,

in meinem Clipper-Code gibt es an hunderten Stellen einen Befehl, der mit Hilfe des Handles eine bereits geöffnete Datenbank kopiert. Der funktioniert auch unter Xbase, dort aber nur für per DBFDBE geöffnete Datenbanken (DBF und DBT), nicht für per FOXDBE geöffnete (DBF und FTP).

Die folgenden beiden Alternativen, die hinter dem Befehl stehende Funktion zu verändern, haben beide Nachteile:
  • Wenn ich die Datenbank für das Kopieren wieder schließe, kann es sein, dass mich ein anderer User/Prozess am Wieder-Öffnen hindert, und dann muss ich an allen Programmstellen diesen Fall behandeln/abfangen, an denen der Befehl unter FOXDBE benutzt wird.
  • Wenn ich einen anderen Weg des Kopierens wähle (z.B. DbExport()), dann taugt die Kopie nicht als "Sicherung", weil es sich bei der Kopie nicht mehr um das kopierte Original, sondern um eine neu aufgebaute Datenbank handelt (die z.B. auch eine andere Größe hat).
Bleib gesund!
Martin
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Handles unter FOXDBE ermitteln

Beitrag von Wolfgang Ciriack »

Auf Betriebssystemebene kannst du auch geöffnete Datenbanken kopieren.
Viele Grüße
Wolfgang
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: Handles unter FOXDBE ermitteln

Beitrag von HaPe »

Hallo Wolfgang !
Auf Betriebssystemebene kannst du auch geöffnete Datenbanken kopieren.
Nur wenn die Datenbank/die Tabelle nicht exklusiv geöffnet ist.

Oben schrieb Martin:
... kann es sein, dass mich ein anderer User/Prozess am Wieder-Öffnen hindert, ...
Das spricht für mich, dass hier eine Tabelle exklusiv geöffnet wird :roll:
--
Hans-Peter
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: Handles unter FOXDBE ermitteln

Beitrag von AUGE_OHR »

hi
komnick hat geschrieben: Fr, 05. Feb 2021 9:11 in meinem Clipper-Code gibt es an hunderten Stellen einen Befehl, der mit Hilfe des Handles eine bereits geöffnete Datenbank kopiert. Der funktioniert auch unter Xbase, dort aber nur für per DBFDBE geöffnete Datenbanken (DBF und DBT), nicht für per FOXDBE geöffnete (DBF und FTP).
ich "sehe" noch nicht den Zusammenhang von Handle und Memo bei FOXDBE
Frage : wie sieht deine DbeSys aus :?:

wird von einer anderen App ebenfalls auch die Dateien zugegriffen :?:
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:

Re: Handles unter FOXDBE ermitteln

Beitrag von Tom »

ich "sehe" noch nicht den Zusammenhang von Handle und Memo bei FOXDBE
DBF und FOX öffnen zwei Dateien, wenn eine Datei Memofelder enthält, und beide Dateien müssen (unterschiedliche) Dateihandles haben. Das kann man auch sehr anschaulich nachvollziehen, wenn man Tools wie FileMon mitlaufen lässt.

Aber - was meinst Du genau mit dem "nicht erkennbaren Zusammenhang", Jimmy?
Herzlich,
Tom
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: Handles unter FOXDBE ermitteln

Beitrag von AUGE_OHR »

hi,
Tom hat geschrieben: Di, 09. Feb 2021 9:49 Aber - was meinst Du genau mit dem "nicht erkennbaren Zusammenhang", Jimmy?
ich meine den Zusammenhang mit Handles und Problemen bei öffnen/schliessen.

das man ein Handle benötigt ist schon klar aber "wie" soll es das Problem lösen :?:

---

gerade bei FoxDBE, wo man es "selbst" zusammen stellen muss, hab ich hier im Forum schon Sachen gesehen wie man es FALSCH macht.
Da werden Konstanten der ORDER Komponenten unter DATA zugeordnet so das dann "komische" Probleme auftauchen.

@Martin : poste doch bitte mal deine DbeSYS

IHMO wenn nicht "viele" das selbe Problem haben sollte man nachdenken ob es an "self" liegen könnte ...
gruss by OHR
Jimmy
Antworten