Richtig peinlich: Filter auf DatenSatz
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 116
- Registriert: Do, 18. Jul 2013 11:56
- Kontaktdaten:
Richtig peinlich: Filter auf DatenSatz
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
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
-
- Rekursionen-Architekt
- Beiträge: 116
- Registriert: Do, 18. Jul 2013 11:56
- Kontaktdaten:
Re: Richtig peinlich: Filter auf DatenSatz
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
herausgefunden, dass
SET FILTER TO (nRecord=RECNO()) funktioniert.
Verstehen tu ich es zwar nicht, aber ich denke noch darüber
nach...
Grilli
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Richtig peinlich: Filter auf DatenSatz
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.
Unabhängig hiervon: Besonder sinnvoll ist das nicht. DbGoto() kann das gleiche, ist aber um ein Vielfaches schneller.
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Richtig peinlich: Filter auf DatenSatz
bringtGrillenHirni hat geschrieben: ↑So, 30. Sep 2018 12:33 Verstehen tu ich es zwar nicht, aber ich denke noch darüber nach...
Code: Alles auswählen
SET OPTIMIZE OFF
![Question :?:](./images/smilies/question.gif)
... aber wie Tom schon sagt/fragte: warum der Aufwand es auf 1 Record zu beschränken
![Question :?:](./images/smilies/question.gif)
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Richtig peinlich: Filter auf DatenSatz
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
Tom
-
- Rekursionen-Architekt
- Beiträge: 116
- Registriert: Do, 18. Jul 2013 11:56
- Kontaktdaten:
Re: Richtig peinlich: Filter auf DatenSatz
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
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
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Richtig peinlich: Filter auf DatenSatz
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.
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
Tom