Neuigkeiten:

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

Mobiles Hauptmenü

Suche in Formularen

Begonnen von sven0071, September 07, 2016, 08:56:50

⏪ vorheriges - nächstes ⏩

sven0071

Guten Morgen zusammen,

zur Zeit absolviere ich ein Praktikum in einem Unternehmen.

Jetzt ist einer meiner Aufgaben hier: Ich soll ein Formular in Access erstellen, welches Suchfunktionen erhält.
Aus einem vorhandenen Datensatz soll zb. den Auftrag mit folgender Artikelnummer (12345) raussuchen.

Wie ich es gerne machen würde: Textfeld eingeben, welches auf die vorhandenen Daten zugreift (2 verschiedene Datenbanken).

Ich bin in Access nicht ganz so gut aufgestellt. Falls ihr eine Idee habt wie ich hier vorgehen sollte, schreibt mir ;)!!

Vielleicht sollte ich noch erwähnen, dass ich von SQL / VBA keine Ahnung habe - am besten eine Lösung die nicht hierauf basiert. Eine detaillierte Anleitung wäre sehr gut.

Ps.: Datenbank 1 => gibt Bestellungsnummer, Bestellungsart, Kunde, Kundennummer, Kundenadresse usw an

Datenbank 2 => gibt Bestellungsnummer, Positionen der Bestellung, Menge usw. an


Josef P.

Hallo!

Verwendest du wirklich 2 Datenbanken oder meinst du 2 Tabellen?

Ich gehe einmal davon aus, dass die Daten in 2 Tabellen gespeichert sind.
1. Tabelle = Bestellkopf
2. Tabelle = Bestellpostitionen

Du willst nun vermutlich mittels Suchfeldern die Datensätze herausfinden (anzeigen lassen), die die Suchbedingungen erfüllen.
Welche Daten würdest du anzeigen wollen? Nur die Daten vom Bestellkopf (auch wenn in den Positionen gesucht wird) oder sollen die Daten der Bestellpositionen (eventuell inkl. den dazugehörenden Kopfdaten) angezeigt werden?

ZitatVielleicht sollte ich noch erwähnen, dass ich von SQL / VBA keine Ahnung habe - am besten eine Lösung die nicht hierauf basiert.
Ich hätte einen anderen Vorschlag: was wäre, wenn du dich in die Grundlagen von SQL und VBA einarbeitest?
... Es könnte sein, dass der Hintergrund der Aufgabenstellung für einen Praktikanten, das Lernen von "Handwerkszeug" ist. ;)

Access hat zwar in den Formularen auch eine eingebaute Möglichkeit die Daten zu Filtern, ich vermute aber, dass das eventuell nicht deiner Vorstellung vom Formularaufbau entspricht.

Weil es sogar thematisch (wegen Bestellung) passt:
Ich erstellte einmal ein Video über den Einsatz des ACLib FilterForm Wizard. Vielleicht zeigt das Video, ob das genau das ist, was du machen willst.
Video: ACLib-FilterForm-Wizard: Filter-Formular erstellen
Gleich als Vorwarnung: dabei wird nicht zu wenig VBA verwendet. ;)

mfg
Josef


sven0071

Hallo Josef,

ja genau ich meinte 2 Tabellen ;)!

Angezeigt werden sollte: Bestellkopf und Bestellpositionen.

Die Suche sollte mit Hilfe von mehreren Parameter durchgeführt werden. (Kundennummer/Auftragsnummer..)

Es sollte dann nachher so aussehen, das ein User das Formular öffnet und durch die Eingabe der Parameter in die Textfelder die gewünschten Daten erhält.

Es sollte genau so aussehen wie in deinem beigefügten Video! :) Gibt es hierzu noch ein Video wie das Formular erstellt wurde bzw. wie die Button "Filter anwenden" erstellt/verknüpft wurden?

Ansonsten erstmal vielen Dank.





Josef P.

#3
Hallo!

ZitatGibt es hierzu noch ein Video wie das Formular erstellt wurde
Das Hauptformular mit den Steuerelementen für die Filterwerte ist ein ungebundenes Formular.
Die Textfelder zum Eintragen der Filterelemente sind ebenso ungebundene Steuerelemente.

Als Unterformular könntest du ein Formular erstellen, das als Datenquelle eine Abfrage nutzt, in der beide Tabellen enthalten und passend verknüpft sind. Ob du das Unterformular in einer Endlosansicht oder in Datenblattansicht darstellst, ist egal.

.. also nichts Besonderes sondern ganz normal erstelle Access-Formulare.

Du kannst die Steuerelemente für die Filterwerte auch vom Assistenten erstellen lassen, wenn du im Formular die Checkbox "Neu" auf True setzt.

Zitatwie die Button "Filter anwenden" erstellt/verknüpft wurden?
Der Name des CommandButton für "Filter anwenden" ist im Add-In-Formular beim DropDown mit der Beschriftung "CommandButton 'Filter anwenden'" auszuwählen.

Die Vorgehensweise ist in Kurzform im Wiki-Beitrag ACLib-FilterForm-Wizard beschrieben.

Falls du das Access-Add-In ausprobieren willst, probiere es bitte zuerst in einer Test-Anwendung (eine auf das Minimum reduzierte Kopie deiner Anwendung) aus, dann kannst du diese (mit anonymisierten Daten) auch zum Download zur Verfügung stellen, falls du Schwierigkeiten hast.
Anm.: Meine Add-Ins richten sich nicht unbedingt an Anfänger, die noch nie mit VBA gearbeitet haben. Das Einfügen des Codes über den Wizard sollte zwar auch ohne VBA-Kenntnisse funktionieren, aber wenn du später etwas anpassen willst, wirst du den Code im Formular zumindest ein wenig verstehen müssen.

mfg
Josef

sven0071

Hallo Josef,

ich werde es jetzt mal mit deinem Access-Add-In an einer Test-Anwendung ausprobieren. Ich werde mich später nochmal melden ob es funktioniert hat.

Danke nochmal!!

MFG

sven0071

Ich lade mal eben mein Test hier hoch bevor ich das Add-on anwende.

Ich habe dazu noch eine kurze Frage: Der CommandButton- muss der als "Formulardaten aktualisieren" erstellt werden??? ???

Kann das leider nicht hierhochladen, deshalb der Link : http://workupload.com/file/Rej2GQ7

Josef P.

Du musst nur den Button einfügen. Kein Makro oder Ereigniscode damit verbinden. Das erledigt das Add-In.

Ich sah mir deine Beispiel-DB an.
Zum Ausprobieren des Add-Ins kannst du das Formular "Abfrage2" verwenden.
Bei der Auswahl "UseFilter-Methode" wählst du "aktuelles Formular filtern".

BTW:
Das Datenmodell ist ein "Excel-Datenmodell". ;)

mfg
Josef



sven0071

#7
Ich habe es ausprobiert. Jedoch kam bei mir ein Debug-Fehler.

Laufzeitfehler ´57017´
Ereignisbehandlungsroutine ist ungültig.

Diese Zeile im Code ist makiert gelb:  .AddCodeToEventProcedure "Click", UseFilterCtlName, TempCode

und das : Private Function UseFilter(ByVal NewFilterString As String)


Ich habe es nochmal hochgeladen mit dem Fehler: http://workupload.com/file/jma8UfA

Josef P.

Welcher Werte wird bei UseFilterCtlName angezeigt, wenn du die Maus darüber bewegst?
(Oder im Direktbereich ?UseFilterCtlName eingeben und mit Return bestätigen.)
Kann es sein, dass es das Steuerelement nicht gibt?

Oder enthält der Name eventuell ein Leerzeichen?
(Das bitte generell bei Steuerelementnamen vermeiden.)

mfg
Josef

sven0071

Wo finde ich :  UseFilterCtlName ?

Also die Namen für Steuerelemente sind alle ohne Leerzeichen geschrieben.

sven0071


Josef P.

Das Steuerelement mit dem Namen "Filter anwenden" enthält ein Leerzeichen.
Wenn du den Namen z. B. auf FilterAnwenden änderst, den Code im Formular (bis auf die Option-Zeilen am Anfang) entfernst und noch einmal mit dem Add-In einfügst, sollte es funktionieren.

sven0071

Sieht schonmal nicht schlecht aus. Fehler kommen nicht mehr. Nur wenn ich auf den Button: "Filter ausführen" klicke passiert nichts. Nur auf dem Button "Filter löschen"- hier löscht er die Eingaben.

Hier die aktuelle Datei:

http://workupload.com/file/Us5YEZu

Danke nochmals- ohne Ihre Hilfe wäre ich niemals so weit gekommen ;)!!

Josef P.

Du hasst vermutlich bei der Auswahl von "UseFilter-Methode" den Eintrag "auskommentierten Beispiel-Code einfügen" gewählt.
=>
Wechsle zum Code des Formulars und kommentiere die Zeilen vom With-Block aus.

BTW: in der Prozedur InitFilterControlManager wird AutoFilterOn auf True gestellt. Damit benötigst du eigentlich den "Filter anwenden"-Button nicht. Falls du lieber mittels Button-Klick das Filtern auslösen willst, AutoFilterOn auf false stellen.

sven0071

Fehler gefunden - es funktioniert jetzt! Ich hatte das Häckchen nicht bei "aktuelles Formular filtern" gesetzt.

Es funktioniert jetzt einwandfrei!! Jetzt muss ich das erlernte von heute nur noch an der "richtigen" Datenbank anwenden.

Ich hoffe das klappt genau so gut!! DANKE nochmal für die super Hilfe!!!