Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Werte aus Tabelle 1 in Tabelle 2 übertragen

Begonnen von schlabalu, Juli 19, 2014, 15:17:33

⏪ vorheriges - nächstes ⏩

schlabalu

Hallo,
in meiner Datenbank habe ich ein Formular >Behandlungsbelege< (verknüpft mit Tabelle >Behandlungsbelege<).
Bei Anwählen von Feld >Kennzahl< werden aus Tabelle >Behandlungskatalog< die Felder
>Kennzahl<, >Bezeichnung< und >Preis< angezeigt.

Beim Verlassen des Feldes >Kennzahl< soll der Preis in das Feld >Einzelpreis< eingetragen werden.
Wenn das Feld >Einzelpreis< vor Verlassen des Feldes >Kennzahl< nicht leer ist oder  größer 0,00 € anzeigt, soll eine Abfrage aufgehen, ob der Eintrag überschrieben werden soll, Standard-Antwort soll NEIN sein.
Hintergrund ist, dass bei Preisänderungen in div. Auswertungen die alten Preise nicht überschrieben werden.
Was muss ich in die Ereignisprozedur eingeben?

DF6GL

Hallo,

verstehe Deine Sorge um den Hintergrund nicht....

Warum sollten "alte" Einzelpreise überschrieben werden, solange keine neue Auswahl der Kennzahl erfolgt?

ZitatBeim Verlassen des Feldes >Kennzahl< soll der Preis in das Feld >Einzelpreis< eingetragen werden.

Das wäre an sich schon das falsche Ereignis (des Kombis), um den Einzelpreis zu verarbeiten.

Besser(und einfach nur so):

Sub Kennzahl_AfterUpdate()
Me!Einzelpreis = val(Me!Kennzahl.Column(2))
End Sub


sofern die Felder den richtigen Datentyp besitzen. (Spalte 2 des Kombifeldes könnte Probleme machen, deshalb die €-Formatierung entfernen.)

schlabalu

Danke, funktioniert soweit mit einem kleinem Schönheitsfehler: die Dezimalstellen aus dem Kombifeld werden nicht übernommen, obwohl ich in allen beteiligten Tabellen und Abfragen die Euro-Formatierung entfernt habe (Standardzahl, 2 Dezimalstellen)

DF6GL

Hallo,

Formate sind wie Schall und Rauch.. Es kommt auf den DATENTYP des Tabellenfeldes an....

schlabalu

Hallo,
und danke für die schnelle Antwort. Hab noch mal alles durchforstet, komme aber nicht auf den Fehler.
Vielleicht können die Bilder weiterhelfen, ein Bild sagt ja mehr als tausend Worte .....

DF6GL

Hallo,

zunächst setze den Datentyp auf "Währung" (bevorzugt) oder "Double".

Versuch dann:

Sub Kennzahl_AfterUpdate()
Me!Einzelpreis = Str(Me!Kennzahl.Column(2))
End Sub


sofern  der Preis in der 3. Spalte der Kombifeld-Liste steht.

schlabalu

Hallo,
habe jetzt zumindest rausgefunden, woran es liegt: der Übeltäter ist das Komma.
VAL schneidet alles nach dem Komma ab, da es Komma als Leerzeichen sieht und damit als Ende des Werts; STR ignoriert das Komma und macht aus 3,5 35.
Da ich aber nicht in der Systemsteuerung das Dezimaltrennzeichen generell von Komma in Punkt ändern möchte, suche ich eine Möglichkeit, das Dezimaltrennzeichen situationsbezogen anzupassen.


schlabalu

Hallo,
hab´ ich gelesen ... und nun?
Bin leider kein Access-Gott und habe mir Access selbst durch learning by doing beigebracht.
Nun bin ich halt an einer Grenze angekommen und bräuchte etwas genauere Hinweise, worauf ich achten muss. Habe alles ausprobiert, was ich aus den Antworten rauslesen konnte => ohne Erfolg.
Trotzdem danke an den Bodensee.

DF6GL

Hallo,

Sub Kennzahl_AfterUpdate()
Me!Einzelpreis = Str(Me!Kennzahl.Column(2))
End Sub

das ist der Knackpunkt...

Die Str-Funktion wandelt ein Dezimal-Komma aus einem String (steht  in der Kombifeld-Liste) in einen Dezimal-Punkt um, der für die Wert-Zuweisung an ein Formularfeld nötig ist.

schlabalu

Hallo,
hat leider so funktioniert wie ich es erwartet habe: Komma wird ignoriert und aus 3,5 wird 35
Habe daraufhin nach Str gegoogled und bei Mirosoft den Hinweis gefunden, dass man in diesem Fall CStr verwenden muss => und damit funktionierts!! Juhuuuu
Trotzdem nochmals Danke an den Bodensee.