Seite 1 von 1

Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 9:18
von Manfred
Hi,
ich stelle das mal hier rein, weil ich gerade mit dem ADS arbeite, aber vielleicht geht das ja auch wenn, mit anderen SQl Servern.
Bisher war es ja so, das man Sätze als gelöscht kennzeichnet (unter DBF) und dann werden sie asugeblendet (kann natürlich bei vielen Sätze recht lange dauern) Das soll jetzt auch nur als Beispiel dienen. Ich möchte gerne Sätze kennzeichenen, die erhalten bleiben, aber nicht mehr angezeigt werden sollen so ohne weiteres. Gibt es da einen Weg sowas dem Server zu vermitteln? Also z.B. wenn das Feld True hat, dann überspringe den Satz und liefer ihn erst gar nicht an den Client aus, oder muß ich das alles von Hand in das SQl Script schreiben? Wäre evtl. viel Arbeit, wenn man alles Scripte nachträglich damit erweitern müßte.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 9:44
von Tom
Du willst also dem Server eine Art "SET DELETED ON" beibringen? Jedes SELECT soll automatisch eine bestimmte Spalte berücksichtigen, obwohl das nicht angegeben wird? Interessante Fragestellung.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 9:52
von Manfred
das war jetzt etwa zu hoch gegriffen. Es soll ja nicht gelöscht werden, sondern gefilter. Es könnte auch für andere Optionen gelten. Wenn der und der Wert erreicht wird, dann zeige es nicht an, oder so. Es müßte sicherlich irgendwo auf dem Server hinterlegt werden. Das fände ich einfacher, als alle SQL Scripte anzupassen. Zumal es dann nur einfach wieder entfernt oder deaktiviert werden müßte, wenn es irgendwann (mal kurzfristig) nicht (mehr) benötigt wird.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 10:08
von Tom
Also ein globales Kriterium, das man z.B. auch (anstelle der Verwendung unterschiedlicher Schemata) für Mandantenzuordnungen verwenden könnte. Sowas. Ganz egal, was ich anfasse, ich will nur noch Daten, wo das (immer vorhandene) Feld "MANDANT" den Wert "HAUPTMANDANT" enthält. Usw. Ich will's nur nicht jedes Mal angeben müssen.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 10:23
von Manfred
hm, vielleicht irgendwann zum Schluß einmal so. Die Möglichkeiten sind ja vielleicht offen. Ich staune ja immer wieder, was man so alles machen kann. (aber finde auch etliches, was man nicht so einfach machen kann :badgrin: )



Aber lese ich da jetzt ein wenig Ironie, oder Sarkasmus in Deiner Antwort?

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 10:29
von Tom
Aber lese ich da jetzt ein wenig Ironie, oder Sarkasmus in Deiner Antwort?
Nichts dergleichen. Ich finde die Fragestellung wirklich interessant, perspektivisch auch für mich selbst.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 11:16
von Marcus Herz
Beim ADS, und nur der, kannst du nach den Öffnen einer Datei ja mit setaof() dein Filterkriterium setzen. Das wird schon auf dem Server ausgeführt. Und verwendet Indices, wenn welche passen.
Ansonst bleibt dir nur der Weg über ein SELECT mit WHERE Bedingung oder noch besser: einen VIEW erstellen

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 11:32
von Manfred
Hi Markus,
das mit dem setaof() habe ich hier schon gelesen, aber nicht verstanden, wie man sowas einsetzt.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 11:46
von HaPe
Hallo Manfred !

Wir hatten sowas für den SQL-Server eingebaut.
Eine logische Spalte deleted.

In der Abfrage-Klasse auf Clientseite, wird automatisch der individuelle SELECT immer mit AND Deleted = .F. ergänzt.
Da muß ich als Entwickler nichts mehr beachten, außer natürlich meine SELECTs immer über die Klasse abzuarbeiten.

Das Objekt loSQLExecParameter ist die Datenzugriffs-Klasse, THIS.DATASOURCE die Art der Datenquelle, tcSQLCommand ist der SQL-Befehl und tcAlias ist der Alias unter dem die Klasse das Ergebnis zurückliefern soll.
loSQLExecParameter.Execute( THIS.DATASOURCE, tcSQLCommand, tcAlias )

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 12:04
von Manfred
Hi HaPe,
ok, das ist natürlich eine Lösung. Aber so weit bin ich leider noch nicht. Ich habe noch keine Zeit/Muße gefunden die ganzen Abfrageroutinen in Klassen zu verpacken. Ich denke mal, es wird langsam Zeit dafür. Dann dürfte es sicherlich flexibler werden. War es ja in meiner bisherigen Datenbankklasse für meine DBF auch.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 12:51
von Tom
Ich habe noch keine Zeit/Muße gefunden die ganzen Abfrageroutinen in Klassen zu verpacken.
Du kannst auch einfach alle SELECT-Kommandos, die Du erzeugt hast, noch in eine Funktion wickeln, die einfach ein "AND irgendwas" anhängt.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 16:52
von Marcus Herz
Zum Beispiel:

Code: Alles auswählen

:setaof(  "MANDANT = 'HAUPTMANDANT' ")
Fast wie ein DbSetFilter() Ausdruck als String, ohne Feld-> alias.
In der AdsClass Hilfe steht noch mehr.

Re: Sätze ausblenden

Verfasst: Mi, 09. Aug 2023 20:53
von nightcrawler
mach Dir eine View:

Code: Alles auswählen

CREATE VIEW meine_Tabelle_ohne_geloescht AS
SELECT * FROM meine_Tabelle WHERE geloescht IS FALSE OR geloescht IS NULL
Dann verwende die Vew anstatt der Tabelle.

Re: Sätze ausblenden

Verfasst: Do, 10. Aug 2023 8:27
von Marcus Herz
Anmerkung: Du kannst eine View wie eine Tabelle öffnen, da ist kein Unterschied,

Code: Alles auswählen

:OpenTable("meine_Tabelle_ohne_geloescht")

Re: Sätze ausblenden

Verfasst: Do, 10. Aug 2023 8:58
von Manfred
hm,
eigentlich hatte ich die Idee, das ich nur einen "Haken" am ADS setze und dann alles so läuft, wie gewünscht. Bei den Vorschlägen jetzt habe ich die Vermutung das doch etliches mehr angepaßt werden muß und die Flexibilität nicht so gegeben ist, wie gedacht.

Re: Sätze ausblenden

Verfasst: Do, 10. Aug 2023 14:01
von Marcus Herz
Der "Haken" ist ein View, den du ja jederzeit ändern kannst