Alias() Problem.....

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

Moderator: Moderatoren

Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Alias() Problem.....

Beitrag von mini990 »

Hallo,
ich habe bei einem Programm folgendes Problem:

DBSelectArea( "DATEINAME" )
--> ergibt Fehlermeldung
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: DATEINAME
oError:canDefault : Y
oError:canRetry : N
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Unknown/Invalid symbol for alias
oError:filename :
oError:genCode : 66
oError:operation : dbSelectArea
oError:osCode : 0
oError:severity : 2
oError:subCode : 8022
oError:subSystem : BASE
oError:thread : 3
oError:tries : 0
------------------------------------------------------------------------------

Die Datei ist aber geöffnet.
Wähle ich die Datei mit Select ( nDateinummer ) kann ich mit Alias() den Namen abfragen

nutze ich den Befehl DBSelectArea( nDateinummer ) funktioniert alles.

Kennt jemand das Problem????

Gruß Stefan
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: Alias() Problem.....

Beitrag von Tom »

Wenn "Dateiname" eine Variable ist, die den Alias enthält, wäre DbSelectArea(Dateiname) korrekt. Wenn die Datei tatsächlich "Dateiname" heißt, wäre Deine Nomenklatur richtig. Aber so heißt sie nicht, oder?
Herzlich,
Tom
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Alias() Problem.....

Beitrag von mini990 »

Dateiname ist nur ein Beispiel.
use Dateiname
? Alias() --> Dateiname
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Alias() Problem.....

Beitrag von ramses »

Welche DBE verwendest du? Bei der ADSDBE sind als Dateiname max. 8 Zeichen erlaubt.... Wie ist dein Dateiname bezw. Alias, ist eine Ziffer am Anfang?

Gruss Carlo
Valar Morghulis

Gruss Carlo
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: Alias() Problem.....

Beitrag von Tom »

Was macht die Befehlsvariante (SELECT DATEINAME)? Was ist der Alias()-Rückgabewert, wenn Du mit der Nummer selektiert hast? Funktioniert sowas

Code: Alles auswählen

? dateiname->(FieldGet(1))
Herzlich,
Tom
DelUser01

Re: Alias() Problem.....

Beitrag von DelUser01 »

Hallo Stefan
mini990 hat geschrieben: Fr, 24. Nov 2017 12:31DBSelectArea( "DATEINAME" )
...
Wähle ich die Datei mit Select ( nDateinummer ) kann ich mit Alias() den Namen abfragen
nutze ich den Befehl DBSelectArea( nDateinummer ) funktioniert alles.
Wie Tom schon geschrieben hat musst Du den von Xbase++ vergebenen Alias herausfinden.

Deine Angabe "nDateinummer" ist eigentlich nicht korrekt, es ist die Area-Nummer, eine Dateinummer gibt es nicht.

Du vermutlich so vorgegangen:

Code: Alles auswählen

cDateiname = "C:\meinVerzeichnis\meineDatenbank.dbf"
select( 0 )
use ( cDateiname )
nDateinummer := Select()
Dann Prüfe mit
? Alias()
wie der richtige Alias ist den Du dann verwenden kannst
cDateinummer := Alias()
DbSelectArea( cDateinummer )
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Alias() Problem.....

Beitrag von georg »

Hallo, Stefan -


passiert der Abbruch in einem Thread, d.h. öffnest Du die Datei in einem Thread, startest dann einen anderen und versuchst, auf die offene Datei zuzugreifen?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
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: Alias() Problem.....

Beitrag von Tom »

@Georg: Dann würde auch das DbSelectArea() mit einem numerischen Wert scheitern. Vermutlich hat die Engine einen anderen alphanumerischen Alias als den erwarteten vergeben. Das passiert, wenn man dieselbe Datei mehrfach öffnet, ohne einen eigenen Alias anzugeben.
Herzlich,
Tom
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Alias() Problem.....

Beitrag von georg »

Hallo, Tom -


grundsätzlich betrachte ich alle in Frage kommenden Möglichkeiten, und Stefan hat nicht geschrieben, dass er an der gleichen Stelle im Code den Test gemacht hat.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
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: Alias() Problem.....

Beitrag von Tom »

Anyway. Alias() und WorkspaceList() sind die Funktionen, die Stefan zeigen werden, was sein Fehler ist. Ich vermute ein mehrfaches Öffnen derselben Tabelle - aber die Version, die den erwarteten Alias hatte, ist zu.
Herzlich,
Tom
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Alias() Problem.....

Beitrag von mini990 »

Der Alias ist < 8 Zeichen
Die Datei ist definitv geöffnet

Alias() ---> Rückgabe Name der Datei ( "XYZ" )

Select XYZ --> Fehler
DBselectarea( "XYZ" ) --> Fehler
nDatei := Select()
Select ( nDatei ) --> funktioniert
DBSelectArea( nDatei ) --> funktioniert

Aber:
Ich öffne meine Dateien in einem Thread und starte von dort aus andere Threads bei denen ich auf diese Dateien zugreife.

Gruß Stefan
PS: Ich teste momentan mit der 2.0 da der Umstieg demnächst geplant ist...
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Alias() Problem.....

Beitrag von mini990 »

Dateisystem ist dbfntx

Tom...
wo soll da ein Fehler sein?

Vereinfacht....
Use Datei shared new alias XYZ
Select XYZ oder DBselectArea( "XYZ" )

Das ist Standard seit ich damals mit Clipper angefangen habe (Version Winter 85)
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: Alias() Problem.....

Beitrag von Jan »

Stgefan,

und was passiert bei

Code: Alles auswählen

LOCAL cAlias := Alias()
DbSelectArea(cAlias)
?

Ich tippe darauf, das Tom Recht hat.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Alias() Problem.....

Beitrag von AUGE_OHR »

mini990 hat geschrieben: Fr, 24. Nov 2017 19:07 Aber:
Ich öffne meine Dateien in einem Thread und starte von dort aus andere Threads bei denen ich auf diese Dateien zugreife.
jeder Thread hat seine eigene Workspacelist() und da kommt man "so" nicht einfach ran [-X
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Alias() Problem.....

Beitrag von Martin Altmann »

Richtig! Da musst Du mit dem Zerospace arbeiten - schau Dir mal DbRelease() und DbRequest() an.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Alias() Problem.....

Beitrag von mini990 »

Sorry... die Bezeichnung Thread stimmt ja net...

Ablauf ist rudimentär so:

Code: Alles auswählen

Procedure main()

OpenDat()
TueWas()

Return

Function Opendat()
use datei1 shared new
use datei2 shared new
Return
Function Tuewas()
Select.....

Return
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Alias() Problem.....

Beitrag von Martin Altmann »

Und? Hast Du da zwei Dateien, die in den ersten acht Zeichen gleich heißen?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Alias() Problem.....

Beitrag von mini990 »

Nein Martin,
das hat schon zu Clipperzeiten nicht funktioniert....
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Alias() Problem.....

Beitrag von Martin Altmann »

Das ist richtig - aber es könnte ja sein, dass Du jetzt eine Art Mandantenfähigkeit dazugenommen hast und die selben Datei(namen) in verschiedenen Verzeichnissen nutzt.
Wenn Du dann Dateien aus verschiedenen Verzeichnissen öffnen willst...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Alias() Problem.....

Beitrag von UliTs »

Jan hat geschrieben: Fr, 24. Nov 2017 19:17 Stefan,
und was passiert bei

Code: Alles auswählen

LOCAL cAlias := Alias()
DbSelectArea(cAlias)
?
...
Stefan, probiere doch bitte Jan's Vorschlag aus. Mich interessiert sehr, ob das funktioniert.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Alias() Problem.....

Beitrag von mini990 »

Ich schmeiss jetzt das Zeug aus dem Fenster......

Code in diesem Bereich NICHT verändert !
Neu compiliert
und es geht jetzt!!!!!!

Das sind die Momente wo man sich fragt........

Gruß Stefan
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Alias() Problem.....

Beitrag von mini990 »

...und weiter geht es:

erneut compiliert und der Fehler tritt wieder auf......

uli:

Code: Alles auswählen

LOCAL cAlias := Alias()
DbSelectArea(cAlias)
geht auch nicht!

Habe das nun temporär so gelöst:

Code: Alles auswählen

for nCount = 1 to 20
select( nCount)
		If UPPER( Alias() ) = "Datei1"
				nDatei := nCount
				Exit
		Endif
next nCount
If nDatei > 0
		Select( nDatei )
Else
		RETURN .F.
Endif
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Alias() Problem.....

Beitrag von Werner_Bayern »

Servus Stefan,

2 Gedanken dazu:
  • Kannst Du das Problem - ähnlich Deinem Beispiel - in einem extra Testprogramm nachvollziehen?
  • Kann es sein, dass der Dateiname - aus irgendwelchen Gründen auch immer - ein (unerlaubtes) Sonderzeichen hat, das nicht sichtbar ist?
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Alias() Problem.....

Beitrag von Tom »

Oh je.

Alias() gibt Dir den (alphanumerischen) Alias der aktuell selektierten Tabelle:

Code: Alles auswählen

USE KUNDEN NEW
? Alias() // Antwort: "KUNDEN"
USE PRODUKTE NEW
? Alias() // Antwort: "PRODUKTE"
SELECT KUNDEN
? Alias() // Antwort: "KUNDEN"
DbSelectArea("PRODUKTE")
? Alias() // Antwort: "PRODUKTE"
WorkSpaceList() liefert Dir ein eindimensionales Array mit allen Aliasen:

Code: Alles auswählen

? WorkSpaceList() // Antwort: {"KUNDEN","PRODUKTE"}
Du kannst Aliase auch selbst wählen:

Code: Alles auswählen

USE KUNDEN ALIAS KD NEW
? Alias() // Antwort: "KD"
Außerdem sehr hilfreich ist die Funktion DbInfo(). Die liefert auf Wunsch z.B. den vollständigen Dateinamen der aktuell selektierten Tabelle, aber u.a. auch ihren Alias.

Schlechter Code wird übrigens dadurch keinen Deut besser, dass man ihn in Funktionen auslagert. :wink:

Das hier:

Code: Alles auswählen

If UPPER( Alias() ) = "Datei1"
ist nie wahr.
Zuletzt geändert von Tom am Sa, 25. Nov 2017 12:55, insgesamt 1-mal geändert.
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: Alias() Problem.....

Beitrag von Jan »

mini990 hat geschrieben: Sa, 25. Nov 2017 10:28

Code: Alles auswählen

LOCAL cAlias := Alias()
DbSelectArea(cAlias)
geht auch nicht!
Stefan,

WENN da eine dbf offen ist KANN das nicht sein! Schau DIr im Debugger mal an, welchen Wert cAlias hat nach der Zuweisung. Entweder da steht der Alias der gerade aktiven dbf drin, oder das ist ein Leerstring - dann ist gar keine dbf offen.

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