Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Nach Auswahl in einem Kombinationsfeld in anderem Feld bestimmten Wert ausgeben

Begonnen von Sealine, Juli 27, 2011, 18:46:14

⏪ vorheriges - nächstes ⏩

Sealine

Nabend zusammen,
ich mal wieder mit einem Problem was wohl wiedermal keins ist und ich mich nur zu doof anstelle :-)

Also wie folgt:
Vorhandene Tabellen: Sonderprüfungen (Spalten SPrüfung und SJahre) und Nutzerdaten
Abfrage: Erweiterte Nutzerdaten (liest bestimmte Sätze aus den Nutzerdaten aus und führt ein paar Berechnungen durch)
Formulare: Nutzerdaten

In meinem Formular Nutzerdaten habe ich ein Kombinationsfeld welches sich die Daten aus Sonderprüfungen.Sprüfung holt und diese dann in den Nutzerdaten mit speichert.
Nun haben aber diese Sonderprüfungen einen bestimmten Zeitintervall in denen Sie wiederholt werden müssen. Dafür Sonderprüfungen.SJahre.
Nun möchte ich in meinem Formular im Kombinationsfeld zum Beispiel die 1 Prüfung auswählen, und direkt neben dem Kombinationsfeld ein Feld haben in dem dann die Gültigkeit aus der Tabelle Sonderprüfung ausgegeben wird.

Also wenn ich als ID 1 die SPrüfung "Rasenmäher" und Sjahre "2" habe soll bei der Auswahl im Formular die 2 neben der Prüfung ausgegeben werden.
Dazu sei gesagt das ich mehrere Kombinationsfelder habe die alle auf die Sonderprüfungen zugreifen um sich dort Ihre Prüfung zu holen.

Ich hoffe ich hab es halbwegs verständlich erklärt so das mir einer von euch vielleicht nen Tip geben kann.

Danke im voraus
Marc



database

Hallo,

ZitatAlso wenn ich als ID 1 die SPrüfung "Rasenmäher" und Sjahre "2" habe soll bei der Auswahl im Formular die 2 neben der Prüfung ausgegeben werden.

Wenn dein Kombifeld alle 3 Felder enthält ... in der Reihenfolge  ID, SPrüfung, SJahre ... und neben dem Kombi ein Textfeld steht ... txtJahre ... dann KÖNNTE das z.B. so gehen:


Private Sub DeinKombifeld_AfterUpdate()

    Me!txtJahre = Me!DeinKombifeld.Column(2)

End Sub


Wobei ich der Meinung bin, dass die Anzeige des Wertes SJahre eigentlich NUR als Erleichterung oder zusätzliche Info dienen sollte.
Das Schreiben dieses Wertes in eine andere Tabelle ist kein ordentlicher Vorgang!
Wenn du den Bezug zu diesem Wert in einer anderen Tabelle benötigst solltest du besser die ID des ausgewählten Datensatzes (in dem Fall also 1) als Fremdschlüssel in die Zielzabelle schreiben.
Den Wert für SJahre erhältst du dann jederzeit per Abfrage geliefert!

HTH

Sealine

Hiho,
also das mit dem Private Sub ist klar und verstanden :-)

Du sagst so wie ich es gelöst habe ist es kein Ordentlicher Vorgang. Auch wenn es meine erste Datenbank ist möchte ich versuchen alles richtig udn Ordentlich zu machen.

Deinen Weg den du Beschreibst verstehe ich in der Theorie, wie ich das Ganze aber in die Praxis umsetze ist gerade nen bissel schwer für mich alleine ;-) Hast du dazu vllt noch ein paar Newbie Tips die ich nachvollziehen / nacharbeiten kann damit ich genau kapiere was du meinst ?

Danke
Marc

database

Hallo,

ich habe dir ein klitzekleines Beispiel erstellt.
2 Tabellen, ein Formular mit dem Kombi und dem Textfeld für die SJahre sowie eine Abfrage, welche dann die SJahre zu Nutzerdaten anzeigen kann.

HTH

[Anhang gelöscht durch Administrator]

Sealine


Sealine

So, nach gucken, verstehen und umsetzen funktioniert der erste Teil nun genauso wie er soll.
Ich habe mal nen Bild angehängt damit man meiner Beschreibung folgen kann ;)

Also ich wähle eine Prüfung aus, diese gibt dann auch entsprechend die Jahre der Gültigkeit aus. Soweit funzt alles.
Die weiteren Prüfungen habe ich mit SP_ID_F1 -7 eingefügt und die Prozeduren / Ereignisse entsprechend geändert. Funzt auch alles.

Nun habe ich vor diesem Umbau und der "Unschönen" Lösung es in meinen Erweiterten Nutzerdaten so gehabt das das Erlangt Datum * Gültigkeit die Neuvorlage berechnet hat.

Das Ganze sah bei mir so aus:
Prüfungstage: [Prüfungsjahr]*365
Neuvorlage: [Vorgelegtam]+[Prüfungstage]
Das Ganze dann durchnummeriert von 1-7

Ist vielleicht nicht die schönste Lösung gewesen, aber sie war für mich schlüssig und funktionierte ;)

Nun stehe ich gerade auf dem Schlauch woher ich denn jetzt meine Prüfungsjahre bekomme um sie in meiner Berechnung weiterzuverwenden.
mit
Prüfungstage: [SJahre]*365
wird nur die erste Zeile in der DB berücksichtigt. wie bekomme ich meine Auswertung jetzt wieder hin ?
Ich hoffe Ihr könnt mir folgen ;)

[Anhang gelöscht durch Administrator]

database

Hallo,

ich verstehe nicht ganz ...

In der Abfrage kannst du doch berechnete Felder einfügen.
NeuVorlage: [VorgelegtAm] + ([SJahre]*365)

Weil du die 'unschöne' Lösung so hervorhebst...

Das Problem bei solchen Dingen ist, dass die Normalisierung der Tabellen nicht gegeben ist, wenn in der Tabelle Berechnungen stattfinden,
berechnete Werte gespeichert werden oder Daten redundant gespeichert werden.


Sealine

Hallo,
ich versuche es nochmal anders zu erklären. Vielleicht hab ich auch nen Fehler gemacht, was ich nicht ausschließen möchte ;)

Ich hab eigentlich alles so wie in deinem Beispiel übernommen.

Aber ich  habe ja mehrere Kombinationsfelder.
Somit hab ich nun "einfach" gedacht und die Abfragen (Datensatzherkunft) für die Kombinationsfelder wie folgt gesetzt
SELECT Sonderpruefungen.SP_ID, Sonderpruefungen.SPruefung, Sonderpruefungen.SJahre FROM Sonderpruefungen;

Der Steuerelementinhalt in die Nutzerdatenbank SP_ID_F. Für jedes weitere Kombinationsfeld dann entsprechend SP_ID_F1 SP_ID_F2 .... SP_ID_F7
Weil ich ja nicht alle Kombinationsfelder auf SP_ID_F setzen kann da ich dann ja überall das gleiche Angezeigt bekomme.

Das Feld für die Jahre wird dann per
Me.txtjahre = Me.cboSonderpruefung.Column(2)
Me.txtJahre1 = Me.cboSonderpruefung1.Column(2)
Me.txtJahre2 = Me.cboSonderpruefung2.Column(2)
Me.txtJahre3 = Me.cboSonderpruefung3.Column(2)
Me.txtJahre4 = Me.cboSonderpruefung4.Column(2)
Me.txtJahre5 = Me.cboSonderpruefung5.Column(2)
Me.txtJahre6 = Me.cboSonderpruefung6.Column(2)
Me.txtJahre7 = Me.cboSonderpruefung7.Column(2)
ausgelesen ...

Soweit so gut. Ich weiß nicht ob das alles so "Ordentlich" ist, aber es funktioniert und tut das was ich möchte ;)

Nun habe ich das Problem das wenn ich in meiner Abfrage (Erweiterte Nutzerdaten) mit der NeuVorlage: [VorgelegtAm] + ([SJahre]*365) immer nur das berechnet bekomme was ich im ersten Kombifeld auswähle.
Also zum Beispiel im ersten Kombifeld EH Kurs mit 2 Jahren ausgewählt.
Dann wird jedes Neuvorlage Datum nur um 2 Jahre raufgesetzt. Auch wenn ich im zweiten Kombifeld  Bierbrauen mit 5 Jahren auswähle. Im Textfeld bei Jahren steht dann auch 5, aber irgendwo hab ich da murks bei der Abfrage da das Neuvorlagedatum nur um die Jahre des ersten Kombifeldes raufgesetzt wird.

Alles ganz schön widl geschrieben, aber ich weiß nicht wie ich es besser ausdrücken / beschreiben kann.
Ich hoffe du verstehst mich ;)

database

Hallo,

kann es sein, dass ich langsam verstehe, wie du deine Tabelle aufgebaut hst.
Geht aus deiner Schilderung etwa hervor, dass du die 8 Prüfungsgegenstände...  in einer Tabelle abgelegt hast?

Zitat...aber irgendwo hab ich da murks bei der Abfrage ...

Naja das ist - wenn obiges zutrifft - eine Kombination aus verschiedenen Mürksen. ;)

Kannst du deine DB denn nicht komprimieren und hier mit ein paar Spieldaten hochladen?
Es wäre um einiges leichter, wenn ich das Ding mal sehen könnte anstatt irgend welchen Vermutungen nachzuhüpfen  ;D

Sealine

werde ich mich morgen früh mal drum kümmern. bin heute noch zu lange unterwegs ;)
danke

database


Sealine

Achso noch was vergessen
Zitat
kann es sein, dass ich langsam verstehe, wie du deine Tabelle aufgebaut hst.

Das möchte ich nicht bestreiten ;) Wahrscheinlich wie ein kompletter Anfänger ;)

Zitat
Geht aus deiner Schilderung etwa hervor, dass du die 8 Prüfungsgegenstände...  in einer Tabelle abgelegt hast?
Aehm ....Könnte so sein *pfeif* habe halt die Prüfungen mit ID und Jahren in einer Tabelle (so wie in deinem Bespiel) und die auswahl des kombifeldes wird dann in eine andere db geschrieben. aber da dann alle 8 rein, japp.
Wahrscheinlich totale grütze ;) Aber das kannst du dir dann ja mal anschauen und mir die DB um die Ohren hauen ;)

Schönen Abend noch ;)



database

Hallo,

da du offenbar mit Franz eine Vereinbarung getroffen hast möchte ich nicht dazwischenfunken.

Soviel aber noch ... mir ist aufgefallen, dass du in der Tabelle 'Unternehmen' Daten von Personen zu speichern gedenkst, die du so ohne Weiteres NICHT speichern und verarbeiten darfst.
Der Name des behandelnden Arztes ist dabei kein Problem doch solltest du tunlichst davon Abstand nehmen zu einer Person Krankheiten und Medikamente zu speichern.
Das stellt einen Verstoß gegen den Datenschutz dar und du kannst dir mächtig Probleme damit einhandeln!

HTH