Hinweise zum neuen Forum
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

USE ...

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
XBaseAzubi
Rookie
Rookie
Beiträge: 10
Registriert: Fr, 13. Mai 2016 8:14
Wohnort: Tattendorf/Österreich

USE ...

Beitrag von XBaseAzubi » Mi, 22. Jun 2016 13:36

Hallo!

Am Beginn des Programmes steht:

Code: Alles auswählen

...
USE Kunden new Alias sCustomer
...
CLASS Kunden
   
   EXPORTED:
   VAR nKNummer, cKName, cKAdresse, cKPLZ, cKOrt, lAktiv

   method KRead
   method KShow
   method RNew
   method RWrite
   method ChangeRec
ENDCLASS
...

//ABER: Hier wird´s nicht gefunden:
method Kunden:KRead
   FIELD KNUMMER, KNAME, KADRESSE, KPLZ, KORT, AKTIV IN sCustomer
   
   ::nKNummer := sCustomer->KNUMMER
   ::cKName := sCustomer->KNAME
   ::cKAdresse := sCustomer->KADRESSE
   ::cKPLZ := sCustomer->KPLZ
   ::cKOrt := sCustomer->KORT
   ::lAktiv := sCustomer->AKTIV
   USE
return
...
In den Hilfedateien finde ich nicht warum.

FG
Martin

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 16706
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel
Kontaktdaten:

Re: USE ...

Beitrag von Manfred » Mi, 22. Jun 2016 13:45

Hi Martin,
erstmal ein kleiner Tipp, wenn Du mit Alias arbeitest, brauchst Du keine Field Anweisung vorher.
Gibt es den eine Fehlermeldung? Woher weißt Du das es nicht gefunden wird? Hast Du mal im Debugger nachgeschaut, ob die DBF an der Stelle noch offen ist?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: USE ...

Beitrag von brandelh » Mi, 22. Jun 2016 14:15

Ist es Absicht, dass nach jedem KRead() die Datei geschlossen wird ?

Das USE ohne Argument schließt nämlich die Datei ...

und zwar die aktuell selektierte, das muss nicht unbedingt die sCustomer sein :!:

Außerdem schaffst du in der Kunden Klasse Abhängigkeiten, die spätestens in einer MDI Anwendung übel aufstoßen werden.
Dein FIXER Alias außen und mögliche mehrfache Aufrufe einer GUI Anwendung wird zu Namens Konflikten führen.

Ich nutze statt dem, ALIAS einen dynamischen Selectbereich mit Variable (als Instanz-Var oder per Parameter):

Code: Alles auswählen

local nKunde
USE Kunden new // neterr() sollte immer geprüft werden !
if ! neterr()
   nKunde := select()
   *** ab hier alle Zugriffe über diese Variable (nKunde)->(...) beispiel ! (nKunde)->(eof())
   
   oKunde := Kunden():new()
   oKunde:nDB := nKunde
   ...
   

CLASS Kunden
   
   EXPORTED:
   VAR nKNummer, cKName, cKAdresse, cKPLZ, cKOrt, lAktiv, nDB // nDB ist kurz, kann aber (fast) jeden Namen annehmen

   method KRead
   method KShow
   method RNew
   method RWrite
   method ChangeRec
ENDCLASS
method Kunden:KRead
   FIELD KNUMMER, KNAME, KADRESSE, KPLZ, KORT, AKTIV IN sCustomer
   
   ::nKNummer := (::nDB)->KNUMMER
   ::cKName :=  (::nDB)->KNAME

*** wirklich schließen, falls ja 

   (::nDB)->(dbCloseArea())
   
Gruß
Hubert

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6732
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: USE ...

Beitrag von Tom » Mi, 22. Jun 2016 14:15

Code: Alles auswählen

::lAktiv := sCustomer->AKTIV
   USE
Dieses einsame USE am Ende der Methode schließt alle Dateien in der aktuellen Workarea. Wenn "sCustomer" selektiert ist, bevor die Methode aufgerufen wird, ist die Tabelle nach dem Aufruf wech.
Herzlich,
Tom

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10362
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: USE ...

Beitrag von AUGE_OHR » Mi, 22. Jun 2016 19:27

hi,
XBaseAzubi hat geschrieben:Am Beginn des Programmes steht:
du hast ja schon diverse Tips bekommen.

hier meiner : benutze den Formdesigner ( XppFD.EXE )
er wird dir die richtige Syntax generieren ( Class Code )
gruss by OHR
Jimmy

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast