Hallo Ihr!
Ich habe noch eine weitere Frage:
Ich möchte ein Formular generieren mit einem Kombinationsfeld, das aber auf dessen Auswahl entsprechend meine Daten aus der Abfrage filtert, so dass nur noch bestimmte weitere Daten in Frage kommen.
Bsp abfrage tabelle meier 2 hund hans
meier 3 katze jürgen
meier 4 vogel jürgen
wenn ich nach der 3.spalte im formular filtern könnte (und ich möchte keine datenblattansicht), so dass bei "vogel" auswahl nur noch "meier 4 vogel jürgen" in Frage kommt. (und bei dem nächsten Kombintationsfeld der 4.spalte nur Jürgen auszuwählen ist).
Ich hoffe, ihr habt das problem verstanden und könnt mir Tips geben?
Danke!!!!
Hallo,
vermutlich suchst Du dieses:
http://www.donkarl.com/?FAQ4.36
http://www.dbwiki.net/images/6/6f/AccSampleKombiAuswahl.zip
ja, das mag sein, nur leider verstehe ich davon kein wort.
ich weiss weder wo ich die kommandos eingeben soll, noch wie genau ich das mache.
Die Tabelle, die ich filtern will, stammt von einer Abfrage, aber von verschiedenen tabellen, natürlich.
Vielleicht kannst du mir das in verständlichen einzelnen Schritten mal erklären.
vielen dank!
Hallo,
wie stellst Du Dir das vor? Was ist für Dich "verständlich"? Wenn Du die Beschreibung von Donkarl nicht verstehst, dann kann ich Dir die auch nicht (hier im Forum) weiter erklären.
Ich rate Dir eher zu einem vorangehenden Durcharbeiten eines Tutorials oder Buches, wenn Du überhaupt ensthaft zum Ziel kommen willst und damit man überhaupt in der gleichen Sprache reden kann.
So "schnell mal in Access ein DB erstellen" ohne elementare Grundkenntnisse ("ich weiss weder wo ich die kommandos eingeben soll, noch wie genau ich das mache.") hat bis jetzt noch keine(r) geschafft.
Hallo,
Franz hat Recht, wenn du von den angemerkten Beispielen kein Wort verstehst, wird es ziemlich schwierig (aber mit Anstrengung natürlich machbar)
Ich habe mal ein kleines Beispiel gemacht, das vielleicht etwas einfacher ist, als das Beispiel aus dbwiki.
Versuche es Schritt für Schritt durchzuarbeiten u. gegebenfalls nachzufragen.
Gruß Oma
[Anhang gelöscht durch Administrator]
Liebe Oma,
danke, dass Du hilfst.
leider erscheint bei mir und der Auswahl Dropdown liste schon mehrfach der gleiche Begriff, weil es bei der abfrage öfter dann den gleichen begriff in der einen spalte gibt. Bei deinem Beispiel gibt es ja auch mehrere Kunden aus München. Wie kann ich die Auswahl so einstellen, dass sie nur die nichtübereinstimmenden begriffe zeigt?
Ich bin völlig am Verzweifeln. Dachte eigentlich, ich hätte das im Studium einigermaßen gelernt, aber sowas Komplexes übersteigt dann doch meine Fähigkeiten.
Kann ich das denn dann weiter problemlos hinkriegen, dass ich filtern kann? Dann ist wenigstens mein ausgedachtes Auswahl und Tabellensystem in Ordnung....
Vielen Dank für Eure Hilfe!
HA, das mit dem distinct habe ich sogar selber rausgefunden...
jetzt mache ich mich an die filter versuche...
danke für die beispieldb, ich komm bestimmt gleich mit mehr fragen :'(
Hallo,
ZitatIch bin völlig am Verzweifeln. Dachte eigentlich, ich hätte das im Studium einigermaßen gelernt, aber sowas Komplexes übersteigt dann doch meine Fähigkeiten.
um mal gehässig zu sein, so sehr komplex ist das Filtern von Datensätzen eigentlich nicht, eher eine übliche Standardaufgabe ;D
mal Spaß beiseite, mit ein bischen Wissen aus dem Studium kommt man bei der Entwicklung einer DB eben nicht zurecht (ich denke, dass war ja kein Informatikstudium)
Wissen über relationale Datenbanken, SQL und VBA und deren Zusammenwirken muss man erst mal zusammenbekommen.
Im Forum hat sich aus sehr praktisch erwiesen, wenn Anfänger (sorry, wenn ich dich so bezeichne) Ihre DB mit ein paar Musterdaten und den Aufgabenprofil ins Forum zu stellen.
Dann kann bei konkreten Fragen auch eine konkrete Hilfestellung in Form von Code o.a gegeben werden.
Gruß Oma
Hallo Oma,
deine Datenbank ist ja echt klasse.
Genau so etwas benötige ich auch noch, in meiner.... Bis dato habe ich mich um die Formularfilter gedrück. Aber das ist echt klasse. Also werde ich mich gleichmal selbst ranwagen. Ich habe dazu bestimmt ganze viele Fragen.
Meine erste Frage lautet:
1.Warum ist im Formular Kunden das Unterformular Kunden. Würde es nicht ausreichen ein formular zu führen? ich bin nicht faul oder so....aber ich möchte den Vorteil erkennen.
2. Beim Klicken auf Auswahl läuft das Ereignis/Befehl "DoCmd.OpenForm FormName:="KundenAuswahl".....Wieso wird das Formular nicht über den Standardbefehl doCmd.openForm "Form_KundenAuswahl...Wenn diesen Befehl eingebe kommt nämlich auch ein Fehler, welchen ich mir auch nicht erklären kann.
Du siehst ich bewege mich wirklich am Anfang...doch ich habe Riesenspass an der Entwicklung von solch "kleinen" Helfern....
Hallo Pahiti,
Zitat"DoCmd.OpenForm FormName:="KundenAuswahl".....
Das ist ein so genannter "benannter Parameter". Die sind hilfreich,
wenn es viele Parameter gibt, da brauch man
1. die ganzen "leeren" Kommas nicht, und
2. sich auch nicht um die Reihenfolge zu kümmern.
Ich verwende diese Schreibweise inzwischen durchgehend.
gruss ekkehard
Hallo Pahiti,
Zitat1.Warum ist im Formular Kunden das Unterformular Kunden
Diese Art der Gestaltung mache ich immer bei meinen Anwendungen.
Das Formular Kunden ist ein ungebundenes Formular, d.h. ein Formular ohne Datenherkunft, es dient lediglich zur Aufnahme des Unterformulars Kunden_UF. In diesem Formular befinden sich die Daten zur Ansicht, Erfassung und Änderung. Der Vorteil, ich kann die Daten zunächst in einer "Tabellenform" mit den wichtigsten Feldern einsehen. Ich kann dann horizontal scrollen , um alle Felder zu sehen und vertikal scrollen, um alle Datensätze zu sehen. Ich kann aber auch, wenn ich z.B alle Felder auf einem Blick benötige, die Ansicht ändern u. zu einer Einzelformulardarstellung wechseln. So kann ich beliebig zwischen Formular- oder Datenblattansicht wechseln.
Zusätzlich kann ich im ungebundenen Hauptformular eine Reihe von Buttons anbringen, um verschiedene Befehle zu realisieren.
So sind alle Formulare in meinen Anwendungen aufgebaut u. als Button kann man immer einheitlich Neu, Löschen, Auswahl.... usw erstellen.
2. Wie Ekkehard schon bemerkt hat, verfügen viele VBA-Funktionen und Methoden der Office-Objekte sogenannte "benannte Argumente".
Für ein Öffnen des Formulars für Mitarbeiter aus Berlin kann man schreiben:
DoCmd.OpenForm "frmMitarbeiter", , , "Wohnort='Berlin'" Hier siehst du, dass z.B. für OpenForm der Formularname als 1. Argument und eine Bedingung als Letztes Argument verwendet werden muss, gleichzeitig müssen für die weiteren zulässigen Bedingungen die Kommas mit angeführt werden.
Die Schreibweise mit benannte Argumente benutzt für die einelnen Argumente den Argumentnamen, so wird aus obigen Befehl:
DoCmd.OpenForm WhereCondition:="WohnOrt='Berlin'", FormName:="frmMitarbeiter"Man kann also auf die nichtbenutzten Argumente verzichten und die Reihenfolge (wie im Beispiel) beliebig vertauschen.
Gruß Oma
Hallo Oma,
danke für die ausführliche Erklärung.
Ich habe jetzt im Sql Filter erkannt, dass du die Objekte mit Me! ansprichts. Worin liegt eigentlich der Unterschied ob ich ein Objekt mit Me. oder me! anspreche. Bisher habe lediglich Eigenschaften mit Me. festgelegt. Wahrscheinlich gibt Me! einen Wert zurück. Lieg ich da richtig?
In der einen oder anderen Codierung, welche ich diesem Forum entnommen habe, stand ausserdem ein Nz vor den Objekten. Was hat es denn damit auf sich?
Hallo Pahiti,
Wegen . und ! schaust Du hier
http://www.donkarl.com?FAQ6.3 (http://www.donkarl.com?FAQ6.3)
Obwohl das teilweise immer noch,
oder wieder heiss diskutiert wird.
Wegen Nz schaust Du in die OH.
gruss ekkehard
Hallo,
Zitat von: oma am August 29, 2012, 22:38:53
Ich kann dann horizontal scrollen , um alle Felder zu sehen und vertikal scrollen, um alle Datensätze zu sehen. Ich kann aber auch, wenn ich z.B alle Felder auf einem Blick benötige, die Ansicht ändern u. zu einer Einzelformulardarstellung wechseln.
und noch eine Idee:
Die obigen Eigenschaften lassen sich durch den Einsatz von synchronisierten (http://www.donkarl.com?FAQ4.3 (http://www.donkarl.com?FAQ4.3)) Formularen kombinieren:
z.B. links die Tabellen-Darstellung mit wenigen Spalten (die zum raschen Erkennen dienen) und rechts die Formular-Darstellung mit allen Feldern (das bietet sich im Zeitalter der "ultrabreiten" Monitore geradezu an :D).
Durch Klicken auf einen Datensatz in der Tabellen-Darstellung sind die Daten im Formular anzeigbar.
Harald
Hallo,
ich habe das Formular und mein Unterformular soweit erstellt.
Bei Oma in der Db läuft mit Klicken auf den Button Details folgende Prozedur ab.
Private Sub btnDetails_Click()
Me!frm_Kunden_UF.SetFocus
If Me!frm_Kunden_UF.Form.CurrentView = 2 Then
DoCmd.RunCommand acCmdSubformFormView
Me!btnDetail.Caption = "Tabelle"
Else
DoCmd.RunCommand acCmdSubformDatasheetView
Me!btnDetail.Caption = "Detail"
End If
End Sub
Wie ihr seht hab ich lediglich die Formularnamen auf meine DB angepasst. Leider mekkert Acces beim Kommando
"DoCmd.RunCommand acCmdSubformFormView" und meldet das diese Ansicht nicht verfügbar wäre. Muss ich im Unterformular noch irgendetwas einstellen?
Und was bedeutet die Eigenschaft Me!frm_Kunden_UF.Form.CurrentView = 2?
Ich danke vorab schonmal.
Zitat von: pahiti78 am August 30, 2012, 18:21:39
Und was bedeutet die Eigenschaft Me!frm_Kunden_UF.Form.CurrentView = 2?
.currentview = 2 d.h. es liegt eine tabellarische Darstellung vor
.currentview = 1 d.h. es liegt eine Formular-Darstellung vor
Harald
Zitat von: pahiti78 am August 30, 2012, 18:21:39
Leider mekkert Acces beim Kommando
"DoCmd.RunCommand acCmdSubformFormView" und meldet das diese Ansicht nicht verfügbar wäre.
Hi,
ich setze mal voraus, dass der Name vom UFO korrekt ist.
Eine Möglichkeit, solch eine Fehlermeldung zu erhalten, ist, bei den Formulareigenschaften vom UFO "Formularansicht zulassen" auf nein zu stellen. Was ist bei Dir eingetragen?
Harald
Hallo Harald,
danke für deine beiden Antworten. Natürlich lag es der Einstellung im Unterformular... Es haut jetzt hin...Danke nochmals
Hallo Zusammen,
ich muss dieses Thema nochmal aufgreifen. Und zwar konnte ich den Filter setzen und nach einzelnen Feldern im Formular suchen. In einem Feld möchte ich allerdings, dass die Datenbank in zwei verschiedenen Spaleten sucht. Ich habe versucht dies mittelt der Anweisung "Oder" zu verknüpfen....haut aber nicht hin.
Unten ist meine Prozedur....
Ich hoffe, ihr habt ne Idee. Danke schonmal
Dim krit As String, strSQL As String
Private Sub AuswahlSQL()
krit = "": strSQL = ""
If Not IsNull(Me!Ort) Then krit = krit & " And AbsenderOrt or EmpfaengerOrt = '" & Me!Ort & "'"
strSQL = "SELECT * FROM tblKunden "
If krit <> "" Then strSQL = strSQL & "WHERE" & Mid(krit, 5)
End Sub
Hi,
Zitat von: pahiti78 am Oktober 02, 2012, 22:47:50
If Not IsNull(Me!Ort) Then krit = krit & " And AbsenderOrt or EmpfaengerOrt = '" & Me!Ort & "'"
If Not IsNull(Me!Ort) Then krit = krit & " And (AbsenderOrt = '" & Me!Ort & "' or EmpfaengerOrt = '" & Me!Ort & "')"
Habe auch Klammern eingebaut, da es ansonsten unter Umständen Probleme in der Kombination mit anderen Kriterien geben kann.
Harald
Hallo Harald,
haut wunderbar hin.
Danke