Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Elwood am August 08, 2011, 23:58:06

Titel: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: Elwood am August 08, 2011, 23:58:06
Ein Kombifeld bezieht seine Daten aus einer Tabelle.
Im Formular ist das ja standardmäßig leer.
Nun möchte ich den ersten Eintrag der Tabelle als Standardeintrag setzen.
(ID (Autowert) gibt es nicht)

... wie kriege ich das hin?

THX!
Titel: Re: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: database am August 09, 2011, 08:56:54
Hallo,

sieh mal hier....:

http://www.donkarl.com?FAQ4.12 (http://www.donkarl.com?FAQ4.12)

HTH
Titel: Re: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: Elwood am August 09, 2011, 10:55:57
Das klappt prima!
Danke!
Titel: Re: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: Elwood am August 10, 2011, 20:26:39
Jetzt gibt es da doch noch ein Problemchen.
Ich google da nun schon Stunden dran rum und finde nichts:

Ich will den Standardwert eines Kombifeldes entweder auf den Wert einer Variablen setzen.
Also folgender Code "beim Laden":
        Me!Kuerzel.DefaultValue = Right(MA, 2)

oder
        Me!Kuerzel = Right(MA, 2)

Im ersten Fall kommt 'Name? im 2, Fall nichts.

Was ist denn da verkehrt?
Titel: Re: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: database am August 10, 2011, 20:36:38
Hallo,

Was ist den der Inhalt von 'MA' bzw. was würde beispielsweise Right(MA,2) liefern?

Wie ist dein Kombifeld aufgebaut, wie lautet denn die Datenherkunft dafür?
Wenn die gebundene Spalte eine ID aus einer Tabelle ist, dann wirds mit den 2 Zeichen ein bisschen mühsam werden - IDs sind in der Regel LongInteger-Zahlen
Wenn du in die Herkunftstabelle ein paar mal 'Daten eingibst und zwischendurch wieder löschst, dann bist du mit 2 Zeichen schnell am Ende!

"Im ersten Fall kommt 'Name?' ... "

Das weist darauf hin, dass du in deiner Wertzuweisung etwas benennst, was es nicht gibt!

Ich würde vorschlagen, du lädst die DB mit ein paar Spieldatensätzen repariert / komprimiert und gezippt hier hoch....
Titel: Re: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: database am August 11, 2011, 08:13:33
Hallo,

ich muss das Thema noch einmal aufgreifen ...

Das Ereignis 'Beim Laden' des Formulars ist für diese Geshichte nicht geeignet.
Daher stammt auch die Meldung '#Name?'

Einen Stadardwert für ein Feld zu setzen macht m.E. auch nur dann wirklich Sinn, wenn sich dieser NICHT ändert.
Somit ist die Verwendung einer Variablen eigentlich nicht der richtige Weg, da sich deren Inhalt - wie der Name schon sagt - verändern KANN.

Also bestimmst du am Besten zuerst mal welchen Einrag du haben willst und zählst in welcher Zeile deines Kombis dieser zu finden ist.
Beginne mit 0 zu zählen (Eintrag in Zeile 4 wäre demnach der Eintrag 3)
Dann gehe in den Formularentwurf und hier zu den Eigenschaften des Kombifeldes
Auf der Registerkarte 'Daten' trage dann bei 'Standardwert' ein:

[DeinKombifeldName].[ItemData](x)

...wobei 'x' für die ermittelte Eintragsposition nach obiger Zählmethode steht.

Allfällige Codeschnippsel, die in irgendeiner Form auf den Default-Wert des Kombis verweisen schmeißt du raus.

HTH
Titel: Re: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: Elwood am August 11, 2011, 10:30:04
Tja, genau das ist das Problem.
Es handelt sich hier um eine Convenience. Funktion. Das Feld dient der Auswahl des Bearbeiters der Aim Datensatz beschriebenen Aktion. Allerdings kann man den Status auch auf "geplant" setzen (in einem anderen Feld) und das an einen anderen Mirarbeiter delegieren. Nun soll der Standardwert das Kürzel des Bearbeiters sein. Ist der Bearbeiter nicht ermittelbar, wird der erste Datensatz benutzt. Das klappt mit Deinem Tipp
Me!Kuerzel = Me!Kuerzel.ItemData(0)
Recht gut. Ich verstehe nur nicht, warum.
Eigentlich müsste man die Zuweisung doch für
Me!Kuerzel.DefaultValue =
treffen, oder?
Wenn ich Me!Kuerzel = "AA")
setze, wird auch prompt überschrieben.

Das Kombi Kuerzel ist in einem Endlos-Ufo zur Datenanzeige / Eingabe.
Primärschlüssel ist auf dem Feld Kuerzel, die gebundene Spalte auf 1

Meine Frage ist eigentlich nur:
Wie ist die korrekte Syntax, um eine Textvariable einem Kombifeld als Standardwert zuzuordnen?
Titel: Re: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: database am August 11, 2011, 11:01:38
Hi,

versuch mal:
Im Ereignis 'Beim Laden'

Me!DeinKombi.DefaultValue = Chr$(34) & DeineVariable & Chr$(34)

Auf die Weise sollte auch ...

Me!Kuerzel.DefaultValue = Chr$(34) & Right(MA, 2) & Chr$(34)

...funktionieren.
Zu beachten ist bitte, dass das Namenskürzel die gebundene Spalte darstellt da diese durch die Zuweisung angesprochen wird.

HTH
Titel: Re: Kombifeld erster Eintrag aus Auswahltabelle als Defaultwert
Beitrag von: Elwood am August 11, 2011, 12:00:28
Absolut genial - so klappt es!
Und ich dachte, ich hätte "Variable" schon mal versucht... Naja, das Gedächtnis...

Übrigens haben Test ergeben, dassMe!Kuerzel = Me!Kuerzel.ItemData(0)auch jeweils einen Eintrag produziert (so, wie sich das ja eigentlich gehört) statt nur den Standardwert zu zeigen. Das Beispiel aus Deinem Link ist also so nicht ganz korrekt.

Mit dem selben Trick klappt dann auch das Me!Kuerzel.DefaultValue = Chr$(34 & Me!Kuerzel.ItemData(0)  & Chr$(34)

Und die Welt ist wieder in Ordnung  ;D
Danke!