Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formular über Kombinationsfelder filtern und sortieren

Begonnen von Cira, Februar 16, 2012, 11:49:51

⏪ vorheriges - nächstes ⏩

Cira

Hallo,

ich habe mir ein ungebundenes Formular erstellt mit:
einem Button "cmdTabelle", der ein Datenblatt "dblMitgliedsbeitrag" öffnen soll
und drei Kombinationsfeldern "cboJahr", "cboDienststelle" und "cboSortierung", die die Filterkriterien und das Sortierkriterium für dieses Datenblatt vorgeben

Code für den Button:
Private Sub cmdDatenblatt_Click()

On Error GoTo Err_cmdDatenblatt_Click



    Dim stDocName As String

    Dim stLinkCriteria As String

   

stDocName = "dblMitgliedsbeitrag"


stLinkCriteria = "Nz([jahr_id]=" & Me!cboJahr & ") AND Nz([dst_id]=" & Me!cboDienststelle & ")"

DoCmd.OpenForm stDocName, acFormDS, , stLinkCriteria

   

If cboSortierung Is Not Null Then

    Forms!dblMitgliedsbeitrag.Form.OrderBy = Me!cboSortierung

End If



Exit_cmdDatenblatt_Click:

    Exit Sub



Err_cmdDatenblatt_Click:

    MsgBox Err.Description

    Resume Exit_cmdDatenblatt_Click

End Sub


Meine Fragen dazu wären
1. Wie kann das Formular geöffnet werden, wenn ein Kombinationsfeld oder beide leer bleiben? bzw. wie kann ich ein "Alle" einfügen und dementsprechend dann Alles anzeigen lassen, also ohne Filter?!

2. cboSortierung hat als Datensatzherkunft eine Feldliste aus einer Abfrage (natürlich die Abfrage die auch als Datensatzherkunft für das Datenblatt dient). Da stehen im Kombinationsfeld als Auswahl aber die Feldnamen (dst_name, teil_nr,....) kann man diese auch anders benennen? Denn wie soll der Datenbankverwender wissen, was "dst_name" bedeutet?

Lieben Dank für die Hilfe im Voraus
Cira

DF6GL

Hallo,


Private Sub cmdDatenblatt_Click()

On Error GoTo Err_cmdDatenblatt_Click



   Dim stDocName As String

   Dim stLinkCriteria As String

   

stDocName = "dblMitgliedsbeitrag"

If Len(Me!Me!cboJahr)  > 0 Then stLinkCriteria = " And [jahr_id]=" & nz(Me!cboJahr,0)  
If Len(Me!cboDienststelle) >0 Then stLinkCriteria = stLinkCriteria & " AND dst_id=" & nz(Me!cboDienststelle,0)

If Len(stLinkCriteria) > 0 Then stLinkCriteria = mid (stLinkCriteria ,6)

DoCmd.OpenForm stDocName, acFormDS, , stLinkCriteria

 

If Len(Me!cboSortierung) >  0 Then
   Me.OrderBy = Me!cboSortierung
   Me.OrderByOn =True

End If



Exit_cmdDatenblatt_Click:

   Exit Sub



Err_cmdDatenblatt_Click:

   MsgBox Err.Description

   Resume Exit_cmdDatenblatt_Click

End Sub






2)

um eine zweispaltige Feldliste in ein Kombilistenfeld zu bekommen, könntest Du etwa diesen Code benutzen:



Private Sub cboSortierung _Enter()  'oder ein anderes auch geeignetes Ereignis
Dim tbl As dao.TableDef, fld As dao.Field, db As Database
Set db = CurrentDb

Set tbl = db.TableDefs("Tabelle1")
Me!cboSortierung.RowSource = ""

For Each fld In tbl.Fields
On error resume next
Me!cboSortierung.AddItem fld.Name & ";" & fld.Properties("caption")
Next


Set tbl = Nothing: Set db = Nothing
End Sub


Im Tabellenentwurf  gibst du im Feld "Beschriftung" bei jedem zur Anzeige vorgesehen  Feld jeweils einen verständlichen Namen ein.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo,
@Franz
ZitatcboSortierung hat als Datensatzherkunft eine Feldliste aus einer Abfrage
Da braucht's IMO nur ein Alias pro Feld in der Abfrage.

@cira
Also etwa so:
SELECT tbl.dst_name AS Dienststelle, ...
(tbl=Tabellenname)

hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

mhmm, ja, dann steht der Aliasname in der Kombiliste, bzw. -feld und der ist in der zu sortierenden Datenherkunft des Forms dort dann evtl. nicht zu finden....
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Cira

@Franz: Danke das mit den Filtern funktioniert super. Die Sortierung macht er aber leider nicht, zeigt auch keine Fehlermeldung. Ich dachte dass die Zuweisung (Me) vielleicht nicht passt, aber wenn ich Form!abfMitgliedsbeitrag.Form.OrderBy eingebe funktionierts ebenfalls nicht.
:-(

und das mit der Feldliste habe ich glaube ich nicht ganz gecheckt! Was muss bei dem Code alles ersetzt werden? "Tabelle1" sollte mich "abfMitgliedsbeitrag" ersetzt werden, oder?! Aber nur das einfügen funktioniert nicht. Es ist trotzdem nur eine Spalte im Kombifeld!




DF6GL

Halo,

das Kombifeld muss als Einstellung etwa:
Spaltenanzahl: 2
Spaltenbreiten: 0cm;3cm

aufweisen.

zudem zielt der Code auf eine Tabelle ab und nicht auf eine Abfrage.


Wie lautet der SQL-String der Abfrage?
Wie lautet die Datenherkunft des Forms?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo Franz,
Zitatmhmm, ja, dann steht der Aliasname in der Kombiliste, bzw. -feld und der ist in der zu sortierenden Datenherkunft des Forms dort dann evtl. nicht zu finden....
Touché; - dann doch besser die Werteliste zusammen bauen.
Oder das Feld doppelt in die Abfrage nehmen, einmal mit und einmal ohne Alias?
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

"doppelt" nützt auch nichts, dann erscheinen sowohl Original- wie auch Aliasname in EINER Spalte des Kombifeldes bei Einstellung "Feldliste".

Deswegen ja der ganze Aufwand...  ;)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Cira

Also ich hab die Probleme folgendermaßen gelöst:

1. Das mit den Aliasnamen war eine gute Idee. Habe im Abfrageentwurf in der Spalte bei "teil_nachname" einfach ein "Nachname: teil_nachname" eingetragen. Da für das zu öffnende Formular auch diese Abfrage als Datensatzherkunft dient, funktioniert das einwandfrei! Super

2. habe ich den Teil im VBA mit cboSortierung in den Ereignis-Code "Beim Öffnen" des zu öffnenden Forms verschoben und den Bezug vertauscht.
Funktioniert prima!!
Private Sub Form_Open(Cancel As Integer)
If Len(Forms!frmFiltereigenschaften!cboSortierung) > 0 Then
   Me.OrderBy = Forms!frmFiltereigenschaften!cboSortierung
   Me.OrderByOn = True
End If
End Sub


Danke für Eure Ideen

Beaker s.a.

Hallo Franz,
Zitat"doppelt" nützt auch nichts, dann erscheinen sowohl Original- wie auch Aliasname in EINER Spalte des Kombifeldes bei Einstellung "Feldliste".
Das wusste ich nicht. Hab's glaub ich auch noch nie verwendet.
Aber wenn's denn jetzt beim OP läuft, is ja gut.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

ja, er hat zufällig den "Sonderfall", dass die gleiche Abfrage für die Form-Datenherkunft und die Kombifeld-Datensatzherkunft verwendet wird.  ;)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access