Formularerstellung auf Basis einer Datenbank

Ich habe eine Access-Abfrage, die eine Tabelle mit folgenden Parametern ausgibt:
Autrag, Lieferung, angelegt am, Liefersperre, Status

Ich möchte nun in einem Formular mithilfe von Textfeldern, Bezeichnungsfeldern und Kontrollkästchen und einer Befehlsschaltfläche Daten selektieren.

Der Anwender sollte etwa in die Textfelder die Eingaben „Auftrag angelegt vom“, „Auftrag angelegt bis“ und Liefersperre ausblenden (durch Aktivieren des Kontrollkästchens" tätigen.

Anschließend soll durch Betätigen der Befehlsschaltfläche alle Daten aus der Grundtabelle ausgegeben werden, für die die eingegebenen Angaben zutreffen.

Meine Frage: Ist dieses Szenario ohne erhöhten Programmieraufwand realisierbar oder benötigt es hierfür fundierte Kenntnisse?

Danke für Eure Antworten

Schau dir mal die Beispieldatenbank „Suchen“ im DBWiki an:

http://www.dbwiki.net/wiki/Access_Beispieldatenbanken

Gruß
Reinhard Kraasch

Hallo Reinhard,

danke für den Tipp, das hilft mit echt weiter. Eine weitere Frage an dich:

Ich habe zwei Tabellen, die einige Spalten aufweisen, deren Inhalt fast identisch ist. Wie kann ich hierbei eine eindeutige Zuordnung treffen?

Bsp:

Tabelle A
Auftrag|Lieferung|Pickzahl|Status1|Sachnummer
88888|454545|6|erledigt|44534544654
88888|454545|6|erledigt|44534544654

Tabelle B
Auftrag|Lieferung|Pickzahl|Status2|Sachnummer
88888|454545|6|ausgelagert|44534544654
88888|454545|6|ausgelagert|44534544654

Zieltabelle:
Auftrag|Lieferung|Pickzahl|Status1|Status2|Sachnummer

88888|454545|6|erledigt|ausgelagert|44534544654
88888|454545|6|erledigt|ausgelagert|44534544654

So wie ich es jetzt habe, bekomme ich 4 statt 2 Ergebnisse, da die Zuweisung nicht eindeutig ist.
Mit Primärschlüsseln kann ich meiner Ansicht nach hier auch nicht arbeiten, da durch tägliche Aktualisierungen die Daten stets an einer anderen Stelle stehen / nicht mehr existieren.

Danke vorab für deine Hilfe.
Martin

Hier müsste man sich erst einmal fragen, ob das Tabellendesign so in Ordnung ist - sprich: Ob es wirklich sinnvoll ist, hier 2 Tabellen zu haben. Die andere Frage ist, wie diese identischen Zeilen zustande kommen - so etwas dürfte es eigentlich auch nicht geben - jede Tabelle sollte einen (per Definition eindeutigen) Primärschlüssel haben und darüber sollten dann auch die Tabellenverknüpfungen erfolgen.

Gruß
Reinhard Kraasch

Hallo,

das Filtern von Daten mittels Textfeldern und einer Befehlsschaltfläche kann durch eine Ereignisprozedur realisiert werden. Programmierkenntnisse sind hierfür erforderlich.

Gruß Horst

Hallo Husky,

aus deiner Frage wird nicht klar, ob du in Access die Abfragevorgaben in einem Userform machen und die Ergebnisse in einem Report ausgeben willst, oder ob du per Abfrage (Import) die Daten in eine Exceltabelle lädst und jetzt in Excel in einem Userform die Suchkriterien eingeben und dann die gefundenen Daten in einer Ergebnistabelle ausgeben möchtest.

Bei Userform innerhalb von Access kann ich leider nicht weiterhelfen, da ich nicht über das Programm verfüge bzw. mein Wissen bzgl. Access und speziell Makroprogrammierung auf dem Stand vor Access97 basiert.

In Excel kann man das per Userform umsetzen, es erfordert aber schon gute VBA-Kenntnisse, um die im Userform per Textfeld, Optionsfeldern, Checkboxen oder Auswahllisten gemachten Vorgaben auf die Tabellendaten anzuwenden und in einem Ergebnisblatt auszugeben.

Dabei ist die „optische“ Gestaltung des Userforms mit den erforderlichen Steuerelementen und Auswahldaten noch relativ einfach im VBA-Editor. Hier muss man „nur“ darauf achten, dass man für die Kriterien der einzelnen Spalten das jeweils optimale Steuerelement wählt. Ich persönlich bevorzuge hier z.B. List- oder Comboboxen gegenüber Rahmen mit Options-Schaltflächen oder Checkboxen, wenn mehr als 2 Elemente auswählbar sind.

Die Schwierigkeit liegt in der Auswertung der Steuerlemente des UF und die Umsetzung in Prüfroutinen zur Ermittlung der Treffer in den einzelnen Datensätzen. Hier kommst du ohne gute VBA-Kenntnisse nicht weiter. Es gibt aber auch Excel-Foren, in denen du Beispiele mit zum Teil komplexen Userformanwendungen findest. Diese bieten zumindest eine Basis, wie man so etwas umsetzen kann.

Ein Userform ist oft schön, jedoch solltest du prüfen, ob die Verwendung des Autofilters für deine Zwecke ausreichend ist. Speziell, wenn die Zahl der Spalten sich in Grenzen hält. Das kopieren von gefilterten Datensätzen in eine 2. Tabelle ist per VBA relativ problemlos, mit ein paar Konsistenzprüfungen ca. 20 Zeilen Code.

Gruß
Franz

Hallo,
leider brauchst Du hierfür ein bißchen Programmierkenntnisse wenn Du es sauber hinbekommen möchtest. Ansonsten würde ich einfach mit dem Formularbasierten Filter arbeiten. Das ist die einfachste Lösung.
Gruß
Thomas

Hallo Husky22,

sorry für die späte Antwort - zur Zeit arbeite ich so viel, dass ich für Wer-Weiss-Was eigentlich keine Zeit mehr habe.

Eine Abfrage mit Hilfe eines Formulars etwas variabler zu gestalten, ist nicht trivial - aber machbar auch für Anfänger! Man muss sich halt etwas intensiver mit dem Thema SQL beschäftigen, dann wird das schon!

Ich mache das normalerweise so:

  1. Beispielabfrage erstellen, in der die anzubietenden Filter benutzt werden.

  2. Die Abfrage in SQL-Ansicht ansehen und den SQL-Tect kopieren.

  3. Dieser SQL-Text kann nun im Formular erstellt werden - einfach die Filterbedingungen durch Einstellungen aus dem Formular ersetzen.

(Einfaches) Beispiel:
SELECT * FROM Tabellenname WHERE ID=1;

Hinter einem Button des Formulars könnte dann folgender Code stehen:

Private Sub myButton_Click()
Dim mySQL As String
mySQL=„SELECT * FROM Tabellenname WHERE ID=“
mySQL = mySQL & cboSelectID & „;“
Me.RecordSource = mySQL
Me.Requery
End Sub

Auf diese Art kann man auch sehr komplexe Abfragen aufbauen. Wenn man den Inhalt von mySQL „abgreift“ (z.B. mit Debug.Print), kann man das im Abfragen-Editor testen. Man muss natürlich auch daran denken, leere Bedingungen zu vermeiden (sonst gibt es eine Fehlermeldung)!

Man könnte das auch als Prozedur definieren und allen Ereignissen „On Change“ der Auswahlelemente auf dem Formular ausführen. Ich ziehe aber einen Button vor!

Liebe Grüße,
Kurt