Aktionen auf nicht geöffnete DBF

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

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Aktionen auf nicht geöffnete DBF

Beitrag von Manfred »

HI,

nur mal eine Frage am Rande: Was meint ihr, ist das korrekt, dass es keine Fehlermeldung oder sonstwas von Xbase++ gibt, wenn man versucht eine Datenbankoperation wie z.B. DbGoTop auf eine DBF zu machen, die gar nicht geöffnet ist? Das Programm bleibt da stehen, aber macht nichts weiter.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: Aktionen auf nicht geöffnete DBF

Beitrag von Jan »

Moin Manfred,

wenn ich sowas mache bekomme ich sofort einen Laufzeitfehler wegen unbekannten Alias, oder ähnliche Hinweise.

Was eindeutig Mist ist: Wenn ich ein DbSeek() mache, und im dritten Parameter einen ungültigen Index eintrage, dann läuft der in der Tat einfach durch, das Ergebnis ist aber natürlich totaler Blödsinn.

jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Aktionen auf nicht geöffnete DBF

Beitrag von Manfred »

OK,

erweitern wir das ein wenig. Da ich mir den Selectbereich merke, wenn die DBF geöffnet wird, ist dieser natürlich 0, wenn sie nicht geöffnet wurde. Also gehe ich dann wohl mit (0)->(DbGoTop()) dran und das gibt keine Fehlermeldung bei mir. Es Programm "hängt" dann nur.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Aktionen auf nicht geöffnete DBF

Beitrag von brandelh »

Manfred hat geschrieben:wenn man versucht eine Datenbankoperation wie z.B. DbGoTop auf eine DBF zu machen, die gar nicht geöffnet ist?
das ist gar nicht möglich :!:

wenn ein USE fehlschlägt, ist keine Datei geöffnet.
Deine Befehle greifen bestenfalls auf einen leeren Selectbereich zu, und das sollte man tunlichst vermeiden !

Code: Alles auswählen

use myDBF
if neterr()
   fehlermeldung
   exit
else 
   nur hier wird auf die Datei zugegriffen !
SELECT 0 ... hat eine spezielle Funktion:
Wenn bei SELECT der Wert 0 angegeben wird, selektiert der Befehl die Workarea mit der niedrigsten Ordinalzahl, in der keine Dateien geöffnet sind (der nächsten freien Workarea).
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Aktionen auf nicht geöffnete DBF

Beitrag von Manfred »

Öhm,

wo steht dass ich einen Select 0 mache? Ich deklariere die Var mit 0 vor. Wenn dann die DBF geöffnet würde, wird der benutzte Seletcbereich übernommen. Da ich aber die DBF vergessen hatte zu öffnen, wurde auch die 0 nicht überschrieben. Ich gebe nur einen Selectbereich, statt des Aliasnamen vor, wenn ich die Operation mache.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: Aktionen auf nicht geöffnete DBF

Beitrag von Tom »

Wenn ein DbUseArea() fehlschlägt, gibt es ja - je nach Errorsys - keinen Laufzeitfehler, dafür liefert NetErr() .T.. Und je nach Struktur des Codes bleibt dann die Workarea selektiert, die zuvor selektiert war. Du skippst also in diesem Fall in der falschen Tabelle. Wenn keine selektiert ist, feuert "Datenbankalias existiert nicht oder ist ungültig". Das kann man mit diesem Code nachstellen:

Code: Alles auswählen

FUNCTION Main()
DbSkip(1)
RETURN nil
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Aktionen auf nicht geöffnete DBF

Beitrag von Manfred »

OK,

aber das Programm bleibt da hängen und das war es.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Aktionen auf nicht geöffnete DBF

Beitrag von Herbert »

Manfred, du hast ja das Problem geortet... :idea:
Man sollte ohnehin immer den Alias verwenden.
So wird prinzipiell das Arbeiten in einem falschen Bereich verhindert.

(Spätestens bei Xbase 3.0 wirst du bei der Konversion froh sein darüber. Weil der Select()-Befehl ab da keinen Sinn mehr macht - und zudem SELECT als Keyword für SQL-Queries reserviert ist.)
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Aktionen auf nicht geöffnete DBF

Beitrag von Manfred »

Herbert,

ob ich das noch erleben werde? :badgrin:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: Aktionen auf nicht geöffnete DBF

Beitrag von georg »

Hallo, Manfred -


ich verstehe Dein Problem nicht.

Beispiel:

Code: Alles auswählen

FUNCTION Main()
   Select(0)
   (0)->(dbSkip())
RETURN (.T.)
Das wäre ja der Fall, den Du beschreibst, d.h. keine Datei im aktuellen Select-Bereich offen, und ein dbSkip() im (0)-Bereich. Interessanterweise lässt der Compiler das zu, beim Ausführen gibt es aber einen Abbruch:

Code: Alles auswählen

------------------------------------------------------------------------------
ERROR LOG of "C:\Entwicklungen\test\NoSele\NSL.EXE" Date: 10/07/2013 13:59:24

Xbase++ version     : Xbase++ (R) Version 1.90.355
Operating system    : Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
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    : DbSkip
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       8021
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from MAIN(4)
Was machst Du anders, dass bei Dir das Programm hängt?

Könntest Du mal folgendes versuchen, vor der Ausführung des dbSkip() den Alias() zu ermitteln, oder die Select()-Nummer?

Es scheint so, dass Du mit (0)-> auf eine geöffnete Datei zugreifst, und beim Versuch, in dieser Datei den Satzzeiger zu bewegen, hängt diese Datei.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen 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: Aktionen auf nicht geöffnete DBF

Beitrag von AUGE_OHR »

hi,
Manfred hat geschrieben:Was meint ihr, ist das korrekt, dass es keine Fehlermeldung oder sonstwas von Xbase++ gibt ...
passiert es in einem Thread ?
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Aktionen auf nicht geöffnete DBF

Beitrag von Manfred »

nein
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Aktionen auf nicht geöffnete DBF

Beitrag von Rolf Ramacher »

Daher arbeite ich überhaupt nicht mehr mit select-Bereichen, ich spreche die Datenbank direkt an.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Aktionen auf nicht geöffnete DBF

Beitrag von brandelh »

und wie machst du das ? :wink:

PS: DBF/FOX-DBE arbeiten in Select-Bereichen ...
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Aktionen auf nicht geöffnete DBF

Beitrag von Manfred »

@Rolf

Aha, hochinteressant.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: Aktionen auf nicht geöffnete DBF

Beitrag von Jan »

Vielleicht möchte er damit ausdrücke, das er keine Select-Angaben mehr benutzt, sondern nur noch die Aliasse. Das würde Sinn machen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied 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: Aktionen auf nicht geöffnete DBF

Beitrag von UliTs »

brandelh hat geschrieben:... PS: DBF/FOX-DBE arbeiten in Select-Bereichen ...
Bei mir nicht :!: 8)
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten