dbseek findet, meldet aber .F.

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

Moderator: Moderatoren

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

dbseek findet, meldet aber .F.

Beitrag von Manfred »

Hi,

im Moment verstehe ich die Welt nicht mehr. Mit Dbseek(var) suche ich einen Satz. Es wird .F. zurückgemeldet, aber der Zeiger steht genau auf dem Satz, der gesucht wurde. Irgendwie kommt mir das bekannt vor, aber ich kann es im Moment nicht einordnen. Übersehe ich evtl. irgendeine Einstellung?
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: dbseek findet, meldet aber .F.

Beitrag von georg »

Hallo, Manfred -


wie ist die Einstellung von SET SOFTSEEK?

Aus der englischen Doku:
If the value of <IndexKeyValue> is not found in the index file, the position of the record pointer depends on <lSoftSeek> or on the SET SOFTSEEK setting. Normally, SET SOFTSEEK is turned OFF (<lSoftSeek>==.F.) ), causing the record pointer to be positioned on the "phantom" record if <IndexKeyValue> is not found in the index file (for DBF files this corresponds to the position LastRec()+1). The function Found() then returns the value .F. and the function Eof() returns the value .T. If SET SOFTSEEK is turned ON (<lSoftSeek>==.T.) ) an "inexact" search is performed. This results in the record pointer being positioned on the first record whose value is greater than <IndexKeyValue> . If such a record exists, the function Found() and the function Eof() both return the value .F. (false).
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen 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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Hi Georg,

das waren die ersten SET, die ich geprüft habe. Ist aus. Ich hatte auch zuerst daran gedacht, dass man immer den nachfolgenden sehen würde. Aber ich habe exakt den Wert gesucht, der auch in der DBF war und der wurde angesprungen. Ich habe einen Satz gesucht, der nur 1x in der DBF steht und der wurde gefunden. Nur halt mit der Rückmeldung .F. . :banghead:
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: dbseek findet, meldet aber .F.

Beitrag von georg »

Hallo, Manfred -


Du verwendest nicht etwa folgenden Code:

Code: Alles auswählen

dbSeek(cSearch, .t.)
Ich weiss, blöde Frage, aber ich sehe manchmal auch den Wald vor lauter Bäumen nicht.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen 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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Nein,

an Softseek hatte ich wie schon gesagt zuerst gedacht. Da es aber fremder Code ist, ist es auch sehr schwer den durchzuklamüsern und zu suchen, woran das liegen könnte. Ich habe die DBF mit dem Index in einem Tool geöffnet und dann gesucht, da klappt es. Also kann es nicht an irgendeinem Key liegen. Wenn ich im Debugger den Suchbefehl von Hand eintippe, dann ergibt es auch .F. der Satz wird aber trotzdem gefunden. Irgendwas ist da nicht ganz koscher.
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!!
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: dbseek findet, meldet aber .F.

Beitrag von ramses »

Hallo Manfred

hast du mal versucht nach dem dbseek() mit found() zu prüfen? Ergiebt found() auch .f. ?

Gruss Carlo
Valar Morghulis

Gruss Carlo
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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Hi,

auch found() liefert .F. zurück. Aber normalerweise müßte bei diesem Vorgang dann EOF() sein, wenn dbseek und found .F. liefern. Das ist aber nicht der Fall.
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
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: dbseek findet, meldet aber .F.

Beitrag von Markus Walter »

Hallo Manfred,

hast Du mal unmittelbar vor dem dbseek geprüft, wie softseek eingestellt ist?

? set(_SET_SOFTSEEK)
? dbseek(...)

und gibt mal GENAU an, wie der Suchstring ist, wie der Index aufgebaut ist und wie die betroffenen Felder in der dbf aussehen...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Hi Markus,

habe ich alles gemacht. Ist nicht eingeschaltet. Ich werde aber jetzt einen Schritt zurückgehen. Unter 1.82.xxx lief das Teil. Das werde ich jetzt mal zunächst testen, wie sich das dann verhält. Danach werde ich weiter sehen. oder es wurde irgendwo irgendwas eingestellt, was ich jetzt nicht finde.

Wie gesagt, der Satz stimmt auf dem die DBF steht, es wird nur ein .F. zurückgeliefert. Aber der Tag ist ja noch jung. Und die Woche erst recht.
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
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: dbseek findet, meldet aber .F.

Beitrag von Markus Walter »

Markus Walter hat geschrieben:und gibt mal GENAU an, wie der Suchstring ist, wie der Index aufgebaut ist und wie die betroffenen Felder in der dbf aussehen...
Und das hast Du überlesen? Vielleicht liegt da der Hase im Pfeffer...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: dbseek findet, meldet aber .F.

Beitrag von Markus Walter »

Manfred hat geschrieben:Hi Markus,

habe ich alles gemacht. Ist nicht eingeschaltet.
Wirklich unmittelbar vor dem dbseek oder bei Programmstart? Du nutzt doch express, Roger hatte z. B. einen Fehler in der Funktion dc_inisave(). Nach Aufruf dieser Funktion, war set exact ausgeschaltet (unabhängig davon, wie der Schalter vorher stand).
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Hi Markus,

hierbei nutze ich kein Express++. Und ja, direkt vor dem Dbseek habe ich es geprüft.

Das interessante an der Sache ist ja, wenn ich die DBF mit dem Index unter Xdbu öffne und dann suche, klappt alles. Denke ich mal,. zumindest wird ein Fenster geöffnet mit einer Anzeige und der Satz ist direkt zu sehen, den ich gesucht habe
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!!
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: dbseek findet, meldet aber .F.

Beitrag von UliTs »

Hallo Manfred,

liefert

Code: Alles auswählen

DbSeek( IndexKeyValue,.F. )
auch den Wert FALSE zurück und anschließend steht die Tabelle NICHT auf eof? Das kann (eigentlich) nicht sein....
Ansonsten vermute ich, dass doch ein SoftSeek durchgeführt wird und z.B. wegen fehlender Blanks am Ende FALSE zurückgegeben wird.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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: dbseek findet, meldet aber .F.

Beitrag von UliTs »

Als weitere Idee hätte ich noch, dass die Funktion DbSeek im Quellcode neu geschrieben wurde :-) .
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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: dbseek findet, meldet aber .F.

Beitrag von Tom »

Rätselraterei. Könnte auch an der Mondphase liegen. Am Facebook-Status. Vielleicht ist gar ein besonders origineller Virus aktiv, der nur Xbase-Programme betrifft. :wink:

Will sagen: Zeig ein bisschen Code, dann finden wir auch was.
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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Tom,

willst Du mich veralbern? Was soll ich an Dbseek(suchbegriff) zeigen? Ich habe doch oben geschrieben dass es selbst im Command vom Debugger nicht klappt. Ich wollte auch zunächst nur wissen, ob ich irgendwas nahegelegenes übersehe.
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
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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Jetzt liege ich erstmal flach.

Mit 1.82.294 compiliert und es klappt. Das muß ich jetzt nicht verstehen. :angry4:

Haben sich dazwischen irgendwelche Parameter verändert, die man setzen kann?
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!!
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: dbseek findet, meldet aber .F.

Beitrag von UliTs »

Manfred hat geschrieben:...Was soll ich an Dbseek(suchbegriff) zeigen? ...
Ich vermute mal, dass Du damit den Code

Code: Alles auswählen

Dbseek(suchbegriff)
meinst :? !
Ich würde immer alle Parameter angeben, die man übergeben kann, also in Deinem Beispiel

Code: Alles auswählen

Dbseek(suchbegriff,/*lSoftSeek*/)
Dann ist klar, Du willst absichtlich Dich von

Code: Alles auswählen

SET Softseek On/Off
abhängig machen :D :wink: .
Aber im Ernst, probiere doch bitte meinen obigen Code aus. :)

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Nochmals,

das habe ich alles schon hinter mir und erklärt mir im Moment nicht, warum es unter 1.90 nicht, aber unter 1.82 läuft. Es kann nur irgendwas sein, was zwischendurch gesetzt wurde, ich aber noch nicht gefunden habe. Die Funktion als solche klappt unter 1.90 ich benutze sie ja auch die ganze Zeit darunter, aber in diesem Programm will es nicht. Ich muß mal nach anderen Suchfällen im Quellcode suchen, mal schauen ob es da derselbe Effekt ist.
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!!
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: dbseek findet, meldet aber .F.

Beitrag von UliTs »

Also Manfred, Du bist aber heute wirklich kompliziert...
Wenn Du es schon ausprobiert hast, was ist denn dann bei

Code: Alles auswählen

DbSeek( IndexKeyValue,.F. )
rausgekommen?
Steht der Datensatz tatsächlich nicht auf EOF, obwohl der Satz nicht gefunden wurde?
Dann kann es sich meines Erachtens nur um einen Compilerfehler in der Version 1.9 handeln...

Uli

P.S.
Ich setze grundsätzlich DbSeek statt Seek ... ein. Bei mir funktioniert es einwandfrei.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Uli,

genau. Und bei mir hat es bisher auch geklappt. Dieses Projekt habe ich allerdings übernommen und arbeite mich gerade da durch. Das ist jetzt mehr oder weniger per Zufall herausgekommen, als von 1.82 auf 1.90 umgestellt wurde. Und bevor ich jetzt die vielen 1000 Zeilen per debugge, dachte ich vielleicht hat ja jemand schonmal was in diese Richtung erlebt und kann einen kleinen Tipp geben. Aber so wie es aussieht, wird Handarbeit angesagt sein. Und da ich nicht weiß, wonach ich suchen muß..... :roll: Gibt es auch keine Langeweile in den nächsten Tagen. :banghead:
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: dbseek findet, meldet aber .F.

Beitrag von Tom »

Hallo, Uli.

SEEK als Kommando und DbSeek() als Funktion sind dasselbe. Das hier in der "STD.CH" - die immer abgearbeitet wird - macht aus dem einen das andere:

Code: Alles auswählen

#command  SEEK <exp> [<ss: SOFTSEEK>] ;
      =>  dbSeek(<exp>, iif(<.ss.>,.T., NIL))
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: dbseek findet, meldet aber .F.

Beitrag von Wolfgang Ciriack »

Hast du denn unter 1.9 auch alle Indexe neu aufgebaut, oder verwendest du die von 1.82 ?
Viele Grüße
Wolfgang
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: dbseek findet, meldet aber .F.

Beitrag von UliTs »

Hallo Tom,

cool! Ich wußte gar nicht, dass man beim Seek-Komando auch mehr als einen Parameter angeben kann.
Obwohl ich viel lieber Funktionen einsetze :-) .

Wolfgang, gute Idee!

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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: dbseek findet, meldet aber .F.

Beitrag von Manfred »

Puh Wolfgang,

jetzt hast Du mir aber einen Schrecken eingejagt. Ich hatte daran nicht gedacht, aber nachdem ich alle Indexdateien gelöscht und wieder aufgebaut habe: Es klappt immer noch nicht. Bin mal gespannt, was das ist.
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!!
Antworten