Alias() Problem.....

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

Moderator: Moderatoren

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 »

Jan, das ist Quatsch!

Code: Alles auswählen

USE KUNDEN NEW
? Alias() // Kunden
USE PRODUKTE NEW
? Alias() // Produkte
CLOSE
? Alias() // leer - Kunden ist NICHT selektiert
SELECT KUNDEN
? Alias() // Kunden
Es können viele Tabellen offen sein - und Alias() liefert trotzdem einen Leerstring, wenn keine davon selektiert ist.
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 »

Tom,

ja, hast ja Recht. Ersetzen wir also "geöffnet" durch "selected". EInverstanden?

Mir ging es auch eher darum zu sehen, was der Alias() zurückgibt. Denn irgendwie muß ja Stefans Problem eingegrenzt werden können.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied 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 »

@ Tom: Datei1 ist ein Beispielname, real heisst die Datei "DRUDAT"

@Jan:

Code: Alles auswählen

LOCAL cAlias := Alias()
? cAlias --> "DRUDAT"
? Alias() --> "DRUDAT"

DBSelectArea("DRUDAT") -> Fehler
DBSelectArea( cAlias) --> Fehler

Habe den gleichen Code gerade mit 1.9 gelinkt.
Hier funktioniert es..... komischerweise

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 »

Hatte ich erwähnt dass es sich hier um ein Hybridprogramm handelt?
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 »

Stefan,

ob Hybrid oder GUI oder sontwas ist eher egal. Die Oberfläche macht ja nichts mit dem dbf-Zugriff. Hauptsache die DbeSys() stimmt.

Als Verzeiflungsversuch: Was passiert, wenn Du in Deinem Beispiel oben den DbSelectArea("DRUDAT") weglässt? Und stattdessen direkt auf DbSelectArea(cAlias) gehst?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied 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 »

das selbe.
Hab das inzwischen kreuz und quer in zig Varianten probiert.
kann das ein 2.0 Problem sein? Mit der 1.9 funktioniert es ja.
ist da was bekannt?

Gruß Stfean
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 »

Stefan

ist die DRUDAT mit welcher du das Problem hast die erste DBF die dein Programm öffnet?

Wenn es mit der 1.9 funktioniert hast du evtl. ein "ducheinander" mit den DLL's (Versionskonflikt) oder hast du nicht alle obj's neu compiliert....

Du solltest generell nach jedem USE mit NETERR() prüfen ob die Datei auch geöffnet wurde. So kannst du viele Sorgen an der Quelle abfangen.

Gruss Carlo
Valar Morghulis

Gruss Carlo
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 »

Hast du die Exe mit einem Packer komprimiert?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
DelUser01

Re: Alias() Problem.....

Beitrag von DelUser01 »

@Stefan

Ergänze Dein Listing um Das Use von Dir, etwa so?

Code: Alles auswählen

LOCAL cAlias := Alias()

Select( 0 )
Use ( "DRUDAT" )

? cAlias --> "DRUDAT"
? Alias() --> "DRUDAT"

DBSelectArea("DRUDAT") -> Fehler
DBSelectArea( cAlias) --> Fehler
passieren Die Fehler nur in Deinem Gesamtprogramm oder auch wenn Du ein kleines Testprogramm schreibst?
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 baue das morgen mal als Testprogramm nach...
Danke schon mal...

Gruß Stefan
PS: DAS sind so Dinge die ich an unserem Beruf liebe... :-)
DelUser01

Re: Alias() Problem.....

Beitrag von DelUser01 »

Ich könnte mir vorstellen, dass das USE so aussieht:
cDatei := "c:\Irgendwo\1\2\3\drudat.dbf"
Select( 0 )
use ( cDatei )
nSelect := Select()

Das DbSelectArea( nSelect ) muss nun funktionieren.
Sieht nun so aus als würde das intern generierte Alias aus dem Inhalt von cDatei anders aussehen als das von Alias() zurückgegebene.

Nur so ein Gedanke...
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 kann der Fehler nicht mehr replizieren.
Es funktioniert nun unter 1.9 und 2.0
Habe den Quellcode vor / nach den Versuchen verglichen, kein Unterschied.

Trotzdem vielen Dank für die Unterstützung und die Anregungen!

Gruß Stefan
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 »

UliTs hat geschrieben: Mo, 27. Nov 2017 1:50 Hast du die Exe mit einem Packer komprimiert?
Und du hast (hattest) auch nicht die Exe oder zugehörige DLLs komprimiert?
-------
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 »

Nein. Ich halte nichts vom komprimieren von Exe oder DLL
hatte auch mehrmals mit /A compiliert
Entwicklungsumgebung ist absolut unverändert.
Die einzige Veränderung war ein kleineres automatisches Windows Update....

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 »

Ähem.

Eine weitere Möglichkeit besteht darin, dass die Tabelle überhaupt nicht geöffnet wurde, weil sie anderswo exklusiv in Benutzung war. Auch dann ist der Alias nicht vergeben und also ungültig, aber ein numerisches Select funktioniert trotzdem, weil das immer funktioniert, ganz egal, ob tausend oder gar keine Tabellen geöffnet sind - weil man mit SELECT x oder DbSelectArea(x) ja schließlich auch eine vermeintlich freie Workarea anwählen kann, um darin eine Tabelle zu öffnen (statt Select 0). USE <cDatei> erzeugt keinen Fehler, wenn die Tabelle nicht geöffnet werden kann, weil sie exklusiv in Benutzung ist. Aber NetErr() liefert .T. - das muss man abfangen/-fragen. USE <cDatei> erzeugt nur dann einen Laufzeitfehler, wenn die Tabelle aus anderen Gründen nicht geöffnet werden kann.
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 »

Ähm......
Ich öffne meine Dateien wie so:

Code: Alles auswählen

FUNCTION NetUse( cDatabase, lOpenMode, nSeconds ,lNumsel )
LOCAL lForever
lForever = (nSeconds = 0)
do while (lForever .OR. nSeconds > 0)
   if lOpenMode
      if lNumsel
         use (cDatabase) EXCLUSIVE NEW 
      else
         use (cDatabase) EXCLUSIVE 
      endif
   else
      if lNumsel
         use (cDatabase) SHARED NEW 
      else
         use (cDatabase) SHARED 
      endif
   endif
   if ! neterr()
     return (.T.)
   endif
   inkey(.1)
   nSeconds = nSeconds - 1
enddo
RETURN (.F.)
Da frage ich NetErr() doch richtig ab?
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 »

Das sieht gut aus, vorausgesetzt, Du reagierst nach dem Öffnungsversuch auch entsprechend.

Ich wollte nur angemerkt haben, dass daraus ein Szenario entstehen kann, das Deinen Beschreibungen entspricht.
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 »

Deinen Tipp habe ich gespeichert, merci

Gruß Stefan
Antworten