PDA

Vollständige Version anzeigen : Standardwert


bbachmann
23.10.2001, 17:45
Hallo

Ich bin wieder da.
Mit einer Idee ohne Lösung.
Ich habe da ein Formular mit einem Unterformular.
Im Formular gibt es ein Feld [Monatsuche].(Herkunft tab_Monate)
Im Unterformular gibt's ein Feld [Monat].(Herkunft: SELECT [tab_Monate].[Monat_ID], [tab_Monate].[Monat] FROM tab_Monate;)

So, jetzt habe ich im Hauptformular über [Monatsuche] die Datensätze gefiltert und möchte, dass im UForm im Feld [Monat] automatisch der Wert steht, der in der Tabelle "tab_Monate" nach dem in [Monatsuche] eingegebenen Wert steht.(im nächste DS)
Natürlich sobald im Feld [Platzierung] im UForm ein neuer Wert eingegeben wird, also im neuen DS.
Ziel: Ich hab keine Lust, immer wieder den gleichen Wert einzugeben, wenn ich im UForm arbeite.
Es gibt ja die Option Standardwert für das Feld im UForm, das hab ich schon gesehen.
Hab versucht mit dem Assistenten das Feld Monat aus der Tabelle tab_Monate auszuwählen, leider ohne Erfolg.
Ist wohl mal wieder ein bisschen komplizierter.

Gruß Burkhard

Kurt aus Kienitz
23.10.2001, 19:28
Hallo Burkhard,

Kannst Du nicht einfach beim Verlassen des Monatsuche im HF den DefaultValue des Feldes Monat im UFO umsetzen ?

Private Sub Monatsuche_Exit()

Me.UFO.Controls("Monat").DefaultValue = Me.Monatssuche

End Sub
HTH

bbachmann
24.10.2001, 16:49
Tach Kurt

Ich hab das mal versucht. (keine Fehlermeldung)

Private Sub Monatsuche_Exit(Cancel As Integer)
' Standardwert im Unterformular einsetzen.
Me.frm_Platzierungen_UForm.Controls("Monat").DefaultValue = Me.Monatsuche
End Sub

Im Feld Monat im UForm wird aber kein Wert eingesetzt.

Da gibt's auch noch ein Problem, Steuerelementinhalt des Feldes "Monat" im UForm ist nämlich "Monat_ID" aus der Tabelle "tab-Platzierungen" (Verknüpfungsfeld zur Tabelle "tab-Monate")
Deshalb die SQL-Anweisung!

Im UForm selbst sind dann nur 2 Felder, Monat (Monat_ID) aus "tab-Platzierungen" und Platzierungen" aus "tab_Platzierungen"

Und dann soll nicht der aktuelle Wert aus dem Feld Monatsuche übernommen werden, sondern der nächste aus der Liste.
(Also bei Monatsuche = 09.01 soll im UForm 10.01 im neuen DS stehen)

Ich wähle also über das Feld "Monatsuche" einen Monat aus und bekomme im UForm alle Platzierungen für diesen Monat angezeigt.
Diesen Platzierungen sollen dann die Neuplatzierungen für den Folgemonat zugeordnet werden.
Den Folgemonat hab ich dann schon über das Suchfeld (bei nicht in Liste) eingefügt.

Ich hoffe, das ist nicht zu verwirrend, 'glaub nicht, 'bin ja noch am Anfang meiner ACCESS-Karriere.

Bis später
Burkhard

Kurt aus Kienitz
24.10.2001, 17:25
Hallo Burkhard,

Wenn ich das richtig verstanden habe, dann sehen die
Tabellen so aus:

Tabelle: Monate
ID | Monat
---+-------
6 | 01.01
7 | 02.01
8 | 03.01
9 | 04.01
10 | 05.01
11 | 06.01


Tabelle: Platzierungen
MonatID | Platzierung
--------+-------------
6 | 4
7 | 2
8 | 3
9 | 6
10 | 7

Dann müsste die Vorbelegung im UFO so funktionieren

Private Sub Monatsuche_Exit(Cancel As Integer)
'
' Standardwert im Unterformular einsetzen.
'
Dim vVar As Variant
'
' höchste MonatsID aus Platzierungen ermitteln
'
vVar = DMax("[MonatID]","Platzierungen")
'
If Not IsNull(vVar) Then
'
' DefaultValue der MonatID setzen
'
Me.frm_Platzierungen_UForm.Controls("Monat").DefaultValue = vVar + 1
'
End if
'
End Sub

HTH

bbachmann
24.10.2001, 17:52
Juhuuu!!!

Hat funktioniert.

Wie kann ich das wieder gutmachen?
Reichen Tausend Danksagungen?

Burhard

Kurt aus Kienitz
24.10.2001, 17:57
Klar reichen die !

Das war die erste :D

bbachmann
25.10.2001, 17:19
Hallo

Jetzt hab ich doch noch ein Problem mit dieser Sache.
Ich habe den Code in einer TestDB ausprobiert, dort klappt es, in der ZielDB nicht.
Die TestDB befindet sich in einem ZIP-Ordner.
In der TestDB sind in tab_Platzierungen Datensätze bis 08.01 eingetragen und in tab_Monate bis 09.01.
=> DefaultValue immer 09.01. okay!

In der ZielDB existieren in tab_Platzierungen schon Datensätze bis 09.01 und einer für 10.01.
In tab_Monate bis 10.01.
=> DefaultValue müsste 10.01 sein!
Warum wird hier kein DefaultValue übernommen?

Ich habe schon aus der TestDB die entsprechenden Formulare rübergezogen, ohne Erfolg.

Gruß Burkhard

Kurt aus Kienitz
25.10.2001, 17:26
Hallo,

Na ja, wenn der max. Wert aus der Tabelle tab_Platzierungen 10.01 wird eine Vorbelegung für 11.01 versucht.
Dafür gibt es aber noch keinen Eintrag in der Tabelle tab_Monate.

bbachmann
25.10.2001, 18:09
Tschuldigung, hab ich nicht ganz verstanden.
Heißt das, dass es daran liegt, dass für 10.01 in tab-Platzierungen schon ein Datensatz existiert.

Wenn ich über das Suchfeld "09.01" auswähle wird kein Default angezeigt obwohl es die Monate_ID für 10.01 gibt!

Bis gleich
Burkhard

Kurt aus Kienitz
25.10.2001, 18:16
Hallo,

Dem ist leider so !
Das DMax() geht stur auf die Tabelle tab_Platzierungen und sucht dort die höchste Monat_ID heraus.

Steht denn in tab_Platzierungen irgendwas drin, woran man den einen Oktober-Eintrag von den anderen unterscheiden kann ?

bbachmann
25.10.2001, 18:33
Ja sia, die Platzierung selber, die geht im Normalfall von 1 - 100, also 100 mal Monat.

Sach bloß Du hast wieder ne Lösung!?

Bis gleich
Burkhard

... muß gleich zur Nachtschicht, die letzte dann hab ich Urlaub, jipppie! :)

bbachmann
25.10.2001, 18:50
Hallo Kurt

Wenn Du keine bessere Idee hast, mach ich es ganz einfach.

Me.frm_PlatzierungenUForm.Controls("Monat").DefaultValue = DMax("[Monat_ID]", "tab_Platzierungen")

Der neue Monat wird eh unmittelbar vor der Eingabe der Neuplatzierungen eingegeben!

So klappt es, man muß eben nur mal genauer nachdenken.

Noch mal Danke für deine Mühe.
Wie gesagt, bin für jeden Tipp dankbar.

Gruß Burkhard

bbachmann
28.10.2001, 18:44
... jetzt hab' ich noch ein Problem.
Eigentlich möchte ich, dass der Standardwert "DMax("[Monat_ID]", "tab_Platzierungen")
" nur erscheint, wenn er nicht schon im aktuellen DS im UForm steht.
Wie sag ich das ACCESS?
Ich ahne schon, dass es nicht so schwer ist aber ich bin halt noch nicht so fit!

Gruß Burkhard

Kurt aus Kienitz
29.10.2001, 09:49
Hallo Burkhard,

Soll das heißen, daß ein vorhandener Wert überschrieben wird ?
Dürfte beim setzen des Standardwertes eigentlich nicht passieren !?!?

bbachmann
29.10.2001, 13:57
Nee nee, überschrieben wird nix.
Nur der Form halber wär es nicht schlecht, wenn ACCESS merken würde, dass für diesen Monat im UForm schon ein DS existiert oder keine Duplikate "im UForm" zulässt.

CU
Burkhard

Kurt aus Kienitz
29.10.2001, 14:06
*schwitz* ich fing schon an Panik zu bekommen ;)

Du könntest entweder einen UNIQUE-Index auf die Spalte KW der Tabelle tbl_Platzierung legen oder denn DMax() von tbl_Platzierung und tbl_Monat vergleichen und nur dann den Standardwert umsetzen wenn DMax() von tbl_Monat > DMax() von tbl_Platzierung.

bbachmann
29.10.2001, 15:32
okay, probier ich heut Abend aus.
Jetzt muß ich erst mal meinen Kühlschrank updaten. (sprich einkaufen)

Bis später
Burkhard

bbachmann
29.10.2001, 18:37
Jawoll, das ist es.

Und so siehts aus:

Private Sub Monatsuche_Exit(Cancel As Integer)
' Standardwert im UForm einsetzen.
Dim vVar1 As Variant
Dim vVar2 As Variant
' Höchste Monate_ID aus tab_Platzierungen ermitteln.
vVar1 = DMax("[Monat_ID]", "tab_Monate")
vVar2 = DMax("[Monat_ID]", "tab_Platzierungen")
If vVar1 > vVar2 Then
' Standardwert der Monate_ID setzen.
Me.frm_PlatzierungenUForm.Controls("Monat").DefaultValue = DMax("[Monat_ID]", "tab_Monate")
End If
End Sub

1000 Dank
Burkhard