Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Problem mit statischer Variable





Frage

Hallo zusammen, Ich habe ein Formular erstellt welches tabellarisch gängige Informationen über Mitarbeiter (Lohn+Gehalt) darstellt. Über den einzelnen Tabellenspalten (Name, PrNr.) ist jeweils ein zugehöriger Button definiert um die Tabelle entsprechend zu sortieren. Ich möchte beim einmaligen klicken aufsteigend sortieren und beim zweiten- mal ABSTEIGEND sortieren. Dieser Status mittels Wahr für AUF und Falsch für ABsteigend istin der Boolean Variable "flag" gespeichert. Aber jedesmal, wenn die Ereignisprozedur aufgerufen wird ist "flag" stets mit Falsch initialisiert obwohl "flag" statisch ist, und so sich doch seinen Status merken müsste! Sub SortierenNach(feld As String) Dim SortBegriff As String Static flag As Boolean SortBegriff = "[Mitarbeiter_BeAbzüge]![" & feld & "]" If flag = True Then ' Aufsteigend sortieren SortBegriff = SortBegriff & " ASC" flag = False Else ' Absteigend sortieren SortBegriff = SortBegriff & " DESC" flag = True End If Me.OrderByOn = True Me.OrderBy = SortBegriff ' Formular sortieren End End Sub Für eure Hilfe wäre ich sehr sehr dankbar! MfG, Sebastian

Antwort 1 von Phantom_Fies

Die Static-Anweisung kannst du in dem Zusammenhang getrost vergessen. Sie wird nur verwendet, um prozedurübergreifend einen Wert zu sichern. Da sich bei dir aber alles in einer Sub abspielt, kannst du dir die Anweisung schenken. Außerdem, wie soll eine Variable einen Wert behalten, wenn du ihn doch ständig selber änderst?

Warum machst du's dir nicht einfach und baust einfach zwei Buttons ein, einen für aufsteigend und einen für absteigend Sortieren? Dann kann der Benutzer auch wechseln, wie er lustig ist.



Antwort 2 von Nanuk

Hi Sebastian,

woher weißt Du, dass Dein flag immer auf False gesetzt ist?? Lässt Du es irgendwo ausgeben oder funktioniert einfach nur die Sortierung nicht???

Im zweiten Fall stellt sich die Frage, wo Du Deiner Funktion den Wert für die Variable "feld" übergibst?

Im ersten Fall wüsste ich nicht weiter, ich habe Dein Beispiel mal vereinfacht aufgenommen und dabei festgestellt, dass es ohne Schwierigkeiten funktioniert.

Das einzige, was mir dazu noch einfällt, ist die Frage, bei welcher Aktion die Funktion aufgerufen wird.

Gruß

Nanuk

Antwort 3 von SebastianE

Hallo Nanuk!

Die Prozedur Sortierennach ist direkt
an das Formular (Mitarbeiter_BeAbzüge) gekoppelt.

Wenn ich
im Formular (Entwurfsansicht) einen
Rechtsklick (Eigenschaften) auf den Button mache (z.B. "Name") ist "Sortierennach" an das Ereignis

"Beim Klicken" gekoppelt

=Sortierennach("EPNAME")

EPNAME ist das Argument welches
in der Prozedur als Variable
"feld" übergeben wird.

Es muss doch irgendwie möglich sein
auch ohne lästigen "Button_Click_Name Code" dieses Feature (einmal klicken Aufsteigend, zweimal klicken Absteigend sortieren) zu realisieren!

PS: Es ist wirklich genial wie schnell
man hier Hilfe bekommt. Ihr seit Spitze!

:-)


Antwort 4 von JohnnyLoser

Hi Sebastian,

hier zwei Möglichkeiten:

1. Entferne "Static flag As Boolean". Erstelle ein Modul und füge im Deklarationsbereich die Zeile

Public flag As Boolean

ein.

2. Vergiß "flag" ganz und ersetze die Zeile

If flag = True Then

durch

If Right(Me.OrderBy, 3) = "ASC" Then
...
Else
...
End If

Gruß

Johnny

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: