Hallo zusammen,
ich habe vor 'zig Jahren eine Datenbank für meinen persönlichen Gebrauch in Approach enwickelt, nun will ich diese nach Access portieren...allerdings habe ich keine Erfahrung mit Access. Für mein erstes "Problem" an dem ich nun schon drei Tage probiere und suche bin ich jetzt hier auf die Lösung gestoßen (Dank an GF6DL für den Link in der Signatur):
http://www.donkarl.com/?FAQ4.36
Es geht konkret um die Eingabe von Adressen, genauer um die nach der Postleitzahl gefilterte Werteliste für die Ortseingabe. Nur leider kann ich mit der Aussage:
ZitatDas kann eine gespeicherte Abfrage sein, in der beim GruppenID-Feld als Kriterium ein Bezug auf das übergeordnete Kombi steht:
Forms!frm_Artikel!cbo_Gruppen
So gar nichts Anfangen, kennt jemand ein (Video-) Tutorial in dem diese Methode angewendet wird? Oder vielleicht hilft mir auch schon ein Screenshot der Umsetzung zum Verständnis? Es ist wirklich nicht einfach als Anfänger sich durch jede Menge Anleitungen zu wühlen nur um dann fest zu stellen das die gesuchte Information nicht enthalten war oder in der gezeigten Form nicht anwendbar ist.
Hallo,
wenn Du nochmal mein Rufzeichen so total verdrehst, bekommst Du es mit DF6GL zu tun.. ;) ;) ;D
"genauer um die nach der Postleitzahl gefilterte Werteliste für die Ortseingabe. "
Soll das heißen, Du möchtest mit dem ersten Kombi eine PLZ auswählen und damit im zweiten Kombi(liste) nur die dazu gehörenden Ortsnamen eingrenzen und anzeigen?
(---> abhängige Kombifelder)
Beschreib mal genau, was Du machen willst und wie die entspr. Tabellen und Feldnamen heißen.
Hallo DF6GL,
tut mir leid wegen des "Verdrehers"...ich hatte extra nochmal nachgeschaut... :-[
ZitatSoll das heißen, Du möchtest mit dem ersten Kombi eine PLZ auswählen und damit im zweiten Kombi(liste) nur die dazu gehörenden Ortsnamen eingrenzen und anzeigen?
Genau! Dafür will ich ein Formular haben, in dem die Werteliste für die Ortseingabe schon aufgrund der PLZ vorgefiltert ist.
Bei der PLZ habe ich das in der Datenblattansicht der Tabelle schon hinbekommen, die PLZ eingeben zu können obwohl das Feld eigentlich eine ID ist. Zum Testen hab' ich das im Moment so wie im Screenshot unten:
(http://exelor.de/relAdressen.png)
Ich weiß leider nur nicht wie ich das entsprechende Feld im Formular für die Adresseingabe einrichten muss. Ich sollte vielleicht auch noch erwähnen das ich keinerlei Erfahrung mit VBA habe, meine SQL-Kenntnisse sind auch nur rudimentär.
Ich habe hier Forum die gleiche Fragestellung schon öfter gesehen, nur leider werde ich aus den gegebenen Antworten nicht schlau, vielleicht fehlen mir da noch wesentliche Grundkenntnisse?
Hallo,
1) wirf das Kombifeld aus der TABELLE heraus.
2) erstell im Formular (mit Datenherkunft z. B. "tblFirmen") für das Adress-ID-Fremdschlüsselfeld ("Firma_AdrID") ein Kombifeld ("Firma_AdrID") mit Datensatzherkunft:
Select adrID, adrOrt, adrStrasse from tblAdressen order by adrOrt, adrStrasse
Spaltenanzahl: 3
Spaltenbreiten: 0cm;4cm;4cm
3) erstell im Formular ein ungebundenes Kombifeld ("cboPLZ") mit diesen Einstellungen:
Datensatzherkunft: Select plzID, plzPostleitzahl, plzLand from tblPLZ order by plzPostleitzahl
Spaltenanzahl: 3
Spaltenbreiten: 0cm;1,5cm;3cm
gebundene Spalte:1
und einer dazugehörenden Ereignisprozedur:
Sub cboPLZ_Afterupdate()
Me!cboOrt.Rowsource = "select adrID, adrOrt, adrStrasse from tblAdressen where adrPostleitzahl ='" & Me!cboPLZ & "' order by adrOrt, adrStrasse"
End Sub
4) erstelle in weiteres ungebundenes Kombifeld ("cboAdresse") mit diesen Einstellungen:
Datensatzherkunft: --
Spaltenanzahl: 3
gebundene Spalte: 1
Spaltenbreiten: 0cm;4cm;4cm
und dieser dazu gehörenden Ereignisprozedur:
Sub cboOrt_Afterupdate()
Me!Firma_AdrID =Me!cboAdresse
End Sub
ok...ich versteh's nicht...ich bin jetzt schon wieder seit gestern am probieren, ich bekomm's aber nicht einmal annähernd hin...alles was ich versuche endet mit einer Fehlermeldung...
zu 1. erledigt
zu 2. ich habe keine tblFirmen, somit gibt es auch Firma_AdrID nicht
zu 3. das scheitert an 2. und 4. ebenso
kannst du mir das bitte (mit den vorhandenen Tabellen und Feldern) nochmal versuchen zu erklären?
Hallo,
2) und wozu soll dann die Adresse bzgl. der PLZ vorausgewählt werden? WO soll denn die "adID" weiter verwendet werden?
Erklär mal, was genau(!) Du machen willst.. Ich befürchte, da gibt es Nacharbeit bei der Tabellenkonstruktion...
Zitatum die nach der Postleitzahl gefilterte Werteliste für die Ortseingabe.
interpretiere ich jetzt mal so, als dass aus "tblPLZ" anhand der PLZ ein dazu passender Ortsname und passende Strasse ausgewählt und in tblAdressen übernommen werden sollen. Dann ist der Tabellenaufbau unpassend/falsch und sollte etwa so aussehen:
tblPLZ_
PLZID (PK, Autowert)
PLZ_PLZ (Text)
PLZ_Ort (Text)
PLZ_Strasse (Text)
PLZ_LandesKürzel (Text)
tblAdressen
AdrID (PK, Autowert)
Adr_PLZID (FK zu tblPLZ, Zahl,Long)
Adr_Nachname
Adr_Vorname
Adr_Zusatz
.
.
.
In einem Formular mit Datenherkunft zu tblAdressen gibt es drei Kombifelder ("cmbPLZ" ungebunden, "cmbAdr" ungebunden, "Adr_PLZID" gebunden an gleichnamiges Tabellenfeld und ein ungebundenes Textfeld "txtStrasse") mit folgenden Einstellungen:
cmbPLZ:
Datensatzherkunft: Select distinct PLZ_PLZ from tblPLZ order by PLZ_PLZ
Gebundene Spalte: 1
Spaltenanzahl: 1
Spaltenbreiten : 1,5cm
Dazu Ereignisprozedur:
Sub cmbPLZ_Afterupdate()
Me!cmbAdr.Rowsource = "Select PLZID, PLZ_Ort, PLZ_Strasse, PLZ_LandesKürzel from tblPLZ order by PLZ_Ort, PLZ_Strasse
End SubcmbAdr:
Datensatzherkunft: --
Gebundene Spalte: 1
Spaltenanzahl: 4
Spaltenbreiten: 0cm;3cm;3cm;1cm
Dazu Ereignisprozedur:
Sub cmbAdr_Afterupdate()
Me!ADR_PLZID = Me!cmbAdr
End SubADR_PLZID:
Datensatzherkunft: Select PLZID, PLZ_ORT, PLZ_Strasse from tblPLZ
Gebundene Spalte: 1
Spaltenanzahl: 3
Spaltenbreiten: 0cm;4cm;4cm
Im Steuerelementinhalt des Textfeldes "txtStrasse" , um den Strassennamen anzuzeigen:
=ADR_PLZID.Column(2)
... evtl. weitere Textfelder zur Anzeige der restlichen Daten (PLZ, Landeskürzel)
Ein Alternativ-Konstruktion wäre, eine über beide Tabellen verknüpfende Abfrage für das Formular zu verwenden. Dann könnten gebundene Steuerelemente für die Anzeige der Tabellendaten benutzt werden anstelle der Zuweisung (im Steuerelementinhalt) an Textfelder.
Im Grunde ist die "Vorauswahl" der Plz eh überflüssig. Wenn in ein Kombifeld eine Plz eingegeben wird, erfolgt sogleich der "Sprung" auf die entspr. PLZ in der Kombifled-Liste. Die Auswahl eines Ortes/Strasse könnte gleich mit dem Kombi "ADR_PLZID" erfolgen.
ok, ich hab's gelöst...
Ich bin einen etwas anderen Weg gegangen wie du mir vorgeschlagen hast, mit deiner Lösung kam ich nicht zum Ziel - Warum auch immer...aber den Denkansatz zur Lösung wie ich sie jetzt habe den hast du mir geliefert, Danke dafür!
Was ich gemacht habe?
- Formular auf Basis "tblAdressen" erstellt
- Textfelder adrplzIDref und adrOrt in Kombinationfelder geändert
- für adrplzIDref:
- Datensatzherkunft: SELECT plzID, plzPostleitzahl, plzOrtsname FROM tblPLZ
- Spaltenanzahl: 3
- Spaltenbreiten: 0cm; 2cm
- nach Aktualisierung
Private Sub adrplzIDref_AfterUpdate()
adrOrt.Requery
End Sub
- für adrOrt:
- Datensatzherkunft: SELECT plzOrtsname FROM tblPLZ WHERE plzID = adrplzIDref;
Somit werden mir jetzt bei Eingabe einer Postleitzahl in der Werteliste alle passenden Orte mit angezeigt, im Feld für den Ort habe ich jetzt nur noch einen einzigen Eintrag... :)