WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 12.02.2006, 14:42   #1
MrBean
Veteran
 
Registriert seit: 04.08.2001
Alter: 52
Beiträge: 211


Frage MS Access - Eingabe in Feldern einschränken

Ich habe drei Tabellen (Felder in Klammern):
- Hauptkategorie (HauptkategorienNr)
- Unterkategorie (HauptkategorienNr, UnterkategorienNr)
- Produkt (ProduktNr, HauptkategorienNr, UnterkategorienNr)

Im (zur Tabelle „Produkt“ erstellten) Formular „Produkt“ sollen nach der Eingabe der HauptkategorienNr nur solche UnterkategorienNr eingegeben werden, die in der Tabelle „Unterkategorie“ der eingegebenen HauptkategorienNr zugeordnet worden sind.

Kann ich das mit Beziehungen auf Tabellenebene erreichen oder muss ich im Formular „Produkt“ für das Feld „UnterkategorienNr“ ein eigenes Auswahlformular programmieren?
MrBean ist offline   Mit Zitat antworten
Alt 12.02.2006, 15:10   #2
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Mit Beziehungen wirst du das nicht hinbekommen.

Ich würde nen VBA Code schreiben, der bei der Eingabe/Auswahl der Hauptkategorie das Feld zur Unterkategorieauswahl aktualisiert, sodass nur mehr die richtigen Unterkategorien ausgewählt werden können.

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 13.02.2006, 09:42   #3
MrBean
Veteran
 
Registriert seit: 04.08.2001
Alter: 52
Beiträge: 211


Standard

Danke T.dot für die Antwort.

Wenn es interessiert, ich habe unter http://www.office-loesung.de/ftopic6700_0_0_asc.php ein Beispiel für abhängige Kombinationsfelder gefunden.
MrBean ist offline   Mit Zitat antworten
Alt 13.02.2006, 10:57   #4
rado
Jr. Member
 
Registriert seit: 27.01.2006
Beiträge: 22


Standard

Geht auch ganz ohne VBA. Einfach ein Kombinationsfeld für die Unterkategorie verwenden, "Nur Listeneinträge" auf "Ja" stellen und als Datensatzherkunft "SELECT * FROM Unterkategorie WHERE HauptkategorienNr = [Feldname]" verwenden, wobei "Feldname" der Name des Eingabefeldes ist. Habs jetzt nicht getestet, sollte aber so gehen und auch automatisch aktualisiert werden. Kein Coden nötig!
rado ist offline   Mit Zitat antworten
Alt 15.02.2006, 10:15   #5
MrBean
Veteran
 
Registriert seit: 04.08.2001
Alter: 52
Beiträge: 211


Standard

Hallo rado!

Ich habe versucht, Deinen Tipp zu verwenden. Leider ohne Erfolg.

Ich habe jetzt drei Tabellen BundeslandTab, BezirkTab und OrtTab angelegt.
In der OrtTab kann man den Ort eingeben, dann das Bundesland und danach sollten im Feld Bezirk nur Bezirke des aktuellen Bundeslandes ausgewählt werden können.

Es werden aber immer alle Bezirke (auch von anderen Bundesländern) angezeigt.

Im Anhang findest Du die Tabelle OrtTab in der Entwurfsansicht, wobei zum Feld Bezirk die Eigenschaften angezeigt werden.
Neben der Eigenschaft Datensatzherkunft steht folgendes Select-Statement:

SELECT BezirkTab.Bezirk FROM BezirkTab WHERE BezirkTab.Bundesland=[Bundesland];
MrBean ist offline   Mit Zitat antworten
Alt 15.02.2006, 11:18   #6
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Ich würds mal in einem Formular probieren, wär mir ned so sicher, dass man des beim Tabellenentwurf so festlegen kann (auch wenns theoretisch gehen müsste).

Wenn ich Zeit hab test ichs mal...

mfg T.
T.dot ist offline   Mit Zitat antworten
Alt 16.02.2006, 09:44   #7
rado
Jr. Member
 
Registriert seit: 27.01.2006
Beiträge: 22


Standard

Ich hab dabei auch an ein Formular gedacht. Wenn Du kein Formular verwenden willst, dann fällt mir momentan auch keine Lösung ein.
rado ist offline   Mit Zitat antworten
Alt 16.02.2006, 13:02   #8
MrBean
Veteran
 
Registriert seit: 04.08.2001
Alter: 52
Beiträge: 211


Standard

Ich habe jetzt ein Formular erstellt und ein Kombinationsfeld mit entsprechendem Select-Statement hinzugefügt.

Leider wieder ohne Erfolg.
MrBean ist offline   Mit Zitat antworten
Alt 16.02.2006, 14:24   #9
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

So, ich hab mir das jetzt nur kurz angeshen, aber es macht den Anschein als würde nur beim ersten Formularaufruf (bzw. bei einem Refresh) der Select neu ausgeführt. Daher musst du es wohl so oder so über VBA lösen.

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 17.02.2006, 09:47   #10
rado
Jr. Member
 
Registriert seit: 27.01.2006
Beiträge: 22


Standard

Eh klar, ich hatte ein Brett vorm Kopf. Natürlich müsste man den Refresh per VBA machen, aber dann kann man das ganze auch gleich in VBA lösen.

Es gibt aber noch eine andere Variante: Verwende einfach ein Unterformular. Das kannst Du über beliebig viele Felder mit dem Hauptformular verknüpfen und das wird automatisch refresht.

Hätte mir eigentlich früher einfallen können...

Ob ein Unterformular oder VBA-Code geschickter ist, muss man im Einzelfall entscheiden. Wenn man nur ein einziges abhängiges Feld hat, ist VBA meiner Meinung nach wahrscheinlich besser, da übersichtlicher. Aber wenn man mehrere Felder hat und die alle per VBA ändern bzw. aktualisieren müsste, dann macht ein Unterformular wahrscheinlich mehr Sinn. Man spart sich den Code und kann jedes Formular an die Datenquelle binden - hat dann also nicht mehrere Datenquellen in einem Formular. Das schafft in umfangreicheren Projekten auf jeden Fall Übersicht.

CU rado
rado ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:37 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag