Richtig peinlich: Filter auf DatenSatz

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
GrillenHirni
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Do, 18. Jul 2013 11:56
Kontaktdaten:

Richtig peinlich: Filter auf DatenSatz

Beitrag von GrillenHirni »

Guten Tag

Diese Frage ist mir jetzt richtig peinlich - es sollen sie bitte nur die lesen, wo die
Antwort wissen....

Ich habe eine alte (25 Jahre...?) ProgrammZeile gefunden und gerade bemerkt,
dass das so nicht funktioniert:

nRecord:=20

SET FILTER TO (RECNO()=nRecord)

Nach DBGOTOP() habe ich ein EOF() und kann mir das einfach nicht erklären.

Die Datei, mit der ich da rumprobiere enthält 794 DatenSätze.

Kann jemand helfen?

Ich wünsche einen schönen Sonntag!
Grilli
GrillenHirni
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Do, 18. Jul 2013 11:56
Kontaktdaten:

Re: Richtig peinlich: Filter auf DatenSatz

Beitrag von GrillenHirni »

Ich hab ja geschrieben, es ist peinlich - jetzt habe ich gerade
herausgefunden, dass

SET FILTER TO (nRecord=RECNO()) funktioniert.

Verstehen tu ich es zwar nicht, aber ich denke noch darüber
nach...

Grilli
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: Richtig peinlich: Filter auf DatenSatz

Beitrag von Tom »

Bei mir funktioniert beides. Hast Du einen Tippfehler irgendwo in der ersten Fassung?
Unabhängig hiervon: Besonder sinnvoll ist das nicht. DbGoto() kann das gleiche, ist aber um ein Vielfaches schneller.
Herzlich,
Tom
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: Richtig peinlich: Filter auf DatenSatz

Beitrag von AUGE_OHR »

GrillenHirni hat geschrieben: So, 30. Sep 2018 12:33 Verstehen tu ich es zwar nicht, aber ich denke noch darüber nach...
bringt

Code: Alles auswählen

SET OPTIMIZE OFF
in ersten Fall einen Treffer :?:

... aber wie Tom schon sagt/fragte: warum der Aufwand es auf 1 Record zu beschränken :?:
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: Richtig peinlich: Filter auf DatenSatz

Beitrag von Tom »

Ich muss mich korrigieren. Ausprobiert mit 1.9 und 2.0. In beiden Fällen gibt es beim ersten Filter ein Eof() - er findet also nichts - und beim zweiten keines, er findet also was. Mit OPTIMIZE OFF arbeiten beide Versionen.

Code: Alles auswählen

FUNCTION Main()
LOCAL nRecord := 20
* SET OPTIMIZE OFF
USE test NEW
SET FILTER TO RecNo() = nRecord
DbGoTop()
? Eof()
SET FILTER TO nRecord = RecNo()
DbGoTop()
? Eof()
CLOSE
RETURN NIL
Herzlich,
Tom
GrillenHirni
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Do, 18. Jul 2013 11:56
Kontaktdaten:

Re: Richtig peinlich: Filter auf DatenSatz

Beitrag von GrillenHirni »

Herzlichen Dank für die Tipps!

In der Anwendung ist es ein Listen-, Etiktetten- respektive DokumentenGenerator,
der eine Schlaufe über die Datei abarbeitet.

Es kann dabei irgendein FilterAusdruck, der mit einem FilterGenerator ermittelt
worden ist, gesetzt sein, oder auch keiner.

Wenn der Anwender nur einen einzelnen DatenSatz ausgeben möchte, war es
damals am einfachsten, mit dem FilterAusdruck den Zugriff auf den betreffenden
DatenSatz zu beschränken. Die DatensatzNummer wurde in diesem Fall vorher
durch BenutzerAbfrage ermittelt.

SET OPTIMIZE kenne ich nicht - das probiere ich noch aus...

Darum herzlicben Dank und einen guten Start in die neue Arbeitswoche...

Grilli
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: Richtig peinlich: Filter auf DatenSatz

Beitrag von Tom »

Hallo, Grilli.

Solche Szenarien gibt es bei mir auch - beispielsweise eine vergleichsweise übersichtliche Auswahl (kleine Tabelle), und neben diversen Kategorien gibt es auch die Möglichkeit, einzeln auszuwählen. Da sowieso ein Filter gesetzt würde und die folgende Schleife entsprechend aufgebaut ist, ist der Filter auf Datensatznummer (oder ID oder ähnlich) auch legitim.

Bei "SET OPTIMIZE" musst Du nichts ausprobieren. Es ist nur leider standardmäßig an - und hier die Ursache für Deine Probleme. Wenn Du nur die Probleme beseitigen, aber sonst nichts am Programmverhalten ändern willst, verdrehst Du am besten die Ausdrücke im Filter.
Herzlich,
Tom
Antworten