Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: J.D am Dezember 20, 2015, 18:42:46

Titel: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 20, 2015, 18:42:46
Hallo Forum,
Ich bin erst mit Access angefangen und finde mich noch nicht so ganz zurecht :( 

Also ich habe eine kleine Datenbank gemacht, das funktioniert auch mit dem Formular... 

In dem Formular habe ich ein Dropdown welches mir die Auswahl der Namen anzeigt, das heisst TraegerDrop  (Tabele Traeger)

Mein Form bezieht sich auf Tabele Kunden und der Wert aus TraegerDrop wird auch darin gespeichert!

Nun möchte ich in einigen TextBoxen zb. den Namen anzeigen und Ort
Dazu habe ich den Ausdrucksgenerator versucht...
= SELECT [Traeger].[ID], [Traeger].[Traeger_Name] FROM [Traeger] WHERE [Traeger].[ID]= [TraegerDrop];
um das feld TraegerName zu befüllen, dieses will mir aber nicht gelingen, er zeigt mir immer #name?

Als Standard für das Dropdown habe ich 1 gewählt also wird doch auch die ID welches ja in dem fall ist die [Traeger].[ID] von dem feld übergeben???

Grüsse J.D.
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MzKlMu am Dezember 20, 2015, 19:04:06
Hallo,
da brauchst Du überhaupt nicht programmieren. Nimm als Datenherkunft für das Formular das beide Tabellen (Kunden und Traeger) enthält. Die Tabellen sind über die ID zu verknüpfen. Dann kannst Du alle Felder aus beiden Tabellen im Formular anzeigen. Direkt und ohne irgendwelche Klimmzüge.
Das Formular (bzw. die Felder) aktualisieren sich automatisch bei Auswahl eines Traegers.

Mann kann keine Abfrage als Steuerelementinhalt verwenden, das heißt, das was Du versucht hast ist grundsätzlich nicht möglich.
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 20, 2015, 20:01:26
Hallo MzKlMu,

also ich sehe das Positiv mit dem Sport :)
Ich kann mich gut in Exel aber Access ist leider etwas neuland für mich!

Denoch sind die beiden Tabelen leider in keine relation zueinander sodass die Verknüpfung über die ID glaube ich keinen sinn macht!???

Ich habe das nun nach http://www.access-o-mania.de/forum/index.php?topic=20167.0 gelösst, wobei ich nun im Dropdown alle werte angezeigt bekomme was ich noch auf auf die Nr und den Namen reduzieren möchte!

Herzliche Grüsse
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MzKlMu am Dezember 20, 2015, 20:26:21
Hallo,
warum sind die beiden Tabellen nicht in Beziehung ?
Das macht doch ohne Beziehung keinen Sinn. Du willst die ID eines Traegers in der Kundentabelle speichern.
Das ist eindeutig eine 1:n Beziehung zwischen Traeger (1) und Kunde (n).
Lege also mal die Beziehung an.
Der oben verlinkte Beitrag hat mit Deinem Problem nichts zu tun, da geht es um abhängige Kombis.
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 20, 2015, 21:07:05
Ok MzKlMu,

vieleicht reden wir aneinander vorbei!??? 
schau dir mal das Form Kunden an.
Dort das Dropdown "Kostenträger"
Darunter die Felder sollen aktuallisiert werden (welches nun auch geht)...
Wenn ich das mit der Beziehung lösen kann, werde ich es damit auch mal Probieren :D

ZitatStorno, ich versuch es dann mal so.. die Datei scheint mit 8MB zu gross zu sein!?

Danke erst ma!

Grüsse J.D.
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MaggieMay am Dezember 20, 2015, 22:09:22
Hallo,
Zitatschau dir mal das Form Kunden an.
wo kann man sich das anschauen?

ZitatDenoch sind die beiden Tabelen leider in keine relation zueinander
Das sollten sie ab er sein, wenn du die ID der einen Tabelle ("Traeger") als Fremdschlüssel in der anderen ("Kunden") speichern willst.

Zitatdie Datei scheint mit 8MB zu gross zu sein
1. Komprimieren
2. Zippen
Im übrigen sollten Beispiel-DBs nur das Notwendigste enthalten, das zum Nachstellen eines Problems erforderlich ist. In diesem Fall also zwei Tabellen mit ein paar Testdaten und ein Formular.
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 24, 2015, 17:33:28
Hallo Maggie,

Das habe ich soweit hinbekommen, auch die Werte werden gespeichert wie ich mir das Vorstelle!

Leider scheiters mir an der übernahme der Werten in Kombination eines anderen Dropdown
Das Feld heist Rechnung_Prefix, das Prefix ist hinterlegt in der Usertabele, gebe ich als Steuerelementinhalt [UserId].[Column(3)] an so erhalte ich den gewünschten Wert aus der Datenbank, jedoch muss dieser dann mit den Werten aus Formular in die Rechnung geschrieben werden... wie kann ich [UserId].[Column(3)] den ursprünglichen Steuerelementinhalt zuweisen, so das dieser dann auch gespeichert wird!?
=[Rechnung_Prefix]=[UserId].[Column(3)] funktioniert leider nicht!?

Weihnachtliche Grüsse J.D
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MzKlMu am Dezember 24, 2015, 18:49:04
Hallo,
ich weiß, Du liebst Klimmzüge. Aber trotzdem ist der auch überflüssig. Es genügt nur die ID zu speichern, alles andere wäre redundant. Und redundante Daten sind in einer Datenbank zu vermeiden.
Über eine Abfrage mit den relevanten Tabellen und der Verknüpfung über die Schlüsselfelder kannst Du alle Felder aus den beteiligten Tabellen anzeigen.

Und selbstverständlich sind auch entsprechende Beziehungen anzulegen.

Kannst Du mal ein Bild der Beziehungen hier zeigen ?
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 24, 2015, 18:56:53
Hallo MzKlMu,

ich habe mal eine Test Datenbank angehängt die ich auf die schnelle gemacht habe welche verdeutlichen soll was ich vor habe!
Ich hoffe das hilft weiter!?

Weihnachtliche Grüsse J.D

[Edit] nix drin aber trotzdem zu gross :(
download hier https://www.wetransfer.com/downloads/522d5f29870aa989f6f247d1d3a3ac9e20151224175401/e57fd8 [/Edit]
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MzKlMu am Dezember 24, 2015, 19:08:59
Hallo,
ich gehe nicht auf Downloadseiten wo man was akzeptieren muss.

Hast Du die DB schon mal komprimiert (Access Dienstprogramm) ? Erst dann zippen. Das Komprimieren muss während der Entwicklung einer DB regelmäßig gemacht werden.

Ich kann aber nur DBs Access2003 (MDB) ansehen, ich habe kein neueres Access.

Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 24, 2015, 19:33:17
Ok Klaus...
dann versuchen wir es nochmal!

Tatsächlich hat das mit dem Komprimieren funktioniert!

Bei der Seite braucht man nix akzeptieren, der Download geht sofort los und wird automatisch gelöscht, aber egal jetzt geht es ja auch hier :D

Die Datei ist glaub ich Kompatibel abgespeichert und bis letzte woche da hatte ich noch 2010 und hab mir das 2016 jetzt günstig aus dem Ebay geschosse, geändert hat sich aber nix...

Weihnachtliche Grüsse J.D
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MzKlMu am Dezember 24, 2015, 20:28:29
Hallo,
Zitat von: MzKlMuIch kann aber nur DBs Access2003 (MDB) ansehen, ich habe kein neueres Access.
Du musst die DB über "Speichern und Veröffentlichen" als MDB speichern. Ich kann keine ACCDBs ansehen, hatte ich ja auch geschrieben.

Zeige doch mal ein Bild der Beziehungen, das reicht mir meistens.
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 24, 2015, 21:13:33
Hallo Klaus!

Hmm, okay... hätte gedacht das es geht, zumindest ist es rückwärt kompatibel abgespeichert... naja wenn ich es als MDB mache sind die formulare weg...

hier mal zwei bilder...

Im Formular habe ich das Dropdown UserId da wähle ich den User aus der Tabele User aus.

Dann habe ich dort Dropdown "Kunden Nummer" das enthält die Daten des Kunden ob die Rechnung Privat ist oder Vereinstechnisch.
zumindest kann ich ja darauf zugreifen mit ...[Column(0)]

(Problem 1)
Das Formular soll diese Checkbox anhand der auswahl des Kunden auswählen, ich habe da schon teils etwas hinbekommen aber es waren falsche Daten und wenn ich die Box nachträglich ändern will kann ich das auch nicht!

(Problem 2)
Das feld wo #Name drin steht ist der Prefix, dieser kommt auch aus der Tabele User, hier habe ich den Wert schon angezeigt bekommen, aber der wird dann nicht in der Tabele Rechnungen gespeichert.

Mein versuch dem Steuerelement das zuzuordnen funktioniert nicht!
= [Rechnung_Prefix] =[UserId].[Column(3)] weil da #Name steht.
wenn ich [UserId].[Column(3)] rein schreibe dann steht halt der richtige wert da aber er wird nicht gespeichert!

Weihnachtliche Grüsse J.D 
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: DF6GL am Dezember 25, 2015, 10:21:45
Hallo und Frohe Weihnachten

Irgendwie beschreibst Du das Ganze etwas verwirrend...

Deine benannten Felder gibt es teilweise nicht in der DB... Sinnvoll wäre, die korrekten Namensbezeichnungen zu benutzen.



Ich vermute (im Formular "Rechnungen"):
-- Das Feld "Rechnungs_Prefix" soll mit dem Wert aus Feld "UserPrefix" (Tabelle "User") nach Auswahl eines Users gesetzt werden.
-- Nach Auswahl eines Kunden soll das Feld "Rechnungs_Privat" mit dem Wert aus "KundenPrivat" (Tabelle "Kunden") belegt werden.

Weiterhin nehme ich an, dass das zusätzliche Autowert-Feld für den Primärschlüssel nur in diesem  "auf die schnelle gemacht(en) " Beispiel zu finden ist.
In Tabelle "Rechnungen" ist zu prüfen, ob nicht das Feld "Rechnungs_Nr" als Primärschlüsselfeld besser geeignet wäre.

Zunächst gehe ich mit Klaus konform, dass ein zusätzliches Speichern dieser Werte in Tabelle "Rechnungen" überflüssig/falsch ist. (Redundanzen).
Eine Ausnahme wäre die Situation, wenn sich diese Werte in Tabelle "Kunden" und "User" zeitlich gesehen ändern können/dürfen und die vorhandenen Rechnungen davon nicht beeinflusst werden dürfen. (Wobei dies aber auch mit geeignet aufgebauten und normalisierten Tabellen realisiert werden könnte: --> Gültigkeits-Zeitraum)


Siehe Anhang.
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MzKlMu am Dezember 25, 2015, 10:29:40
Hallo,
Du hast es nicht verstanden. Die Felder Rechnungs_Prefix, Rechnungs_Privat und Rechnungs_LFS sind in der Tabelle Rechnungen komplett überflüssig (siehe Bild). Über die Beziehungen kannst Du über eine Abfrage jederzeit alle Felder aus den 3 Tabellen anzeigen. Das ist ja der Sinn der Beziehungen in einer Datenbank Redundanzen zu vermeiden.

Anmerkungen und Rückfragen:

Beziehungen sind immer mit referentielle Integrität einzurichten.

Was ist KundenPrivat für ein Feld, JaNein ?

Kann ein Kunde sowohl private als auch  vereinstechnische Rechnungen haben ?

Was bedeutet Prefif und LFS ?
Kann ein User beides gleichzeitig haben ?




Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 25, 2015, 11:15:14
Hallo ihr beiden,
erst mal danke für eure Antworten!

Also gut das User Prefix habe ich nun raus gelöscht, das ziehe ich Userbasierend dann später. Die UserID wird ja zu der Rechnung gespeichert...

Bleibt nur noch die Frage wie ich diese Checkbox nach dem Wert im Kundenstamm Aktiviere und auch nachträglich ändern kann, ohne den Wert im Kundenstamm zu ändern, also nur Rechnungsbasiert!?

Rechnung Privat gibt an ob die Rechnung mit oder ohne Verein verbucht wird, ist die Rechnung Vereinstechnisch geht ein LFS von 10-20 % an den Verein daher sollte dieser wert bei dem Kunden sowie auch bei der Rechnung hinterlegt werden. (Das ist auch wichtig der sich die % innerhalb eines Jahres bei einem User ändern können).

Ein Kunde kann somit sowohl private als auch vereinstechnische Rechnungen haben!

Die Rechnungs NR bleiben gleich, jedoch ändert sich dann der RechnungsLayout ein wenig, was ich ja dann später bei den Berichten einstellen muss!

Weihnachtliche Grüsse
J.D
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MzKlMu am Dezember 25, 2015, 11:35:47
Hallo,
Zitatdas ziehe ich Userbasierend dann später.
da brauchst Du nichts zu ziehen, das ergibt sich ganz automatisch über eine Abfrage.

ZitatBleibt nur noch die Frage wie ich diese Checkbox nach dem Wert im Kundenstamm Aktiviere und auch nachträglich ändern kann, ohne den Wert im Kundenstamm zu ändern, also nur Rechnungsbasiert!?
Die Checkbox hat dann im Kundenstamm nichts verloren, die muss zwingend nur in die Rechnungstabelle, denn diese Checkbox ist ja Rechnungsbezogen.
ZitatVerein daher sollte dieser wert bei dem Kunden sowie auch bei der Rechnung hinterlegt werden. (Das ist auch wichtig der sich die % innerhalb eines Jahres bei einem User ändern können).
Du sorgst gerade für Verwirrung, LFS gibt es ja gar nicht beim Kunden, das hast Du ja in der Usertabelle, wo ist es denn jetzt ?
Und wie hast Du Dir die Historie der LFS vorgestellt ? Also LFS in der Vergangenheit ? Oder spielt das keine Rolle?

Um Werte von einer Tabelle in eine andere Tabelle zu übertragen muss VBA verwendet werden, das geht nicht über den Steuerelementinhalt wie von Dir angedacht.

Aber klären wir erst mal die anderen Punkte.

Hast Du das registriert mit der referentiellen Integrität ?

Noch was, ist mir gerade aufgefallen. Die Beziehungen sollten über die IDs laufen und nicht über UserID und KundenID, dazu werden ja Primärschlüssel eingerichtet.
Was enthalten diese IDs eigentlich, auch Zahlen, oder sind die alphanummerisch ?
Könnte man diese auch KundenNr bzw. UserNr nennen ?


Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 25, 2015, 12:00:51
Hallo Klaus,
ZitatDie Checkbox hat dann im Kundenstamm nichts verloren, die muss zwingend nur in die Rechnungstabelle, denn diese Checkbox ist ja Rechnungsbezogen.
Jaein...
Der Kunde hat eine Voreinstellung die möchte ich auch bei der Rechnungs Voreingestellt haben, mit der möglichkeit diese für die eine Rechnung ein / aus zu schalten!

Ist die Rechnung dem Künden gegenüber auf Privat eingestellt so entfällt LFS.

Hab gerade mit dem Oberhaupt gesprochen um die Punkte zu klären :D
Also LFS sind die % welcher der Verein bekommt,
diese könnten sich bei einem User ändern, daher sollten sie mit zu der Rechnung gespeichert werden!

Nochmal rückmeldung und entscheidung es einfacher zu machen die LFS bleibt ein und die selbe User basiert also eigentlich auch kein Problem!

Bleibt nur die Checkbox...

ZitatHast Du das registriert mit der referentiellen Integrität ?
Sorry, mein Deutsch ist nicht so gut, bin Engländer... hab das aber mal im Wiki nach gelesen!
Ich habe die eigentlichen ID`S beibehalten da das Automatische Hochzählen ja sonst nicht gegeben ist, und die Kunden Nr. VE-1000 sind zb. daher ist die nutzung des Felds bzw. der Primärschlüssel nicht machbar!?

Weihnachtliche Grüsse J.D
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: DF6GL am Dezember 25, 2015, 12:02:40
Hallo,

ZitatBleibt nur noch die Frage wie ich diese Checkbox nach dem Wert im Kundenstamm Aktiviere und auch nachträglich ändern kann, ohne den Wert im Kundenstamm zu ändern, also nur Rechnungsbasiert

hast Du überhaupt mal mein Beispiel angesehen? Dort habe ich das genau so umgesetzt.


(@Klaus: sorry, dass die DB immer noch im accdb-Format ist, wegen "A2010/13-Features" lassen sich die Forms aber nicht ins MDB-Format konvertieren und ich bin jetzt zu faul, die Form neu zu erstellen.)

Prozeduren hinter den Auswahlkombis:


Option Compare Database
Option Explicit

Private Sub KundenDrop_AfterUpdate()
Me!Rechnungs_Privat = Me!KundenDrop.Column(2)
End Sub

Private Sub UserID_AfterUpdate()
Me!Rechnungs_Prefix = Me!UserID.Column(2)
End Sub

Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: MzKlMu am Dezember 25, 2015, 12:05:47
Hallo,
@Franz
ich gehe da nicht ganz konform mit Dir das Feld KundenPrivat hat in der Kundentabelle nicht verloren, da ein Kunde sowohl Vereinsrechnungen als auch private Rechnungen erhalten kann gehört dieses Feld nur in die Rechnungstabelle.
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 25, 2015, 12:10:18
Hallo DF6GL,
Zitathast Du überhaupt mal mein Beispiel angesehen? Dort habe ich das genau so umgesetzt.

Wo finde ich das bitte?

[edit] hab es gefunden, danke! [/edit]
Weihnachtliche Grüsse J.D
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: DF6GL am Dezember 25, 2015, 12:10:28
Hallo Klaus,

ja, schon, es ist ja auch dort, nur der Wunsch nach "Voreinstellung" entspr. dem gewählten Kunden steht im Raum....
Titel: Re: TextFeld anhand Dropdown auswahl befüllen!
Beitrag von: J.D am Dezember 25, 2015, 12:18:56
Zitat von: DF6GL am Dezember 25, 2015, 12:10:28
...
ja, schon, es ist ja auch dort, nur der Wunsch nach "Voreinstellung" entspr. dem gewählten Kunden steht im Raum....

Danke, dein Beispiel entspricht genau das was ich brauchte!
An alle anderen, danke nochmal für eure Tips bzgl. der Optimierung welche ich hoffentlich alle richtig umgesetzt habe...
[edit] war auf dem Handy nicht sichtbar da nicht angemeldet![/edit]

So kann ich zunächst einmal weiter machen!

Ich wünsche euch bis zu nächsten mal erst mal ein Gutes rest Jahr und einen Guten Rutsch ins neue natürlich!

Kindest Regards
Weihnachtliche Grüsse J.D