Supportnet / Forum / Datenbanken
mehrfach Auswahl?!
Frage
Hallo zusammen.
Ich muss für meinen Chef eine Datenbank erstellen ...eine ist immer die Doofe :) Ich komm aber gleich zu Beginn nicht weiter:
Nehmen wir an wir haben verschiedene Artikel in einer Datenbank und ordnen sie je einer Kategorie zu. Z.B. Kategorie „Einräder“, „Zweiräder“, „Dreiräder“, oder „Vierräder“. Ich möchte nun erreichen dass man über ein Formular frei auswählen kann, welche und wie viele Kategorien angezeigt werden sollen:
Also zeige mir beispielsweise alle Artikel in Einräder und Dreiräder aber nicht aus den restlichen Kategorien. Und dann per Button in ein Anzeigeformular kommt in dem die Artikel aufgelistet werden.
Das Schwierige: es können nachträglich noch andere Kategorien hinzukommen. Das Alles muss also so flexibel sein, dass auch Kategorien, die später hinzugefügt werden angezeigt und ausgewählt werden können ("Fünfräder", "Sechsräder"...etc.).
Gibt es hier jemanden, der sich mit sowas auskennt?
Hiiiiilfe!
liebe Grüße
Antwort 1 von firefox
Du mußt eine Suchmaske erstellen, mit der du die Parameter abfragst (in dem Fall eine Listbox mit Mehrfachauswahl) und anschließend die Datenherkunft zusammenstellst.
Je nach Fähigkeit geht das mit VBA oder Filtern. Ich würde eine VBA Methode vorziehen, also SQL Statemant zusammenbauen und Form.Recordsource setzten...
Hoffe das ist zumindest ein Anfang für Dich?!
Je nach Fähigkeit geht das mit VBA oder Filtern. Ich würde eine VBA Methode vorziehen, also SQL Statemant zusammenbauen und Form.Recordsource setzten...
Hoffe das ist zumindest ein Anfang für Dich?!
Antwort 2 von kleineBiene
Hi!
Dankeschön erstmal , ...hmmm ....
gibts dafür aber vielleicht auch einen Blondienen-Guide?
lg
Dankeschön erstmal , ...hmmm ....
gibts dafür aber vielleicht auch einen Blondienen-Guide?
lg
Antwort 3 von firefox
Zitat:
Blondienen-Guide?
Blondienen-Guide?
Ich könnte dir eine Beispiellösung hier reintippen, allein dann haut mir mein Chef auf die Finger warum ich anderen Leute Probleme löse ... ;)
Da ich leider nicht weiß in wie weit deine Vorkenntnisse reichen (VBA Blondie/bekannt/profi?), wäre es hiflreich wenn du einfach mal ein Forumlar aufbaust und dann präzise Fragen stellst wo du nicht weiter kommst, dann kann man meist am besten helfen.
Was soll den angezeigt werden? Eine Liste mit Datensätzen?
Als Anfang:
Du erstellst ein Endlosformular in dem du im Formularkopf eine Listbox erstellst der du bei Eigenschaften -> Daten -> Datensatzherkunft einen Wert ähnlich wie
select Kategorie from TabelleKategorie group by kategorie
erstellst (kann man auch mit dem Designer machen).
Bei der Listbox noch Mehrfachauswahl bei den Eigenschaften -> Andere einstellen und schon hast du eine Auswahl erschaffen.
Jetzt musst du sagen in wie weit dir das hilft oder unverständlich ist.
Ansonsten mein Stundenlohn liegt bei ... :-D
Antwort 4 von kleineBiene
Hi du!
Oje ich glaub nicht dass ich das zahlen könnte :)
Aber ich bin weiter:
OK, ich habe ein Listenfeld in einem Formular (FSuchen), dass mir jetzt meine Kategorien gruppiert anzeigt und dass ich auch mehrfach auswählen kann. Soweit schon einmal nicht schlecht - Dann habe ich ein weiteres Formular mit einem zweiten Listenfeld in dem alle Artikel mit allen Attributen angezeigt werden (FProjekte).
Was mir jetzt noch fehlt ist ein Button, der sagt: Wenn ich angeklickt werde, öffne ich das Formular (FProjekte) und suche (und zeige an) in der großen Liste alle Artikel die mit den angewählten Werten in der Liste auf (FSuchen) übereinstimmen.
Wie bekomme ich das jetzt noch gebacken? Dann hätte ich es ja schon geaschafft *freu*
Viele Grüße von hier ...
dein DAU
Oje ich glaub nicht dass ich das zahlen könnte :)
Aber ich bin weiter:
OK, ich habe ein Listenfeld in einem Formular (FSuchen), dass mir jetzt meine Kategorien gruppiert anzeigt und dass ich auch mehrfach auswählen kann. Soweit schon einmal nicht schlecht - Dann habe ich ein weiteres Formular mit einem zweiten Listenfeld in dem alle Artikel mit allen Attributen angezeigt werden (FProjekte).
Was mir jetzt noch fehlt ist ein Button, der sagt: Wenn ich angeklickt werde, öffne ich das Formular (FProjekte) und suche (und zeige an) in der großen Liste alle Artikel die mit den angewählten Werten in der Liste auf (FSuchen) übereinstimmen.
Wie bekomme ich das jetzt noch gebacken? Dann hätte ich es ja schon geaschafft *freu*
Viele Grüße von hier ...
dein DAU
Antwort 5 von firefox
Na na DAU brauchst du dich nicht nennen, hat jeder mal angefangen und dafür bist du ja schon recht weit.
Frage vorweg:
Warum hast du zwei Formulare in gebrauch? So wie ich das sehe ist dann auf dem einen nur eine Listbox mit der Vorauswahl - könnte man auch in ein Form packen, oder?!
Der Code deines Buttons sollte ungefähr so aussehen:
Damit könntest du die Datenherkunft bei jedem Klick auf dem Formular entsprechend anpassen. Wenn es denn unbedingt auf einem anderen Formular geschehen soll mußt du den SQLString eben beim öffnen mit übergeben...
Viel Erfolg soweit.
Frage vorweg:
Warum hast du zwei Formulare in gebrauch? So wie ich das sehe ist dann auf dem einen nur eine Listbox mit der Vorauswahl - könnte man auch in ein Form packen, oder?!
Der Code deines Buttons sollte ungefähr so aussehen:
Private Sub cmdFill_Click()
Dim i As Integer
Dim strWhere As String
strWhere = "WHERE "
For i = 0 To lstCritProjekt.ListCount - 1
If lstCritProjekt.Selected(i) Then
strWhere = strWhere & _
"Feld = " & lstCritProjekt.ItemData(i) & " AND "
End If
Next
´ letztes AND wieder abschneiden
strWhere = Left(strWhere, Len(strWhere) - 4)
´ Das SQL Statement dem Form zuweisen
me.RecordSource = "SELECT * FROM Tabelle " & strWhere
End Sub
Damit könntest du die Datenherkunft bei jedem Klick auf dem Formular entsprechend anpassen. Wenn es denn unbedingt auf einem anderen Formular geschehen soll mußt du den SQLString eben beim öffnen mit übergeben...
Viel Erfolg soweit.
Antwort 6 von firefox
"lstCritProjekt" ist übrigends nur ein Beispielname für deine List-Box ...
Antwort 7 von kleineBiene
Hi,
das 2te Formular ist eigentlich nur aus Platzgründen, weil die Tabelle recht groß und umfangreich ist.
Aber es wäre auch nicht schlimm, wenn beide in einem wären, ja ...
Ich werde das gleich ausprobieren und sage tausend mal Danke, für die Mühe ... :)
Genieß dein Wochenende!!!
*kussi*
deine Bünä
das 2te Formular ist eigentlich nur aus Platzgründen, weil die Tabelle recht groß und umfangreich ist.
Aber es wäre auch nicht schlimm, wenn beide in einem wären, ja ...
Ich werde das gleich ausprobieren und sage tausend mal Danke, für die Mühe ... :)
Genieß dein Wochenende!!!
*kussi*
deine Bünä
Antwort 8 von kleineBine
Hi ... ich bins nochmal.
Es hat noch nicht so ganz funktioniert. Er mault immer bei der letzten Zeile:
„Nicht definiert“ und dann wird gelb hinterlegt:
Me.RecordSource = „SELECT * FROM Tabelle“ & strWhere
Mal sehen ob ich dich richtig verstanden habe?!
Bei strWhere und i kann ich ja nicht viel falsch machen, die definieren wir selbst.
CdmFill ist der Knopf mit dem sortiert wird.
LstCritProjekt ist das Listenfeld, das gruppiert die Kategorien zur Auswahl enthält
Was genau ist jetzt:
Feld?
Tabelle?
Sind das Objekte auf dem Formular, die vielleicht anders bei mir heißen?
Ich hoffe ich werde dir nicht lästig :$
dankeeeeeee!
byebye
Es hat noch nicht so ganz funktioniert. Er mault immer bei der letzten Zeile:
„Nicht definiert“ und dann wird gelb hinterlegt:
Me.RecordSource = „SELECT * FROM Tabelle“ & strWhere
Mal sehen ob ich dich richtig verstanden habe?!
Bei strWhere und i kann ich ja nicht viel falsch machen, die definieren wir selbst.
CdmFill ist der Knopf mit dem sortiert wird.
LstCritProjekt ist das Listenfeld, das gruppiert die Kategorien zur Auswahl enthält
Was genau ist jetzt:
Feld?
Tabelle?
Sind das Objekte auf dem Formular, die vielleicht anders bei mir heißen?
Ich hoffe ich werde dir nicht lästig :$
dankeeeeeee!
byebye
Antwort 9 von piano
Hallo
hab nur kurz reingeschaut, aber bei deinem Code
mfg piano
hab nur kurz reingeschaut, aber bei deinem Code
Zitat:
Me.RecordSource = „SELECT * FROM Tabelle“ & strWhere
fehlt ein Leerzeichen vor dem Apostroph!Me.RecordSource = „SELECT * FROM Tabelle“ & strWhere
mfg piano
Antwort 10 von firefox
Zitat:
Ich hoffe ich werde dir nicht lästig :$
Ich hoffe ich werde dir nicht lästig :$
Ist das ´ne Fangfrage? :-D
Zitat:
*kussi*
deine Bünä
*kussi*
deine Bünä
Na gut überedet ... ´hach sind Männer einfach nicht wahr?!
Zu deinem Problem.
Tabelle = der Name deiner Tabelle in der die Artikel stehen
Feld = das Feld, bzw. die Felder die als Einschränkung dienen. Also bei dir wohl das Feld "Kategorie".
Also beides Objekte in deiner Datenbank die natürlich so lautet müssen wie sie bei Access aufgelistet sind.
"Nicht definiert" hört sich aber eher nach einer fehlenden Deklaration an - geht den Komplieren Problemlos (Codeansicht - Debuggen -> Kompilieren von ... )?
p.s.
Zitat:
Tabelle“ & strWhere
Tabelle“ & strWhere
Hier solltest du aufpassen das hinter "Tabelle" noch ein Leerzeichen kommt, da sonst der Rest als Tabellenname erkannt wird ...
Antwort 11 von kleineBiene
*heul*
...okok ich hab´s jetzt in einem Formular hin bekommen, aber nur wenn ich das Formular "einspaltig" oder in "Blöcken" anlege. Ich hätte mein Auswahlergebnis aber gerne als Tabelle?!
Das macht er aber wieder gaaaar nicht!
Hilfe?!
Viele Grüße von mir!
...okok ich hab´s jetzt in einem Formular hin bekommen, aber nur wenn ich das Formular "einspaltig" oder in "Blöcken" anlege. Ich hätte mein Auswahlergebnis aber gerne als Tabelle?!
Das macht er aber wieder gaaaar nicht!
Hilfe?!
Viele Grüße von mir!
Antwort 12 von kleineBiene
jetzt mault er: Fehler beim Kompilieren... und streicht mir das "Left" an
*hmmm*
*hmmm*
Antwort 13 von kleineBiene
...bin nervlich am Ende *lach* ...aaah ist das ein Mist!
Also nochmal von der Pike auf; vielleicht erbarmt sich ja einer und hilft mir nochmal?!
Ich habe eine Tabelle die "Projekte" heißt, mit den Feldern "Titel" und "Kategorie"
Ich habe ein Formular "Bla" auf dem ein Listenfeld mit Namen "Suchen" ist, das gruppiert die Kategorien aus der Tabelle "Projekte", Sparte "Kategorie" anzeigt.
Mit diesen Namen müsste der Befehl auf dem Button "cdmFill" doch so lauten, oder?!
Private Sub cmdFill_Click()
Dim i As Integer
Dim strWhere As String
strWhere = "WHERE "
For i = 0 To Suchen.ListCount - 1
If Suchen.Selected(i) Then
strWhere = strWhere & _
"Kategorie = " & Suchen.ItemData(i) & " AND "
End If
Next
´ letztes AND wieder abschneiden
strWhere = Left(strWhere, Len(strWhere) - 4)
´ Das SQL Statement dem Form zuweisen
me.RecordSource = "SELECT * FROM Projekte " & strWhere
End Sub
Also nochmal von der Pike auf; vielleicht erbarmt sich ja einer und hilft mir nochmal?!
Ich habe eine Tabelle die "Projekte" heißt, mit den Feldern "Titel" und "Kategorie"
Ich habe ein Formular "Bla" auf dem ein Listenfeld mit Namen "Suchen" ist, das gruppiert die Kategorien aus der Tabelle "Projekte", Sparte "Kategorie" anzeigt.
Mit diesen Namen müsste der Befehl auf dem Button "cdmFill" doch so lauten, oder?!
Private Sub cmdFill_Click()
Dim i As Integer
Dim strWhere As String
strWhere = "WHERE "
For i = 0 To Suchen.ListCount - 1
If Suchen.Selected(i) Then
strWhere = strWhere & _
"Kategorie = " & Suchen.ItemData(i) & " AND "
End If
Next
´ letztes AND wieder abschneiden
strWhere = Left(strWhere, Len(strWhere) - 4)
´ Das SQL Statement dem Form zuweisen
me.RecordSource = "SELECT * FROM Projekte " & strWhere
End Sub
Antwort 14 von firefox
Hi mal wieder,
also deinen gepostet Code kann ich problemlos kompilieren...
Welche Access Version nutzt du denn?
zu Post #11: hast du das Formular auf "Endlosformular" gesetzt?
also deinen gepostet Code kann ich problemlos kompilieren...
Welche Access Version nutzt du denn?
zu Post #11: hast du das Formular auf "Endlosformular" gesetzt?
Antwort 15 von kleineBiene
Hi!
Ich benutze Access 97.
Problem: ich will das nicht in einem Endlosformular ausgeben, sondern in einem Listenfeld auf dem Formular. Ist das möglich?
liebe Grüße von der kleinen Biene
Ich benutze Access 97.
Problem: ich will das nicht in einem Endlosformular ausgeben, sondern in einem Listenfeld auf dem Formular. Ist das möglich?
liebe Grüße von der kleinen Biene
Antwort 16 von firefox
O_o Access97 brrr
Naja egal. Die Daten kannst du sicherlich auch in Listenfeld ausgeben lassen - das ist aber wesentlich mehr Aufwand.
Mein obiger Code hilft dir dazu auch nur am Anfang, sonst zielt er darauf ab, die Formulardatenherkunft zu setzten - und dazu ist ein Endlosformular gedacht.
Wenn du die Daten jetzt in ein Listenfeld packen willst ist einiges an "Handarbeit", sprich Code nötig....
Naja egal. Die Daten kannst du sicherlich auch in Listenfeld ausgeben lassen - das ist aber wesentlich mehr Aufwand.
Mein obiger Code hilft dir dazu auch nur am Anfang, sonst zielt er darauf ab, die Formulardatenherkunft zu setzten - und dazu ist ein Endlosformular gedacht.
Wenn du die Daten jetzt in ein Listenfeld packen willst ist einiges an "Handarbeit", sprich Code nötig....

