Feld in Datenbank (indirekt / dbf) vorhanden? [Erledigt]

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

Moderator: Moderatoren

Antworten
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 270
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Feld in Datenbank (indirekt / dbf) vorhanden? [Erledigt]

Beitrag von adrian »

Hallo zusammen

Sicher ganz eine einfach Frage, aber ich kriege es einfach nicht hin.

Code: Alles auswählen

	IF oSelf:nMode = 3 .OR. oSelf:nMode = 4
		nDBFKto	:= oSelf:nDBFKto
	ELSE
		nDBFKto	:= oSelf:oKONTEN00:dbSelect()
	ENDIF
Nun sollte ich prüfen, ob in der entsprechenden Datenbank, das Feld Runden besteht, da dies ein neues Feld ist, und es bis 20 Jahre alte Datenbanken hat.

Mit IsFieldVar((nDBFKto)->Runden) geht es auf jeden Fall nicht, da kommt immer .F. zurück.
Zuletzt geändert von adrian am Mi, 08. Mai 2024 7:59, insgesamt 3-mal geändert.
es Grüessli

Adrian
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9387
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 104 Mal
Danksagung erhalten: 362 Mal
Kontaktdaten:

Re: Feld in Datenbank (indirekt / dbf) vorhanden?

Beitrag von Tom »

Ja, merkwürdigerweise geht IsFieldVar nicht mit Alias-Operator, aber das hier geht:

Code: Alles auswählen

IF (nDbfKto)->(FieldPos("Runden")) > 0 // vorhanden 
  ...
ENDIF
Edit. Quatsch. IsFieldVar geht so auch:

Code: Alles auswählen

IF (nDbfKto)->(IsFieldVar("Runden")) // vorhanden
  ...
ENDIF
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9387
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 104 Mal
Danksagung erhalten: 362 Mal
Kontaktdaten:

Re: Feld in Datenbank (indirekt / dbf) vorhanden?

Beitrag von Tom »

Eigentlich gilt das für alle Feldfunktionen, also auch "FieldGet" usw., sowie für die meisten Tabellenfunktionen. Man stellt den Alias voran:

Code: Alles auswählen

(cMyAlias)->(Funktion())
(nMyAlias)->(Funktion())
Wichtig ist, dass die Funktion geklammert wird. Wenn der Alias eine Zeichenkette ist, kann er direkt angegeben werden, ohne Klammern (IF kun->(IsFieldVar('name'))).

Das bewirkt, dass ein implizites DbSelectArea stattfindet, und am Ende der Ausführung der Funktion wird wieder in die vorherige Workarea zurückgewechselt.
Herzlich,
Tom
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 270
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Feld in Datenbank (indirekt / dbf) vorhanden?

Beitrag von adrian »

Coll, danke Dir. So einfach. Läuft einwandfrei.
es Grüessli

Adrian
Antworten