Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Access Endlosformular

Empfohlene Antworten

Veröffentlicht

Ich möchte gerne ein sog. Endlosformular anlegen. Die Datenfelder sollen am besten mit SQL Werte zugewiesen bekommen.

Ich habe mit Access nicht so viel Erfahrung. Was ich nicht weiß, ist, wie ich dne Textfeldern des Formulares werte zuweise, dass die z. B alle Datensätze anzeigen.

Die SQL-Abfrage soll später eingeschränkt werden. Wäre schön, wenn der Benutzer das mittels Eingabefeldern oder Sonstwie machen könnte.

Ich möchte gerne ein sog. Endlosformular anlegen. Die Datenfelder sollen am besten mit SQL Werte zugewiesen bekommen.

Ich habe mit Access nicht so viel Erfahrung. Was ich nicht weiß, ist, wie ich dne Textfeldern des Formulares werte zuweise, dass die z. B alle Datensätze anzeigen.

Die SQL-Abfrage soll später eingeschränkt werden. Wäre schön, wenn der Benutzer das mittels Eingabefeldern oder Sonstwie machen könnte.

Moin,

am einfachsten geht es, wenn du dir die Daten mit einer Abfrage holst und diese dann als Datenquelle des Endlosformulars benutzt,

hth

Reinhold

Moin,

natürlich kannst du anhand von Formular eingaben einen Filter setzen, also im Prinzip zur Laufzeit, z.B. im Ereignis beim Aktualisieren der Suchfelder, daraus einen Filter generieren. Also prinzipiell etwa so (wie immer ungetestet),


...

Call FilterSetzen


Sub FilterSetzen

    Me.Filter = ""

    if Me!SuchKundennr <> "" then

        Me.Filter = "Kundennr = " & Me!SuchKundennr 

    end if

    if Me!SuchKundenname <> "" then

        if Me.Filter <> "" then

            Me.Filter = Me.Filter & " and "

        end if

        Me.Filter = Me.Filter & "Name like '*" & Me!SuchKundenname & "*'"

    end if

    Me.FilterOn = true

End Sub

  • Autor

In der Schule habe ich gesagt bekommen, dass Assistenten zwar nicht falsch, aber nicht gut sind. Aber das Endlosformular habe ich bisher nur mit dem Assistenten hinbekommen.

Würdest du mir empfehlen, dafür den Assistenten zu nehmen oder es per Hand zu machen? So schwer kann das doch nicht sein, oder? Falls letzteres: Kannst du mir sagen wie das geht?

Moin,

In der Schule habe ich gesagt bekommen, dass Assistenten zwar nicht falsch, aber nicht gut sind.

Ach? Dazu musst den entsprechenden Lehrer befragen, der so etwas unterrichtet ...

Aber das Endlosformular habe ich bisher nur mit dem Assistenten hinbekommen.

Warum auch nicht? Ich mache genau das seit mindestens 15 Jahren mit dem Assistent.

Würdest du mir empfehlen, dafür den Assistenten zu nehmen oder es per Hand zu machen? So schwer kann das doch nicht sein, oder? Falls letzteres: Kannst du mir sagen wie das geht?

Vorschlag: Mach es mit dem Assistent und schau dir dann an, was der so alles an Einstellungen vorgenommen hat. Wenn du dann beim nächsten mal die gleichen Einstellungen vornimmst hast du bestimmt ein 1a-Endlosformular.

hth

Reinhold

  • Autor

Danke, das Formular steht in einer ersten Version. Nun muss ich die Filter festlegen. Ich habe nicht so ganz verstanden, wie ich dein Script oben einbinden muss. Ich habe es als Sub im Textfeld. Den Call habe ich als "after Update".

Aber wie bekomme ich das Eingabefeld mit der Abfrage verknüpft?

Danke, das Formular steht in einer ersten Version. Nun muss ich die Filter festlegen. Ich habe nicht so ganz verstanden, wie ich dein Script oben einbinden muss. Ich habe es als Sub im Textfeld. Den Call habe ich als "after Update".

Aber wie bekomme ich das Eingabefeld mit der Abfrage verknüpft?

im "After Update" der Suchfelder, in meinem Beispiel heißen sie SuchKundennr und SuchKundenname, schreibst du jeweils


Sub SuchKundennr_AfterUpdate

       Call FilterSetzen

End Sub

Und irgendwo in den Ereignisprozeduren oder ggf auch einem Modul:

Sub FilterSetzen

    Me.Filter = ""

    if Me!SuchKundennr <> "" then

        Me.Filter = "Kundennr = " & Me!SuchKundennr 

    end if

    if Me!SuchKundenname <> "" then

        if Me.Filter <> "" then

            Me.Filter = Me.Filter & " and "

        end if

        Me.Filter = Me.Filter & "Name like '*" & Me!SuchKundenname & "*'"

    end if

    Me.FilterOn = true

End Sub

hth

Reinhold

  • Autor

Ich habe eine Abfrage, die eine Tabelle ungefiltert anzeigt.

das Textfeld heißt Text64

Ich hoffe, ich habe den Code richtig an miene bedürfnisse angepasst.. So geht es aber nicht.

Private Sub Text64_AfterUpdate()

Call FilterSetzen

Sub FilterSetzen()

    Me.Filter = ""

    If Me!Text64 <> "" Then

        Me.Filter = "Kontonummer = " & Me!Text64

    End If

    Me.FilterOn = True

End Sub

Moin,

Ich habe eine Abfrage, die eine Tabelle ungefiltert anzeigt.

das Textfeld heißt Text64

Ich hoffe, ich habe den Code richtig an miene bedürfnisse angepasst..

jo, sieht ganz gut aus, vorausgesetzt der zu vergleichende Inhalt steht in einer Tabellenspalte namens Kontonummer.

So geht es aber nicht.

Hältst du das für eine hinreichende Fehlerbeschreibung?

BTW: ich benutze diesen Mechanismus in jeweils abgewandelter Form schon ewig und klappt prima.

Grüße

Reinhold

Moin,

vielleicht sowieso besser so:


    if Me.Filter <> "" then

        Me.FilterOn = True

    else

        Me.FilterOn = False

    end if

aber ob das dein Problem behebt weiß ich nicht. Diesen Fehler hatte ich AFAIR noch nie.

hth

Reinhold

  • Autor
Moin,


    if Me.Filter <> "" then

        Me.FilterOn = True

    else

        Me.FilterOn = False

    end if

Ich habe vor FilterOn = True noch
Me.Filter = "Kontonummer = " & Me!Text64

gesetzt. Ich hoffe, das ist die richtige Stelle. Die Fehlermeldung kommt immer noch. Kann das sein, dass ich den Filter in der Syntax falsch setze? Ich möchte den erstmal so haben, dass man die beginnenden Ziffern der Kontonummern eingibt und danach gefiltert wird (Muster: 02 zeigt alle Konten mit 02xxxxx an)

Me.Filter = "Kontonummer = " & Me!Text64
Ich hoffe, das ist die richtige Stelle. Die Fehlermeldung kommt immer noch. Kann das sein, dass ich den Filter in der Syntax falsch setze? Ich möchte den erstmal so haben, dass man die beginnenden Ziffern der Kontonummern eingibt und danach gefiltert wird (Muster: 02 zeigt alle Konten mit 02xxxxx an)
Moin, ja das ist definitiv die richtige Stelle. Aber deinem Beispiel entnehme ich, dass Kontonummer bei dir wohl eher ein Textfeld ist? :confused::confused: Dann meinst du wahrscheinlich:
Me.Filter like "Kontonummer = '" & Me!Text64 & "%'"

Bitte beachte die einfachen Anführungszeichen.

hth

Reinhold

Moin,

Kann man Spalten die [*Periode*] heißen addieren?

solange sie Zahlen enthalten schon.

Reinhold

Nein. Allerdings kann man sie ggf. zählen, falls du das meinst.

Ich habe folgendes Problem: Ich habe SollPeriode01...SollPeriode14 Diese muss ich zusammenaddieren. Wie bekomme ich das am besten hin?

select SollPeriode01 + SollPeriode02 + SollPeriode03 + SollPeriode04 + SollPeriode05 + SollPeriode06 + SollPeriode07 + SollPeriode08 + SollPeriode09 + SollPeriode10 + SollPeriode11 + SollPeriode12 + SollPeriode13 + SollPeriode14 as Sollperiodensumme from knurpsel

  • Autor

Vielen Dank, das hat mich schon weiter gefragt!!

Auf zum nächsten Problem :-)

Ich möchte eine Auflistung über die letzten 5 Jahre machen. Kann man bei den Filterkriterien auch das aktuelle Jahr als Variable oder Konstante einfügen?

Nun habe ich ja eine "Spalte" mit Textboxen pro Jahr der letzten 5 Jahre. Meine Logik ist, dass jedes Spalte nach einem anderen Jahr gefiltert werden muss. Kann man das in einem Jahr machen, oder muss man jeweils eine Abfrage erstellen?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.