Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: frapu am August 05, 2011, 15:36:38

Titel: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 05, 2011, 15:36:38
Hallo,

ich nutze Access 2007 und habe folgendes Problem. Wenn ich in einem Formular in der Tabellenansicht filtere und dann in die Formularansicht wechsle und dort nach einem Feld sortiere, dann verliert das Formular den Filter und es werden alle Datensätze angezeigt. In access 2003 ist das verhalten nicht so. Woran liegt das bzw. wie kann man das Problem beheben?

Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: MzKlMu am August 06, 2011, 08:55:54
Hallo,
Wie sortierst Du denn?
Wie filterst Du?
Warum in der Tabellensicht filtern und nicht gleich in der Formularsicht?
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 08, 2011, 11:26:05
Zitat von: MzKlMu am August 06, 2011, 08:55:54
Hallo,
Wie sortierst Du denn?
entweder übers Start-Ribbon oder Kontextmenü
Zitat
Wie filterst Du?
Warum in der Tabellensicht filtern und nicht gleich in der Formularsicht?
da ich aus einem Formular ein anderes Formular gefilter in der Datenblattansicht aufrufe (über DoCmd.OpenForm). Wenn der Nutzer nun in dem neu geöffneten Formular in die Formularansicht wechselt und dort sortiert, wird der Filter aus irgend welchen Gründen entfernt. In Access 2003 war das nicht der Fall.
Es liegt aber auch nicht am VB, denn man kann das ganz auch nachvollziehen, wenn man in einem Formular in der Datenblattansicht über das Kontextmenü filtert, dann in die Formularansicht wechselt und dort sortiert.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: Jonny am August 08, 2011, 11:41:26
Hallo,
das Hin und Herschalten verstehe ich genausowenig wie MzKlMu.

So weit ich weis wird jedesmal beim Umschalten die Datenquelle wieder neu aufgebaut und dadurch ist der Filter weg

Sortieren kannst Du doch auch in der Formularansicht.
geht das nicht mußt Du bei Anzeigen deinen Fitler wieder aktiveren.

Gruß

Johann
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 08, 2011, 12:08:19
Zitat von: Jonny am August 08, 2011, 11:41:26
das Hin und Herschalten verstehe ich genausowenig wie MzKlMu.

ok also noch mal detailierter: ich öffne ich aus dem Formular "Artikel" das Formular "Aufträge" gefiltert auf den ausgwählten Artikel in der Datenblattansicht. In der Datenblattansicht deshalb, da es für den ersten Blick übersichtlicher ist. Dann besteht die Möglichkeit in die Formularansicht zuwechseln um sich Details zu einem Auftrag anzugucken. Wenn man dort jetzt z.b. nach Auftragsdatum sortiert  fliegt der Filter raus und es werden alle Aufträge angezeigt und nicht mehr die von dem zuerst gewählten Artikel.

Zitat
So weit ich weis wird jedesmal beim Umschalten die Datenquelle wieder neu aufgebaut und dadurch ist der Filter weg

So wie es aussieht wird die Datenquelle nicht neu aufgebaut, da der Filter ja beim umschalten noch da ist, ich kann 100 mal hin und her schalten und der Filter ist aktiv. Erst wenn ich nach dem Umschalten sortiere fliegt der Filter raus und dies nur beim Umschalten von Datenblatt- in Formularansicht. Andersherum bleibt der Filter drin.

In Access 2003 bleibt der Filter aber erhalten. Nur in Access 2007 tritt diese Verhalten auf

Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: Jonny am August 08, 2011, 12:21:56
Hallo,
ich kann mich erinnern das ich mal ein ähnliches Problem mit den Filter hatte (nach Umstellung von 2002 auf 2007).
Gelöst habe ich es indem ich den Recordsource beim öffnen vom Formular per SQL-String übergeben habe. Danach konnte
man filtern und sortieren wie man wollte.

Gruß

Johann
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 11, 2011, 11:58:11
Zitat von: Jonny am August 08, 2011, 12:21:56
Gelöst habe ich es indem ich den Recordsource beim öffnen vom Formular per SQL-String übergeben habe.
das möchte ich ungern machen, da der Aufwand bei über 100 Formularen zu groß wäre.

Ich überlege gerade eigene Sortieren Button zu machen

in dem Feld Sortierung steht immer der der Name des Formular Feldes? Zumindest funktioniert es so wenn ich den Namen dort angebe. Der Filter bleibt da nach Wechsel auch noch erhalten.
Ein sachen habe ich da aber noch. Beim Sortieren nach Kombinationsfeldern schreibt Access das Konstrukt "lookpup_Formularname_Feldname.Auswahlname" .
Wie komme ich an den Namen damit ich den setzen kann?
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: Jonny am August 11, 2011, 12:06:18
Hallo,
sortieren nach einen Kombifeld.
Das Kombifeld ist doch mit einen Feld der Tabelle verbunden, dann kannst Du doch nach diesen Feld sortieren.
Oder ist das Kombifeld ungebunden?

Gruß

Johann
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 11, 2011, 12:13:00
Das Kombinationsfeld ist mit einem Tabellenfeld verbunden. Nach diesm wird aber nicht sortiert wenn man auf diesem Feld die Sortierung auswählt.


Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: Jonny am August 11, 2011, 12:16:25
Das verstehe ich nicht.
Feld anklicken und dann Sortierschaltfläche funktioniert nicht?
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 11, 2011, 13:42:10
so ich hab mal ne test-mdb erstellt.

dort einfach mal sortieren und dann den Button drücken. Dort steht bei dem Kombifeld nach dem sortieren in den Formulareigenschaften unter "orderby"  nicht das DB Feld sondern der Konstrukt "lookup_...". Damit ich die Sortierung selber machen, kann ist mein Frage wie ich diesen Namen per vba rausbekomme

[Anhang gelöscht durch Administrator]
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: database am August 11, 2011, 17:34:37
Hallo,

Zitatist mein Frage wie ich diesen Namen per vba rausbekomme

'Sortierung entfernen
Me.OrderBy = ""
Me.OrderByOn = False


HTH

p.s. Es gab da mal einen schönen Beitrag im Forum ...

http://www.access-o-mania.de/forum/index.php?topic=8746.0 (http://www.access-o-mania.de/forum/index.php?topic=8746.0)
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 11, 2011, 17:38:55
Zitat von: database am August 11, 2011, 17:34:37

'Sortierung entfernen
Me.OrderBy = ""
Me.OrderByOn = False


damit bekomme ich den Namen doch nicht raus? Ich will doch den Filter im VBA mit orderby erst setzen
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: database am August 11, 2011, 18:02:30
DIe Sortierung auslesen kannst du mit

Dim strOrder as String

strOrder = me.OrderBy


...unter 'rausbekommen' verstehe ich entfernen...
daher me.OrderBy = ""
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 11, 2011, 18:05:41
Zitat von: database am August 11, 2011, 18:02:30
DIe Sortierung auslesen kannst du mit

Dim strOrder as String

strOrder = me.OrderBy


...unter 'rausbekommen' verstehe ich entfernen...
daher me.OrderBy = ""
nein, ich möchte nicht den Filtern entfernen, ich möchte wissen wie ich den Namen ermitteln kann den ich im vba bei me.orderby setzen muss, damit ich nach einem KombiFeld sortieren kann.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 11, 2011, 18:51:34
Hallo,

ich verstehe nicht, was genau Du überhaupt machen willst...

Wenn Du nach einem Kombifeld(inhalt) sortieren  (Was heißt das überhaupt?) willst, dann kennst Du doch den Namen des Kombis...und damit auch den Namen der gebundenen Spalte...


Vermutlich gehst Du die Hintertür an die Sache ran...

" In Access 2003 war das nicht der Fall. "


kann ja sein, dass es da Verschlimmbesserungen gibt.


Wenn ein Form mit Docmd.Openform und Where-Condition Parameter geöffnet wird, wird ein Filter gesetzt. Wenn Du nicht filtern willst, dann setze über das Openargs-Argument  die Recordsource des Forms mit einer passenden SQL.

Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 11, 2011, 19:02:34
Zitat von: DF6GL am August 11, 2011, 18:51:34
Hallo,

ich verstehe nicht, was genau Du überhaupt machen willst...

eine eigene Sortieren Funktion bauen, da die Access eigenen Buttons im Ribbon oder Kontext Menü nicht richtig funktionieren, siehe 1. Post

Zitat
Wenn Du nach einem Kombifeld(inhalt) sortieren  (Was heißt das überhaupt?) willst, dann kennst Du doch den Namen des Kombis...und damit auch den Namen der gebundenen Spalte...

na nicht genau. ich weiß hier nicht wie ich auf diese korrekte Bezeichnung komme, damit die Sortierung in VBA nach dem Kombinationsfeld funktioniert.

Zitat
Vermutlich gehst Du die Hintertür an die Sache ran...

" In Access 2003 war das nicht der Fall. "

kann ja sein, dass es da Verschlimmbesserungen gibt.


Wenn ein Form mit Docmd.Openform und Where-Condition Parameter geöffnet wird, wird ein Filter gesetzt. Wenn Du nicht filtern willst, dann setze über das Openargs-Argument  die Recordsource des Forms mit einer passenden SQL.


Filtern funktioniert ja, das Problem ist, dass der Filter nach dem Sortieren verloren geht.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 11, 2011, 19:09:53
Hallo,

ja, aber wenn der Filter verloren geht, mußt Du halt einen Workaround benutzen...

Es gibt  m. W. keine Einstellung, die das Verhalten von A2003 nachempfindet.


(Es wird übrigens nicht nach einem Kombifeld gefiltert, sondern der Spalteninhalt (Domäne) einer Tabelle/Abfrage wird gefiltert.)



"eine eigene Sortieren Funktion bauen"



Sub btnSortSpalte1Down_Click()
Me.OrderBy="[Spalte1] desc"
Me.OrderByOn =true
End Sub
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 11, 2011, 19:45:15
Zitat von: DF6GL am August 11, 2011, 19:09:53
Hallo,

ja, aber wenn der Filter verloren geht, mußt Du halt einen Workaround benutzen...

Es gibt  m. W. keine Einstellung, die das Verhalten von A2003 nachempfindet.

also so wie es aussieht ist ein Bug im Access 2007, hier hat auch jemand das Problem http://www.ms-office-forum.net/forum/showthread.php?t=280285

Zitat
(Es wird übrigens nicht nach einem Kombifeld gefiltert, sondern der Spalteninhalt (Domäne) einer Tabelle/Abfrage wird gefiltert.)
das ist ja genau das wo nach ich suche

Zitat
"eine eigene Sortieren Funktion bauen"



Sub btnSortSpalte1Down_Click()
Me.OrderBy="[Spalte1] desc"
Me.OrderByOn =true
End Sub

meine Funktion sieht bisher so aus:

Public Function sbl_sort(typ As String)
   Dim cs As String
   cs = Screen.ActiveControl.ControlSource
   If Screen.ActiveControl.ControlType = acTextBox Then
       If InStr(1, cs, "=") = 0 Then
           Screen.ActiveForm.OrderBy = cs & "  " & typ
           Screen.ActiveForm.OrderByOn = True
       endif
   elseIf Screen.ActiveControl.ControlType = acComboBox Then
           Screen.ActiveForm.OrderBy = ??? & "  " & typ
           Screen.ActiveForm.OrderByOn = True
   End If
End Function

Ich weiß halt jetzt nicht was bei den ??? rein muss
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 12, 2011, 09:13:00
Hallo,


von wo aus wird die Funktion aufgerufen?


versuch mal:

Screen.ActiveForm.OrderBy =  Screen.ActiveControl.Name & " "  & typ
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 12, 2011, 09:18:30
Zitat von: DF6GL am August 12, 2011, 09:13:00
Hallo,


von wo aus wird die Funktion aufgerufen?
über die Symbolleiste bzw. Ribbon

Zitat
versuch mal:

Screen.ActiveForm.OrderBy =  Screen.ActiveControl.Name & " "  & typ

das funktioniert nicht, da ich damit nur den Namen des Controls bekomme. Ich muss bei den Kombinationsfeldern aber einen Konstrukt bekommen, der mit "lookup_" beginnt. Mein Problem ist halt wie ich das am besten auslesen bzw. zusammen setzen kann.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 12, 2011, 10:55:57
Hallo,

ich verstehe Dich nicht.

Das "lookup_"  ist ein von Access intern erzeugtes Objekt.  Das brauchst Du doch gar nicht.   Oder ist dem entspr. Tabellenfeld, an das das Kombi gebunden ist, ein Nachschlagefeld zugeordnet?

Ich denke mal, dass Du die TABELLENSpalte, bzw. die Form-Recordset-Spalte, an die das Kombi gebunden ist, sortieren willst.


Also muss dieser Spalten-Name herangezogen werden.  Wenn das Kombi anders heißt, dann lese dessen Steuerelementinhalt aus und nimm diesen Namen als Sortierfeld.


Versuch mal:


Screen.ActiveForm.OrderBy =  Screen.ActiveControl.Controlsource & " "  & typ



Wenn Du unbedingt  Dlookup_ davorstellen willst, dann halt so:


Screen.ActiveForm.OrderBy =  "Dlookup_" & Screen.ActiveControl.Name & " "  & typ

Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 12, 2011, 11:17:10
Zitat von: DF6GL am August 12, 2011, 10:55:57
Hallo,

ich verstehe Dich nicht.

das Gefühl hab ich auch ;-)

Zitat
Das "lookup_"  ist ein von Access intern erzeugtes Objekt.  Das brauchst Du doch gar nicht.   Oder ist dem entspr. Tabellenfeld, an das das Kombi gebunden ist, ein Nachschlagefeld zugeordnet?

Ich denke mal, dass Du die TABELLENSpalte, bzw. die Form-Recordset-Spalte, an die das Kombi gebunden ist, sortieren willst.

nein danach soll nicht sortiert werden, da Access eigene Sortierung auch nicht danach sortiert.

Zitat

Also muss dieser Spalten-Name herangezogen werden.  Wenn das Kombi anders heißt, dann lese dessen Steuerelementinhalt aus und nimm diesen Namen als Sortierfeld.


Versuch mal:


Screen.ActiveForm.OrderBy =  Screen.ActiveControl.Controlsource & " "  & typ



Wenn Du unbedingt  Dlookup_ davorstellen willst, dann halt so:


Screen.ActiveForm.OrderBy =  "Dlookup_" & Screen.ActiveControl.Name & " "  & typ



ich hab hier noch mal die BSP-MDB angehangen um noch mal zu verdeutlichen was ich will. In der SBL hab ich meine Sortieren-Funktion und darunter die Access eigene.  Wenn man beide vergleicht versteht man was ich meine

[Anhang gelöscht durch Administrator]
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: database am August 12, 2011, 11:46:00
Hallo,

Zitatnein, ich möchte nicht den Filtern entfernen
Durch meinen Vorschlag wird KEIN Filre entfern sondern die Sortierung gelöscht.
Aber egal ... und der Rest war eine Erklärung, warum ich ...

mit ...

MsgBox Me.OrderBy

... hast du ja schon selbst erfolgreich herausgefunden welche Sortierung aktuell angewendet wird.
Nun wird es ja nicht so schwierig sein, festzustellen welches Steuerelement gemeint ist und im Fall eines Kombifeldes welche SPALTE der Datenherkunft angesprochen wird bzw. werden soll.

Schau doch in deinem eigenen Beispiel mal genau hin!

Setzen der Sortierung mit:
Bei Kombis...
Me.OrderBy= "[Lookup_DeinKombifeld].[NameDerAngezeigtenSpalte]" und wenn du Absteigend sortieren willst noch DESC dranhängen.

und bei 'normalen' Textfeldern 

Me.OrderBy= "[NameDesFormulars].[NameDesSteuerelements]

Wie der Name eines aktiven Steuerelments zu ermitteln ist hat Franz in einer seiner vorangegangenen Antworten bereits erklärt.

Dann empfehle ich noch hier mal nachzulesen ...

http://www.donkarl.com?FAQ4.7 (http://www.donkarl.com?FAQ4.7)


HTH
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 12, 2011, 11:55:33
Zitat von: database am August 12, 2011, 11:46:00

Setzen der Sortierung mit:
Bei Kombis...
Me.OrderBy= "[Lookup_DeinKombifeld].[NameDerAngezeigtenSpalte]" und wenn du Absteigend sortieren willst noch DESC dranhängen.


genau das suche ich, allerdings hab ich bis jetzt noch nicht herausbekommen wie ich [NameDerAngezeigtenSpalte] ermitteln kann
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 12, 2011, 12:34:24
Hallo,

jetzt hab ich es verstanden   8)


Es sollen die DS nach der Anzeige der gebundenen Spalte eines Kombifeldes (Attribut-Spalte in einer verknüpften 1-Tabelle)  sortiert werden...
(wenn in das Kombifeld und anschliessend auf eine Schaltfläche geklickt wird)

Me.OrderBy = "Lookup_" & Screen.PreviousControl.Name & ".Name Desc"

bzw. bei aufsteigend:

Me.OrderBy = "Lookup_" & Screen.PreviousControl.Name & ".name "

Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 12, 2011, 12:45:06
Zitat von: DF6GL am August 12, 2011, 12:34:24
Hallo,

jetzt hab ich es verstanden   8)


Es sollen die DS nach der Anzeige der gebundenen Spalte eines Kombifeldes (Attribut-Spalte in einer verknüpften 1-Tabelle)  sortiert werden...
(wenn in das Kombifeld und anschliessend auf eine Schaltfläche geklickt wird)

Me.OrderBy = "Lookup_" & Screen.PreviousControl.Name & ".Name Desc"

bzw. bei aufsteigend:

Me.OrderBy = "Lookup_" & Screen.PreviousControl.Name & ".name "



genau, allerdings muss ich bei deiner Lösung den Namen der angezeigten, gebundenen Spalte wissen. Da ich aber eine allgemeingülte Lösung suche, fehlt mir noch wie ich diesen Namen der Spalte per VBA ermitteln kann (oben fett markiert)
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 12, 2011, 12:48:00
Hallo,

nein, den mußt Du nicht wissen, der stammt  eben von "lookup_"
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 12, 2011, 12:58:33
Zitat von: DF6GL am August 12, 2011, 12:48:00
Hallo,

nein, den mußt Du nicht wissen, der stammt  eben von "lookup_"
das versteh ich nicht

dieser ".Name" aus deinem Vorschlag ist doch der Name der angezeigten, gebundenen Spalte.

wenn die Spalte z.b. "Personalname" heißt, müsste das sortieren ja so lauten:

Me.OrderBy = "Lookup_" & Screen.ActiveControl.Name & ".Personalname desc"

Diesen Name muss ich ja erst ermitteln?
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 12, 2011, 14:01:07
Hallo,

nein...

Selbst wenn Du den Namen der gebundenen Spalte ermittelst, nützt der an dieser Stelle nichts. Diese Spalte (Feld) kommt ja im Form-Recordset nicht vor.


probier es doch einfach mal...  ::)

Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 12, 2011, 14:13:51
Ich hab es ja probiert. Es funktioniert nur wenn ich Namen angebe und weiß eben nicht. Dein Bsp. funktioniert nur wenn ich den Namen direkt angeben. So müsste ich aber für jedes Kombinationfeld eine eigene Sortierenfunktion schreiben.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 12, 2011, 14:19:51
Hallo,


naja, irgendwie mußt Du ja das betreffende Kombi "mitteilen" , indem Du vorausgehend in das Kombifeld klickst und gleich danach auf eine passende Schaltfläche, die den Code ausführt.  Sonst liefert Screen.PreviousControl nicht das gewünschte Steuerelement.

Statt PreviousControl kannst Du ja auch "Beim Hingehen" eine Public-Variable mit dem St.-El.-Namen setzen und die anschliessend im Code verarbeiten.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: database am August 12, 2011, 14:25:37
Hi,

@Franz
ZitatSelbst wenn Du den Namen der gebundenen Spalte ermittelst
Was nicht so einfach sein dürfte - die Spalten der Datenherkunft haben keine Namens-Eigenschaft - oder sollte ich das was übersehen haben?
Mir ist nur die Column(x) - Anrede bekannt.

Eventuell über irgendeine gut verrammelte API-Funktion zu ermitteln?
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: DF6GL am August 12, 2011, 14:37:01
Hallo,

man könnte ja die SQl der Rowsource auslesen und die Select-Liste abklappern....

M. E. gibt es gerade deswegen dieses Lookup_ (-Objekt oder -Klasse oder was auch immer), die über deren Name-Eigenschaft eben den Spaltenenamen liefert.


Ein ganz anderer Weg, um zum Ziel zu kommen, wäre, in der Datenherkunft des Forms alle "Kombifelder"-Tabellen zu verknüpfen und lediglich das/die zu sortierenden Spalten in der Abfrage mit aufzunehmen. Dann kann man gleich den (evtl. über den im Kombi-Steuerelement stehenden) Spaltennamen beim OrderBy angeben.

Aber auch da muß das entspr. Kombi erst mal angeklickt werden, damit das Screen-Objekt sich das St.-El. "merkt". (unter der Voraussetzung, dass eine allgemeingültige Funktion errreicht werden soll.)


Ich denke aber mal, dass frapu in der "Fokus"-Falle hängt und Screen.ActiveControl (bzw. PreviousControl) die falschen St.-El. während der Code-Ausführung liefert, weil "falsch" geklickt wurde.


Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: database am August 12, 2011, 14:58:43
Hallo,

ja so ungefähr habe ich mir das auch schon gedacht.
Ehrlich gesagt habe ich mich mit so etwas (funktional gesehen) noch nie beschäftigt.

Dass die RowSource gescannt werden könnte - OK - klar
Dass Spaltennamen im Kombi mit aufgenommen werden könnten - auch OK

Aber ich glaube dennoch, dass der ganze Auwand nicht lohnt...

Tja und das Ding mit der Focus-Falle ... kommt erschwerend dazu :o

;D
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 12, 2011, 15:46:58
Zitat von: DF6GL am August 12, 2011, 14:37:01
Hallo,

man könnte ja die SQl der Rowsource auslesen und die Select-Liste abklappern....

M. E. gibt es gerade deswegen dieses Lookup_ (-Objekt oder -Klasse oder was auch immer), die über deren Name-Eigenschaft eben den Spaltenenamen liefert.

wie soll das gehen? wie greife ich auf die Namen-Eigenschaft zu?

mit

ZitatMe.OrderBy = "Lookup_" & Screen.PreviousControl.Name & ".Name Desc"

gehts nicht, da .Name mir nicht den Namen liefert, sondern "Name" der Name ja schon ist.

Zitat
Ein ganz anderer Weg, um zum Ziel zu kommen, wäre, in der Datenherkunft des Forms alle "Kombifelder"-Tabellen zu verknüpfen und lediglich das/die zu sortierenden Spalten in der Abfrage mit aufzunehmen. Dann kann man gleich den (evtl. über den im Kombi-Steuerelement stehenden) Spaltennamen beim OrderBy angeben.

der Weg ist zu aufwendig. Da ich jedes Formular anpassen muss und das ist nicht realisierbar.

Zitat
Aber auch da muß das entspr. Kombi erst mal angeklickt werden, damit das Screen-Objekt sich das St.-El. "merkt". (unter der Voraussetzung, dass eine allgemeingültige Funktion errreicht werden soll.)

das Anklicken des Feldes ist Vorraussetzung, das soll ja auch nicht wegfallen. Ich will ja nur die Access eigene Sortierfunktion ersetzen und bei der muss ich ja in das Feld klicken nach dem ich sortieren will.

Zitat
Ich denke aber mal, dass frapu in der "Fokus"-Falle hängt und Screen.ActiveControl (bzw. PreviousControl) die falschen St.-El. während der Code-Ausführung liefert, weil "falsch" geklickt wurde.

ich hänge in keiner Fokus-Falle. Das ist ja nicht das Problem. Es funktioniert ja mit allen Textfeldern, Fokus passt. Bei den KombiFeldern hab ich auch den richtigen Fokus wenn ich das Feld anklicken, weiß aber halt nicht wie ich auf Namen zugreife.


Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 12, 2011, 15:52:28
Zitat von: database am August 12, 2011, 14:58:43
Aber ich glaube dennoch, dass der ganze Auwand nicht lohnt...

so siehts aus

Zitat
Tja und das Ding mit der Focus-Falle ... kommt erschwerend dazu :o

Fokus-Falle gibts nicht

So wie es aussieht gibts anscheinend keine richtige Lösung für mein Problem. Da werd ich wohl erst mal damit leben müssen nur auf Textfeldern sortieren  zu können.

Vielleicht behebt ja Microsoft den Bug zeitnah. Ist ja leider nicht der einzige der mit bei der Umstellung auf Access 2007 auf die Füße fällt.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: database am August 13, 2011, 09:51:08
Hallo, Guten Morgen,

ZitatVielleicht behebt ja Microsoft den Bug zeitnah
Naja, ob es dann auch wirklich ein Bug ist ...?

Derartige Probleme sind immer wieder Anlass zu Spekulationen um Bugs und vergessene Funktionen.
Bei der Neugestaltung des Office-Pakets ist ja nicht die alte Version um ein paar Sachen erweitert worden
sondern das ganze Paket wurde erneuert.
Jetzt stellt sich aber beispielsweise DEINE Problematik nur bei einem Teil jener Leute ein,
die diese Funktionalität aus der alten Version heraus weiter nutzen möchten, weil sie dort in einer individuellen Applikation auffällig in Verwendung gewesen ist.
Menschen, die mit Access 2007 einsteigen haben das Problem nicht - sie kennen die 2003-er Möglichkeit nicht und werden daher auch keine Einschränkung erkennen könen.
Ähnlich verhält es sich bei 2003 / 2010 oder 2007 / 2010.

Was hilft dir das jetzt...
Eigentlich nicht besonders viel, ich weiß ...
Wie Thomas Möller in dem von dir zitierten Beitrag in einem anderen Forum empfohlen hat - ändern.
Was sicherlich einiges an Aufwand mit sich bringt aber auch nur einmalig zu erledigen sein wird.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 13, 2011, 10:58:02
Für mich ist das Verhalten eindeutig ein Bug, denn:
- wenn man in einem gefilterten Formular in der Datenblattansicht  nach einem Feld sortiert bleibt der Filter erhalten
- wenn man in einem gefilterten Formular in der Formularansicht  nach einem Feld sortiert bleibt der Filter erhalten
- wenn man die Ansicht wechselt bleibt der Filter erhalten
- wenn man in einem gefilterten Formular in der Formularansicht in die Datenblattansicht wechselt und  nach einem Feld sortiert bleibt der Filter erhalten
- der Filter fliegt nur raus wenn in einem gefilterten Formular in der Datenblattansicht in die Formularansicht wechselt und dort sortiert

Für mich gibt's da keine logische Erklärung, dass dieses Verhalten gewollt sein soll.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: database am August 13, 2011, 11:42:32
Hallo,

verstehe ...

Ich möchte ja in gar keiner Weise deine Abeitsgewohnheiten kritisieren aber warum schaltet man zwischen Datenblattansicht und Formularansicht hin und her?

ZitatFür mich gibt's da keine logische Erklärung, dass dieses Verhalten gewollt sein soll.

In Access 2007 gibt es doch die Möglichkeit ein 'Geteiltes Formular' zu verwenden.
So viel ich weiß ist es damit möglich nach allen Regeln der Kunst zu sortieren, Filtern und die Daten zu bearbeiten.
Hast du das schon mal ausprobiert?

Vielleicht erklärt das dann, warum dieser Punkt ...
Zitat- der Filter fliegt nur raus wenn in einem gefilterten Formular in der Datenblattansicht in die Formularansicht wechselt und dort sortiert
...nicht ganz so wie von dir erwartet läuft.

Schönes WE!
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 15, 2011, 11:28:02
Zitat von: database am August 13, 2011, 11:42:32
Hallo,

verstehe ...

Ich möchte ja in gar keiner Weise deine Abeitsgewohnheiten kritisieren aber warum schaltet man zwischen Datenblattansicht und Formularansicht hin und her?

Datenblattansicht wird genutzt wenn man sich mehre Datensätzen anschauen/vergleichen will.
Formularansicht wird genutzt, wenn man sich nur einen Datensatz betrachtet bzw. anlegt

Zitat
ZitatFür mich gibt's da keine logische Erklärung, dass dieses Verhalten gewollt sein soll.

In Access 2007 gibt es doch die Möglichkeit ein 'Geteiltes Formular' zu verwenden.
So viel ich weiß ist es damit möglich nach allen Regeln der Kunst zu sortieren, Filtern und die Daten zu bearbeiten.
Hast du das schon mal ausprobiert?

ich habs mir mal angeschaut, aber auch keine Lösung, da es zu aufwendig ist alle Formular umzustellen und ich dort für die jeweilige Ansicht nur die Hälfte des Platzes habe

Zitat
Vielleicht erklärt das dann, warum dieser Punkt ...
Zitat- der Filter fliegt nur raus wenn in einem gefilterten Formular in der Datenblattansicht in die Formularansicht wechselt und dort sortiert
...nicht ganz so wie von dir erwartet läuft.

Schönes WE!

nö erkärt es nicht. So wie ich das Verhalten im Post #38 beschrieben habe, ergibt es für mich keinen Sinn. Entweder der Filter bliebt erhalten oder er fällt jedesmal raus.

Es ist ja ähnlich wie bei dem Menü Fenster, wo alle geöffneten Formulare angezigt werden. Diese funktioniert unter Access 2007 auch nicht mehr so wie es soll und deutet auf einen weiteren Bug hin.
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: database am August 15, 2011, 13:04:44
Hallo,

"...aber auch keine Lösung, da es zu aufwendig ist alle Formular umzustellen..."
Auf diesen Umstand habe ich versucht hinzuweisen.

"...Diese funktioniert unter Access 2007 auch nicht mehr so wie es soll ..."
Ich würde auch hier eher sagen - es funktioniert nicht so wie du es von 2003 her gewohnt warst.
Einen Bug würde ich persönlich - in Hinblick darauf, dass unterschiedliche Versionen verschiedene
Funktionalitäten bieten - weder in der einen noch in der anderen Sache sehen.

Aber wenn du mit der Begrifflichkeit 'Bug' leichter lebst  - dann soll's einer sein.  ;)

Wünsch' einen schönen Feiertag!  ;D
Titel: Re: Formular verliert nach Sortierung Filter
Beitrag von: frapu am August 17, 2011, 15:27:57
So kleines Update. Ich hab die Sortieren-Funktion noch soweit angepasst, dass diese auch bei Controls in Unterformularen funktioniert.

Public Function sbl_sort(typ As String)
    Dim cs As String
    cs = Screen.ActiveControl.ControlSource
    If Screen.ActiveControl.ControlType = acTextBox Then
        If InStr(1, cs, "=") > 0 Then Exit Function
        If Screen.ActiveForm.Name = Screen.ActiveControl.parent.Name Then
            Screen.ActiveForm.OrderBy = cs & "  " & typ
            Screen.ActiveForm.OrderByOn = True
        Else
            Screen.ActiveForm.ActiveControl.Form.OrderBy = cs & "  " & typ
            Screen.ActiveForm.ActiveControl.Form.OrderByOn = True
        End If
    End If
End Function