Seite 1 von 1
USE ...
Verfasst: Mi, 22. Jun 2016 13:36
von XBaseAzubi
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
Re: USE ...
Verfasst: Mi, 22. Jun 2016 13:45
von Manfred
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?
Re: USE ...
Verfasst: Mi, 22. Jun 2016 14:15
von brandelh
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())
Re: USE ...
Verfasst: Mi, 22. Jun 2016 14:15
von Tom
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.
Re: USE ...
Verfasst: Mi, 22. Jun 2016 19:27
von AUGE_OHR
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 )