Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Sortierung mit Zähler

Begonnen von linuxluder, Oktober 25, 2013, 10:27:38

⏪ vorheriges - nächstes ⏩

linuxluder

Hi,

ich habe in einem Endlosformular die 12 Monate. Beim Klick auf den jeweiligen Monat soll erst absteigend, beim nächsten Klick aufsteigend usw. sortiert werden.

Meine VBA hierfür lautet

Private Sub okt_Bezeichnungsfeld_Click()
   Dim strsql As String
   Dim a As Integer
   a = 1
   If a Mod 2 = 0 Then
   strsql = "SELECT lehrer.* FROM lehrer ORDER BY lehrer.okt ASC;"
   Else
   strsql = "SELECT lehrer.* FROM lehrer ORDER BY lehrer.okt DESC; "
   End If
   Me.RecordSource = strsql
End Sub


Leider wird die Variable a immer wieder auf 1 gesetzt. Mann könnte sie vermutlich in eine Hilfstabelle schreiben/lesen.

Wie löse ich das Problem am besten?

Vielen Dank
Jo

P.S.: Meine VBA-Kenntnisse sind realtiv gering!

bahasu

Hi,

der Teil
  Dim a As Integer  
  a = 1
stört hier.


1. im Modul deklarieren:
 Public a as integer        ' byte oder boolean wären auch verwendbar

2. Im Formular beim Ereignis "beim Öffnen" die Zeile hinzufügen:
  a = 1

Harald
Servus

linuxluder

Herzlichen DANK!!! Klappt perfekt!

linuxluder

#3
Ich habe doch noch ein Problem

Da ich nach den Werten in den Monaten Sep - Aug sortieren will, sieht mein Modul so aus:

Option Compare Database

Public a As Integer
Public b As Integer
Public c As Integer
Public d As Integer
Public e As Integer
Public f As Integer
Public g As Integer
Public h As Integer
Public i As Integer
Public j As Integer
Public k As Integer
Public l As Integer


Beim Formular habe ich unter "Bei Laden"  folgendes eingetragen
a=1;b=1;c=1;d=1;e=1;f=1;g=1;h=1;i=1;j=1;k=1;l=1
Ich bekomme jetzt immer den Fehler .... (siehe Anlage)


linuxluder

Habe mich vertan: steht natürlich bei "Beim Öffnen".

Geht aber trotztdem nicht?!

bahasu

Hi

Zitat von: linuxluder am Oktober 25, 2013, 16:22:04
a=1;b=1;c=1;d=1;e=1;f=1;g=1;h=1;i=1;j=1;k=1;l=1

kann es sein, dass Du von der Pascal-Programmierung kommst?

Auch wenn mir der Sinn noch nicht klar, sollte die obige Zeile aufgeteilt werden:
a=1
b=1
c=1
d=1
e=1
f=1
g=1
h=1
i=1
j=1
k=1
l=1


Du solltest die Fragen von Franz beantworten:
Was ist Dein Ziel?
Danach kann man den Weg versuchen zu gehen.

Harald
Servus

DF6GL

#7
Hallo,


ich denke mal, der "Code" steht direkt in der Zeile der "Beim Laden"- oder "Beim Öffnen"-Eigenschaft  anstelle in der entspr. Ereignisprozedur....


Es sollte halt so aussehen:
In der Eigenschaften-Zeile des" Beim-Laden"-Ereignissses:

[Ereignisprozedur]

und der dazugehörenden Prozedur-Code:


Private Sub Form_Load()
a=1
b=1
c=1
d=1
e=1
f=1
g=1
h=1
i=1
j=1
k=1
l=1
End Sub



Zur Ausgangsfrage:

Zitatich habe in einem Endlosformular die 12 Monate. Beim Klick auf den jeweiligen Monat soll erst absteigend, beim nächsten Klick aufsteigend usw. sortiert werden.


Was hat die Sortierung mit dem "jeweiligen" Monat zu tun?  Entweder wird die Datensätze aufsteigend oder absteigend bezgl. der Monatszahl (oder halt des Monatsnamens, dann aber alphanumerische Sortierung)  sortiert....


Soll beim Klick auf das (beim Endlosform auf irgendein) Monatsfeld ("MeinMonatsfeld")  abwechselnd sortiert werden, dann könnte das so realisiert werden:

Sub MeinMonatsfeld_Click()
If Me.Orderby = "MeinMonatsfeld Desc" Then
Me.Orderby = "MeinMonatsfeld Asc"
Else
Me.Orderby = "MeinMonatsfeld Desc"
End If
Me.OrderbyOn =true
End Sub

linuxluder

Hi, vielen Dank für eure Antworten. Der Fehler lag daran, dass ich die Variablen zum Laden beim Öffnen des Formulars nicht in das Modul kopierte. Jetzt klappt.
Wie ich jetzt gerade hier sehe, hätte ich mir das mit den 12 Variablen sparen können.

Aber bitte gestattet mir in diesem Zusammenhang noch eine Frage.

Ich lasse mir jeweis die Summe von drei Monaten in ein "neues" Formular-Feld schreiben.
Im Steuerelementinhalt schreibe ich =[sep]+[okt]+[nov]
Wie kann ich nun am einfachsten nach den Werten dieses Feldes sortieren?

DF6GL

Hallo,

irgendwie versteh ich nicht, was du vorhast...


Wenn Du im Form 4 Felder (entsprechend der Jahresquartale) hast und in denen jeweils die Summen aus den entspr. Monats(-beträgen) stehen,  was soll denn da sortiert werden?


linuxluder

Vielen Dank für deine Geduld.
Bei angehängtem Bild siehst du die drei Monate, Sep-Nov. Aus deren Werte errechnet sich das gelb markierte Feld.
Nun möchte ich, außer der Sortierung nach den Monaten, die ja nun klappt, auch nach diesem Feld auf- oder absteigend sortieren.

DF6GL

Hallo,

berechne die Quartalssummen in einer berechneten Abfrage (für das Formular) und sortiere nach diesen Feldern

linuxluder

Würde es mit VBA in dem gleichen Stil wie die Sortierung nach Monaten auch gehen. Wie ich das Formular mit eine Abfrage kombinieren soll, weiß ich leider nicht.

DF6GL

Hallo,

probier mal:

Sub MeinMonatsfeld_Click()
If Me.Orderby = "[sep]+[okt]+[nov] Desc" Then
Me.Orderby = "[sep]+[okt]+[nov] Asc"
Else
Me.Orderby = "[sep]+[okt]+[nov] Desc"
End If
Me.OrderbyOn =true
End Sub

linuxluder