Alias() Problem.....
Moderator: Moderatoren
- mini990
- 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.....
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
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
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Alias() Problem.....
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
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Alias() Problem.....
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
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Alias() Problem.....
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
Tom
Re: Alias() Problem.....
Hallo Stefan
Deine Angabe "nDateinummer" ist eigentlich nicht korrekt, es ist die Area-Nummer, eine Dateinummer gibt es nicht.
Du vermutlich so vorgegangen:
Dann Prüfe mit
? Alias()
wie der richtige Alias ist den Du dann verwenden kannst
cDateinummer := Alias()
DbSelectArea( cDateinummer )
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()
? Alias()
wie der richtige Alias ist den Du dann verwenden kannst
cDateinummer := Alias()
DbSelectArea( cDateinummer )
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Alias() Problem.....
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?
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Alias() Problem.....
@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
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Alias() Problem.....
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.
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Alias() Problem.....
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
Tom
- mini990
- 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.....
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...
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...
- mini990
- 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.....
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)
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)
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Alias() Problem.....
Stgefan,
und was passiert bei
?
Ich tippe darauf, das Tom Recht hat.
Jan
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.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Alias() Problem.....
jeder Thread hat seine eigene Workspacelist() und da kommt man "so" nicht einfach ran
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Alias() Problem.....
Richtig! Da musst Du mit dem Zerospace arbeiten - schau Dir mal DbRelease() und DbRequest() an.
Viele Grüße,
Martin
Viele Grüße,
Martin
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.
- mini990
- 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.....
Sorry... die Bezeichnung Thread stimmt ja net...
Ablauf ist rudimentär so:
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
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Alias() Problem.....
Und? Hast Du da zwei Dateien, die in den ersten acht Zeichen gleich heißen?
Viele Grüße,
Martin
Viele Grüße,
Martin
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.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Alias() Problem.....
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
Wenn Du dann Dateien aus verschiedenen Verzeichnissen öffnen willst...
Viele Grüße,
Martin
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.
-
- 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.....
Stefan, probiere doch bitte Jan's Vorschlag aus. Mich interessiert sehr, ob das funktioniert.Jan hat geschrieben: ↑Fr, 24. Nov 2017 19:17 Stefan,
und was passiert bei?Code: Alles auswählen
LOCAL cAlias := Alias() DbSelectArea(cAlias)
...
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- mini990
- 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.....
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
Code in diesem Bereich NICHT verändert !
Neu compiliert
und es geht jetzt!!!!!!
Das sind die Momente wo man sich fragt........
Gruß Stefan
- mini990
- 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.....
...und weiter geht es:
erneut compiliert und der Fehler tritt wieder auf......
uli:
geht auch nicht!
Habe das nun temporär so gelöst:
erneut compiliert und der Fehler tritt wieder auf......
uli:
Code: Alles auswählen
LOCAL cAlias := Alias()
DbSelectArea(cAlias)
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
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Alias() Problem.....
Servus Stefan,
2 Gedanken dazu:
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!>
Werner
<when the music is over, turn off the lights!>
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Alias() Problem.....
Oh je.
Alias() gibt Dir den (alphanumerischen) Alias der aktuell selektierten Tabelle:
WorkSpaceList() liefert Dir ein eindimensionales Array mit allen Aliasen:
Du kannst Aliase auch selbst wählen:
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.
Das hier:
ist nie wahr.
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"
Code: Alles auswählen
? WorkSpaceList() // Antwort: {"KUNDEN","PRODUKTE"}
Code: Alles auswählen
USE KUNDEN ALIAS KD NEW
? Alias() // Antwort: "KD"
Schlechter Code wird übrigens dadurch keinen Deut besser, dass man ihn in Funktionen auslagert.
Das hier:
Code: Alles auswählen
If UPPER( Alias() ) = "Datei1"
Zuletzt geändert von Tom am Sa, 25. Nov 2017 12:55, insgesamt 1-mal geändert.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Alias() Problem.....
Stefan,mini990 hat geschrieben: ↑Sa, 25. Nov 2017 10:28geht auch nicht!Code: Alles auswählen
LOCAL cAlias := Alias() DbSelectArea(cAlias)
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.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.