Definitive Schließung einer Datei über ALIAS

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

Moderator: Moderatoren

Antworten
Werner
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Sa, 18. Mär 2006 16:08

Definitive Schließung einer Datei über ALIAS

Beitrag von Werner »

Hi!

Mir hat 'mal ein Kollege aus dem Forum einen Tipp gegeben, wie ich eine Datei (im Netz bzw. auf einem Server) definitiv schließen kann, so dass
ein anderer Kunden diese wieder öffnen kann. Der Code so wie folgt aus:

if file("&sv_bmerk")
use &sv_bmerk ALIAS alia100
close alia100
endif

Dies funktioniert eigentlich ganz gut! Jetzt meine Frage dazu: Wenn ich dieses Verfahren öfters anwende, und zwar für die gleiche Datei aber mit einem
anderen ALIAS-Namen (z.B. alia200) , kann dies dann zu Fehlern führen? Manchmal bekomme ich folgende Fehlermeldung:

Datenbank-ALIAS existiert nicht/ist ungültig

Gruß Werner
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: Definitive Schließung einer Datei über ALIAS

Beitrag von Tom »

Hallo, Werner.

"Datenbank-Alias existiert nicht/ist ungültig" bedeutet, dass unter diesem Alias keine Tabelle geöffnet ist. Entweder ist sie schon zu, oder sie ist nie richtig geöffnet worden.

Code: Alles auswählen

IF FILE(sv_bemerk) // - wenn "sv_bemerk" eine Variable ist, kann "if file("&sv_bmerk")" eigentlich nicht funktionieren
  USE (sv_bemerk) ALIAS alia100 // Klammern sind dem Makro-Operator hier vorzuziehen - use &sv_bmerk ALIAS alia100
  IF NetErr() // 
    MsgBox("Tabelle konnte nicht geöffnet werden!")
    ELSE
   CLOSE alia100
ENDIF
Falls das Close sehr viel später kommt, was wahrscheinlich ist, und die Möglichkeit besteht, dass die Tabelle schon anderswo geschlossen wurde, geht auch so etwas:

Code: Alles auswählen

IF USED("alia100")
  CLOSE alia100
ENDIF
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: Definitive Schließung einer Datei über ALIAS

Beitrag von AUGE_OHR »

mit WorkSpaceList() bekommt man ein Array mit Alias-Namen.

Code: Alles auswählen

   aWork := WorkSpaceList()
   IF ASCAN(aWork, {|x| x = MyAlias }) > 0
      CLOSE (MyAlias)
   ENDIF
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: Definitive Schließung einer Datei über ALIAS

Beitrag von Tom »

Used() macht das gleiche.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Definitive Schließung einer Datei über ALIAS

Beitrag von Jan »

Könnte auch passieren, wenn man die dbf mehrfach geöffnet hat. Dann hat die Folgeinstanz nicht mehr den dbf-Namen als Alias. Sondern Alias + was durchnummeriertes. Entweder man gibt dem beim Öffnen einen speziellen Alias mit, oder fragt den Alias nach dem Öffnen ab und merkt sich den für das Schließen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten