Seite 1 von 1
Richtig peinlich: Filter auf DatenSatz
Verfasst: So, 30. Sep 2018 12:04
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
Re: Richtig peinlich: Filter auf DatenSatz
Verfasst: So, 30. Sep 2018 12:33
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
Re: Richtig peinlich: Filter auf DatenSatz
Verfasst: So, 30. Sep 2018 13:58
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.
Re: Richtig peinlich: Filter auf DatenSatz
Verfasst: So, 30. Sep 2018 14:51
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
in ersten Fall einen Treffer
... aber wie Tom schon sagt/fragte: warum der Aufwand es auf 1 Record zu beschränken
Re: Richtig peinlich: Filter auf DatenSatz
Verfasst: So, 30. Sep 2018 15:57
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
Re: Richtig peinlich: Filter auf DatenSatz
Verfasst: Mo, 01. Okt 2018 10:29
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
Re: Richtig peinlich: Filter auf DatenSatz
Verfasst: Mo, 01. Okt 2018 10:47
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.