2.5k Aufrufe
Gefragt in Datenbanken von
Hallo,
ich bin fast am verzweifeln. Ich komme einfach nicht weiter.
Habe ewig nicht mehr mit Access gearbeitet, geschweige mit den genauen Befehlen hatte ich eigentlich nie zu tun. Weil das einfache immer ausgereicht hat. Nun aber möchte ich etwas machen das etwas mehr benötigt.

Ich möchte zwei Kombinationsfelder Verbinden.
Und zwar In den ersten stehen die Hauptkategorien.
Diese hab ich einer separaten Datenbank "daten_kombi" hinterlegt. Sowie für das zweite Kombinationsfeld die weiteren Daten.

So sollte es aussehen:
Kombinationsfeld1= per Befehl "select distinct TABELLENSPALTE from DATENBANKNAME" wird die Spalte "Typ" abgefragt. Mit folgenden Begriffen "Weapon, Armor, Card und Headgear".

Kombinationsfeld2= Hier sollen dann die speraten Angaben die in Spalte "Weapon, Armor, Card und Headgear" stehen. Je nach dem was im Kombinationsfeld 1 gewählt wurde.


Leider konnte ich nur den ersten Befehl ausfindig machen. Jedoch wie es beim zweiten geschrieben wird. Da blicke ich irgendwie nicht durch.

Ich bedanke mich im Voraus für eure Hilfe.

17 Antworten

0 Punkte
Beantwortet von
Hallo,

handelt es sich bei "Weapon, Armor, Card und Headgear" nur um eine Spalte (Feld) oder um 4 Spalten.

Sind die Kategorien in einer separaten Datenbank?

ansonsten bei gleicher Datenbank:

erstes Kombinationsfeld:

Private Sub Kombinationsfeld6_AfterUpdate()
Me!Kombinationsfeld8.RowSource = "SELECT "Dein Spaltenname "from "Deine Tabellenname" where "Deine Kategorien" = '" & Me!Kombinationsfeld6 & "'"
End Sub

zweites Kombinationsfeld in Abhängigkeit des ersten:

Private Sub Kombinationsfeld8_AfterUpdate()
' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[Dein Spaltenname] = '" & Me![Kombinationsfeld8] & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub


Gruß
Paul1
0 Punkte
Beantwortet von
Vielen Dank für deine Hilfe.
Jedoch wie oben genannt sind die Auswahl sachen in einer zweiten Datenbank um die Hauptdatenbank nicht mit anderen zeugs zu zu schütten.

Hier eine genaue Erklärung:
Wie oben erwähnt habe hab ich oben den Code eingegeben. Beim Kombinationsfeld1 nämlich bei Datensatzherkunft.
Da ich VBA nicht wirklich verstehe war dieser Befehl leichter zu verstehen.


Ich habe eine extra Datenbank "daten_kombi" angelegt. Die erste bzw. zweite Spalte (da ja die erste immer die IDs enthält). Heißt "Typ" und beinhaltet die Hauptbegriffe (Weapon, Armor, Card und Headgear) "später kommen noch 1-2 Begriffe dazu".

So zu jeden Hauptbegriff habe ich dann in dieser Tabelle "daten_kombi" weitere Spalten hinzugefügt für die Feinauswahl.



Kann man das nicht wie beim ersten Kombinationsfeld ohne VBA lösen? Wenn VBA die saubere Lösung ist. Wäre ich um eine kleine kurze Erklärung sehr dankbar. Wenn ich später weitere Kategorien hinzufügen will, was ich dann ändern müsste.
Ich bin schon auf einige Sachen gestoßen aber immer werden die Sachen nicht richtig Erklärt. Oder bei anderen sehe ich die Endfassung aber verstehe es trotzdem nicht.

Ich bin relativ offen für VBA, den ich bin der Meinung. Das es irgendwann sicherlich nützlich sein wird. :)

Vielen Dank schonmal^^
0 Punkte
Beantwortet von
Hallo,

ohne VBA kann ich mir die Verbindung der 2 Kombinationsfelder nicht wirklich vorstellen.

Außerdem mit verschiedenen 2 Datenbanken wirds so einfach auch nicht gehen (zumindest ist es mir nicht bekannt), ich würde meinen besser wäre es alles in einer Datenbank durchzuführen

ein Beispiel aus meinem Archiv:

http://p.aon.at/u/772405/?key=XYLBJLKPF2LB&share=39529

Gruß
Paul1

Access 2003
0 Punkte
Beantwortet von
Dein Beispiel ist leider nicht Verständlich. Wie ich merke sind die Unterschiede zwischen den alten Datenbanken und neueren "Access 2010" die Unterschiede sehr groß.
Auch weil bei dir es keine wirklichen Formulare eher Fenster sind auf zwei aufgeteilt und nicht in einen. Ich hab da nämlich ein klassisches Formular, wüsste auch nicht wie ich deine Art umsetzen könnte.

Dadurch macht das Verstehen um einiges schwieriger.



Wenn ich es richtig sehe dein erster Post beim Kombi1 muss ja der Tabellenname angegeben werden. Aber das Formular an sich ist dann immer noch an Datenbank1 gebunden für die Eintragungen.
Wenn das jetzt auf meine jetzigen Ansprüche angepasst werden würde. Könnte es doch funktionieren oder?

Die Übertragung der Befehle soll quasi so lauten:
Abfrage der Datenbank zum auslesen mit der Spalte->
Eintrag wird ausgewählt -> Kombifeld2 "Klasse" frägt Kombifeld1 "Typ" mit der Antwort ab -> Feld2 frägt Datenbank mit der jeweiligen Spalte ab -> Gibt die darin befindenen Einträge aus.

Hab mal an den Code von dein ersten Post herum gespielt jedoch kommt leider immer ein Fehler beim Compilieren.

Kombifeld1 "Typ":
Private Sub Typ_BeforeUpdate(Cancel As Integer)
Me!Typ.RowSource = "SELECT "Typ "from
"daten_kombi" where "Deine Kategorien" = '" & Me!Klasse & "'"
End Sub


Ich verstehe diesen Code nicht ganz. Jedoch ich Erkläre dir wie ich das nun wahrnehme. Der Datenbankname "daten_kombi" ist der wo die Infos hergenommen werden sollen. Die zweite Aufgabe wo er die Infos bezieht aus welcher Spalte. In diesen Fall Spalte "Typ".
Dann eine Anweisung das die Info an das Kombifeld2 "Klasse" weitergegeben werden soll.


Kombifeld2 "Klasse" (soweit bin ich noch nicht da beim ersten ein Compilierungsfehler kommt)

Jedoch hier sehe ich das die Infos nur aus einer Spalte gezogen werden. Aber wie das bei 4 Auswahlen gehen soll, ist mir ein Rätsel.
Den wenn oben angenommen "Weapon" ausgewählt wird aus Spalte "Typ" wird Spalte "Weapon" abgefragt mit den Inhalten.
Wird "Armor" ausgewählt dann wird Spalte "Armor" abgefragt.
Wenn "Card" ausgewählt wird, dann Spalte "Card".
Und wenn "Headgear ausgewählt wird dann wird Spalte "Headgear" abgefragt.



Jedoch so einfach wie das klingt ist es wohl doch nicht so einfach.
Eine alternative wäre noch wenn du mir da eher weiterhelfen kannst
.

Ich lege zu den Kombifeld1 "Typ" zu jeder Art ein weiteres Kombifeld an. Diese jedoch grau hinterlegt werden soll das die gesperrt sind. Und wenn z.B. Armor gewählt wird. Dann wird Feld Armor Aktiviert und vom Grauen ins weiße über das es genau ersichtlich ist. Das nimmt zwar etwas mehr Platz in Anspruch aber wäre gerade so noch möglich.
0 Punkte
Beantwortet von
Hallo,

Der Code für das erste Kombinationsfeld muß so lauten:

Private Sub Kombinationsfeld6_AfterUpdate()
Me!Kombinationsfeld8.RowSource = "SELECT Typ from daten_komb where Material = '" & Me!Kombinationsfeld6 & "'"
End Sub

statt Material muß der Name des Feldes für die Kategorien eingesetzt werden aber ohne "

Es funktioniert aber nur, wenn sich die Tabelle daten-komb in der gleichen Datenbank befindet.

Dementsprechend muß auch der Code für das zweite Kombinationsfeld angepasst werden, siehe diesbezüglich auch in das von mir übermittelte Beispiel.

>Entwurfsansicht Formular>Rechtsklick> Ereignis>CodeGenerator

Der eventuellen Möglichkeit mit 2 verschiedenen Datenbanken, kann ich leider nicht nähertreten.

Gruß
Paul1

[sub]Excel > Access > MS-Office
MS Windows XP Professional SP3/32 Bit
MS Windows 7 Professional SP1/64 Bit
ECDL-Syllabus Version 4.0
IT-Security
FIBU/KORE/PV/KA/AB[/sub]
0 Punkte
Beantwortet von
Hallo nochmals,

Private Sub Kombinationsfeld6_AfterUpdate()
Me!Kombinationsfeld8.RowSource = "SELECT Typ from daten_kombi where Material = '" & Me!Kombinationsfeld6 & "'"
End Sub

statt Material muß der Name des Feldes für die Kategorien eingesetzt werden aber ohne "

Gruß
Paul1
0 Punkte
Beantwortet von
Vielleicht hast du mich auch falsch verstanden da ich es falsch formuliert habe.

Mit Datenbank meine ich natürlich Tabelle und befinden sich in der selben Datei.
0 Punkte
Beantwortet von
Ich versuche jetzt die Ansätze mal durchzuarbeiten. Wenn noch etwas nicht klappt oder verstehe.

Melde ich mich wieder.

Wenn ich richtig verstehe da ja mein erstes Feld "Typ" heißt muss ich ja dann "Kombinationsfeld6" in "Typ" abändern und die kombi8 in "Klasse".
Sehe ich ja richtig so, oder?
0 Punkte
Beantwortet von
Hallo,

wenn das so ist, sollte es eigentlich mit der Umsetzung keinerlei Probleme geben.

Vielleicht sollte ich noch erwähnen, dass in der Entwurfsansicht der
Kombinationsfelder>Eigenschaften>Daten>Herkunftstyp>Datensatzherkunft festgelegt werden muß.

Wie gesagt, wäre alles in der Beispieldatei nachvollziehbar.

Sollte auch in Deiner Version (2010) funktionieren, wenn nicht, der Ablauf ist im Prinzip der gleiche.

Das es nicht einfach ist, kann ich nachempfinden, ich habe mich selbst schon genug oft mit Access herumgeplagt.

Gruß
Paul1

P.S.
bei Fragen schreibe es
0 Punkte
Beantwortet von
Also ich habe nun alles angepasst, jetzt kommen keine Fehler mehr.
Aber er frägt leider nicht die erste Spalte ab wie es sollte mit den Angaben. Das Feld wenn ich auf den pfeil nach unten klicke ist total leer.

Ich kann nicht nachvollziehen wie der Code erkennen soll vom zweiten Feld, das er bei jeden Eintrag eine andere Spalte abfragen soll.

Wenn ich jetzt bei Datensatzherkunft "select distinct Typ from daten_kombi" eingebe.
Und eins wähle, dann kopiert das zweite Feld direkt den Eintrag.
Ich habe grad bemerkt das das zweite Feld "Class" heißt wie ich das umbenannt habe, hat es wohl das nicht mit unbenannt.


Ich habe gerade nochmal genauer nachgeschaut. Du hast bei Datensatzherkunft ja auch Befehle drin. Jedoch für mein Fall muss das ja anders ausschauen. Weil bei dir frägt dieser die Spalte "Artikel" in Tabelle2 ab. Jedoch bei mir sind die Ergebnisse Unterschiedlich je nach dem was ausgewählt wurde. Geht es jeweils immer eine Spalte weiter.
Aber dennoch Interessant den Code näher anzuschauen wie alles funktioniert.
...