Neuigkeiten:

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

Mobiles Hauptmenü

Endlosformular mit Filter

Begonnen von GLZ, Januar 13, 2025, 09:04:01

⏪ vorheriges - nächstes ⏩

GLZ

hallo zusammen,
 
ich will in einem Endlosformular in die erste Zeile das Lehr ist und keinen Bezug hat, zum Filtern hernehmen

zum Beispiel
Eingabe ist 11
Artikelnummer "*" & 11 & "*" 

habe Sage100 im haus, und will so etwas ähnliches nachbauen

kann man so etwas Programmieren?

Gruß Gerhard

MzKlMu

Hallo,
in einem Endlosformular gibt es keine leeren Zeilen oben.
Du musst die leeren Felder zum Filtern im Formularkopf als ungebunden Felder anlegen.
Dann kannst Du das Endlosformular mit einem Button filtern.

Etwa so (VBA Code für den Button):
Me.Filter = "Artikelnummer Like '*" & Me.Suchfeld & "*'"
Me.FilterOn = True
Gruß Klaus

GLZ

Hallo,

habe es jetzt mit einem Endlosformular gemacht,
hier kann ich drüber ungebundene Textfelder machen für suche,
das geht gut aber nur mit dem ersten

ich will noch weiter Filter setzen

z.B.
Private Sub suche_Artikel_AfterUpdate()
Me.Filter = "Bezeichnung1 Like '*" & Me.suche_bezeichnung1 & "*'"
Me.Filter = "Artikelnummer Like '*" & Me.suche_Artikel & "*'"
Me.FilterOn = True

End Sub

aber es geht nicht beides in Kombination

kann mir jemand helfen

Gruß Gerhard
 
 

Bitsqueezer

Hallo,

Du kannst die Eigenschaft "Filter" nur einmal setzen, aber diese kann selbstverständlich viele Kriterien beinhalten. Filter ist zu sehen wie ein WHERE ohne das Wort WHERE, gleiche Kriterien.
Entsprechend sollte klar sein, daß man die Filterkriterien mit AND oder OR z.B. zu einem Gesamtstring vereinen kann. Ob AND oder OR hängt davon ab, was Du haben willst.

Auf meiner Downloadseite findest Du mit CCFilter auch eine fertige Komponente, die Du in eigene Formulare einbauen kannst. Demoformulare sind enthalten, der eigene Code ist minimal.

Gruß

Christian
 

GLZ

Hallo,

bei dir geht das sehr gut ;D

hab alles zu mir ein kopiert
- Daten Satz Herkunft eingestellt
- Steuerinhalte neu definiert
- Module und Klassenmodule

bekomme immer Fehler

Der Ausdruck gibt möglicherweise weder Namen eines Makros noch den Namen einer benutzerdefinierten Funktion noch Ereignisprozedur zurück

komme nicht weiter

Gruß Gerhard









Bitsqueezer

Hallo,

und wie soll man Dir nun ohne irgendeine Information zu dem, was Du gemacht hast, weiterhelfen?

"Steuerinhalte neu definiert" - meint was? Es gibt Steuerelemente (oder Controls), wenn Du die Filterfelder meinst, die benötigen zumindest keine Datenquelle, das erledigt die Filterklasse selbst.

Du könntest z.B. mal erwägen, eine Demodatenbank hochzuladen, mit ein paar Demodatensätzen.

Gruß

Christian

GLZ

Hallo Christian,

wie kann ich hier eine Demodatenbank hochladen???

Gruß Gerhard

MzKlMu

Hallo,
wenn Du auf Antwort klickst, hast Du unten einen Button "Attachments and other options". Hier drauf klicken.
Demodb bitte komprimieren/reparieren (Access Dienstprogramm) und dann noch Zippen. Das Zipfile kannst Du hier hochladen.
Gruß Klaus

GLZ

Hallo,

anbei habe ich meine Datei Hochgeladen,
vielleicht kann mir hier jemand helfen


Gruß Gerhard


Bitsqueezer

#9
Hallo,

die Filterklassen können auf verschiedene Weise genutzt werden.
Mit dem Popup-Filter werden die Filterfelder automatisch anhand des Formular-Recordsets erstellt.

Du hast Dich für die ältere Variante entschieden, dem eigenen Hinzufügen von Filterfeldern in das Formular. Wenn Du das verwenden willst, dann mußt Du die Filterfelder richtig benennen. Du hast einfach die Filterfelder so belassen, wie sie in der Originaldemo standen, also zum Beispiel "Filter_ID". In Deinem Recordset gibt es aber gar kein Feld "ID". Die Namen der Filterfelder müssen von Dir so eingestellt werden, daß sie den Namen der Recordset-Felder entsprechen. Also zum Beispiel "Filter_Artikelnummer".

Wenn Du alle Filterfelder passend zu den Feldnamen so eingestellt hast, funktioniert die Filterung in der Demodatenbank ohne Probleme.
Das gilt auch für die "Delete Filter"-Buttons, die dann z.B. so benannt sein müssen: "cmdDeleteFilter_Artikelnummer".

Falls noch nicht aufgefallen: Auf den Filterfeldern gibt es auch Funktionen mit der rechten Maustaste.

Gruß

Christian

GLZ

Hallo Christian,

danke für diese Hilfe, jetzt klappt es ganz gut

Gruß Gerhard

GLZ

Hallo zusammen,

wollte meinen Filter noch besser ausbauen.

aber das geht nicht so wie ich dachte.

im Formular FRM_Artikel habe ich einen Optionsbutton erstellt, dieser sollte mir das Formular Filtern aber hier ist ein Fehler.

außerdem wollte ich noch den angewählten Datensatz unten aktualisieren aber nicht aus den Steuerelementen,
dafür habe ich einen Button zum Speichen unten eingebaut um nach einer Aufforderung zurück speichern in die Tabelle

vielleicht kann mir jemand Helfen

Gruß Gerhard
 

MzKlMu

Hallo,
bitte genauer beschreiben.

Was soll der Optionsbutton denn machen, da ist ja nur Code hinterlegt der die MsgBox anzeigt.

Zitataber hier ist ein Fehler.
Solche Aussagen sind sinnlos, wenn man den Fehler nicht beschreibt.

Zitataußerdem wollte ich noch den angewählten Datensatz unten aktualisieren aber nicht aus den Steuerelementen,
dafür habe ich einen Button zum Speichen unten eingebaut um nach einer Aufforderung zurück speichern in die Tabelle
Das verstehe ich auch nicht. Was soll denn der Button machen, wenn Du hier auch nur die MsgGbox anzeigst.
Gruß Klaus

GLZ

Hallo Klaus,

die MsgBox habe ich nur als Hilfe für mich benutzt

der ober Butten Produktionsartikel sollte ein Filter auf IstFertigungsartikel legen


das zweite

der aktuelle Datensatz im Detailbereich sollte die Daten unten in den Textfelder bekommen (das funktioniert bereits, aber nur durch klicken auf auf die Artikelnummer)

beim Verlassen des aktuelle Datensatz soll die Aufforderung kommen Datensatz Speichen,
 bei Ja
Daten in die dazugehörigen Datensatz zurückschreiben
 bei nein
Datensatz unverändert

ich hoffe ich habe es dieses mal besser beschrieben

Gruß Gerhard


 

Bitsqueezer

Hallo,

ich habe Deine Demodatenbank mal ein wenig überarbeitet.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Optionsbuttons werden von der Filterklasse nicht unterstützt, aber Checkboxen - und das ist das, was Du hier eigentlich zum Filtern brauchst.

Ich habe Dir außerdem noch die Kombobox zur Filtertyp-Einstellung eingebaut sowie zusätzliche Komboboxen, die den Filtertyp je Filterfeld einstellen. Wird auch alles automatisch verwaltet, man muß sie nur richtig benennen.

Wunschgemäß habe ich Dir Deine beiden Felder unten zum Editieren und Speichern eingestellt, aber eigentlich kannst Du das komplett entfernen. Die Gesamtliste ist ohnehin editierbar, entsprechend kannst Du einfach alle Änderungen direkt in der Liste vornehmen. Per Default wird ohnehin automatisch gespeichert, wenn Du das Formular verläßt (oder auch beim Wechsel in ein Unterformular oder bei Klick auf einen Button außerhalb des Detailbereiches).

Du kannst, wenn Du willst, ein Form_BeforeUpdate hinzufügen und dort die Messagebox für die Nachfrage zum Speichern einbauen. Wenn die Antwort "Nein" lautet, setzt Du dort "Cancel=True" und der User verbleibt im Formular mit ungespeicherten Daten. Dann entweder mit "Ja" speichern oder mit ESC-Taste die Änderungen rückgängig. Das ist alles in Access schon drin, da muß man nichts selbst machen.

Statt des Buttons für die Ressourcenliste habe ich Dir diese als Unterformular eingebaut, so wird für jeden Artikel die Ressourcenliste angezeigt (die Namen solltest Du noch anpassen...).
Diese ist jetzt auch editierbar (das funktioniert, indem man die Felder der externen Tabelle per DLookup einbaut). Die externen Felder könntest Du auch einfach weglassen, denn man sieht ja in der Liste darüber, um welchen Artikel es geht.
Ein Formular sollte immer nur genau eine Tabelle bearbeiten.

Die Felder habe ich Dir umgebaut in ein Access-Layout, das macht die Arbeit mit den Feldern um einiges leichter, statt stundenlangem Verschiebe-"Vergnügen" passen sich die Felder jetzt automatisch an.
Ebenso mußt Du auf das Anchoring achten (rechte Maustaste auf dem Feld unter "Anker"). Das sollte im Allgemeinen auf "Oben links" eingestellt sein, je nach Einstellung kann es sonst passieren, daß sich die Felder übereinanderschieben.

Die Sprache in den Filterklassen ist per Default Englisch, im Init-Code in Deinem Formular habe ich die jetzt auf Deutsch eingestellt. Ebenso Rahmenfarbe und -breite, um zu zeigen, wie das funktioniert. Kannst Du Dir ja entsprechend anpassen.

Die Checkbox zum Filtern funktioniert etwas anders als die anderen Filterfelder: Angehakt heißt, zeige alle Zeilen, die auch das Feld angehakt haben, entsprechend bei nicht angehakt, ein dritter Klick setzt die Checkbox auf grau, was bedeutet, daß der Filter deaktiviert ist. Alternativ kannst Du aber auch rechts auf die Checkbox klicken und "Filter entfernen" klicken.

Gruß

Christian