Supportnet Computer
Planet of Tech

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?!

Antwort 2 von kleineBiene

Hi!

Dankeschön erstmal , ...hmmm ....

gibts dafür aber vielleicht auch einen Blondienen-Guide?

lg

Antwort 3 von firefox

Zitat:
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

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:

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ä

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

Antwort 9 von piano

Hallo
hab nur kurz reingeschaut, aber bei deinem Code
Zitat:
Me.RecordSource = „SELECT * FROM Tabelle“ & strWhere
fehlt ein Leerzeichen vor dem Apostroph!
mfg piano

Antwort 10 von firefox

Zitat:
Ich hoffe ich werde dir nicht lästig :$

Ist das ´ne Fangfrage? :-D

Zitat:
*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

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!

Antwort 12 von kleineBiene

jetzt mault er: Fehler beim Kompilieren... und streicht mir das "Left" an


*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


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?

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

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....

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: