Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: lutschi83 am November 23, 2016, 08:45:01

Titel: Excel-Formel in Access darstellen
Beitrag von: lutschi83 am November 23, 2016, 08:45:01
Hallo Leute,
ich habe folgendes Problem. Ich bilde eine Excel-Datei nun in Access ab, da es zu viele Datensätze werden und auch um Auswertungen etc. machen zu können. Nun habe ich leider folgendes Problem, dass in Excel bei bestimmten Zellen Formel hinterlegt sind. Ein paar konnte ich selbst lösen, aber folgende übersteigt irgendwie meinen Horizont :-).
=WENN(I78>0;WENN(J78="AIR";I78+7-REST(I78+3;7);WENN(J78="SEA";I78+7-REST(I78+3;-42);"")))
Zur Erläuterung:
Zelle 78 ist in der Datenbank "ETD_from_BA", J78 ist in der Datenbank "delivery_method". Delivery_Method ist ein kombinationsfeld mit der Auswahl "Sea" und "Air". In "ETD_from_BA" muss man ein Datum eingeben, kann aber auch Text sein. Wenn Text, dann soll das Feld "ETA_in_TYO" leer bleiben, ansonsten soll er die Formel berechnen und den Wert in das Feld "ETA_in_TYO" schreiben.

Ich hoffe man kann das irgendwie darstellen... :-[

Titel: Re: Excel-Formel in Access darstellen
Beitrag von: Joe0301 am November 23, 2016, 09:18:10
Hallo,
Ich verstehe zwar nicht warum man da auch Text eingeben können soll, aber erstmal unwichtig.
    Ich denke es ist mit einer If Bedingung möglich
    wenn Datum zwischen Grenzdatum und anderes Grenzdatum liegt dann
   Feld = berechnungsformel
   sonst
   Feld = leer
   end if

Sobald igrendein text drin steht sollte die Bedingung dann False werden.
Einfach so aus dem Bauch heraus, Könnte eventuell Probleme mit dem Format des Datums geben, denn da gibt es auch viele eingabevarianten.

Warum muss denn auch Text eingegeben werden können ?  Vielleicht kann man das auch anders lösen um ein reines datumfeld zu schaffen. (was logischer wäre)

MfG
Joe0301



Titel: Re: Excel-Formel in Access darstellen
Beitrag von: lutschi83 am November 23, 2016, 10:02:23
Ja, ich hab mir da jetzt auch Gedanken gemacht. Ich ändere es auf ein Datumsfeld.
Aber wie sieht der Code dann genau aus für die Formel?

Wenn([deliver_method]="Air";([etd_from_ba]+7)-(([etd_from_ba]+3) Mod 7);([etd_from_ba]+7)-(([etd_from_ba]+3) Mod -42))

Aber wo und wie lasse ich diese Prozedur starten?
Titel: Re: Excel-Formel in Access darstellen
Beitrag von: Joe0301 am November 23, 2016, 11:35:16
Dafür werden ein paar mehr Informationen über den Aufbau der Datenbank benötigt.
-soll es nur im Formular berechnet und angezeigt werden ?
oder nur in der Tabelle und später angezeigt werden ?
-geht es nur um neue einträge
- werden vorhandene einträge geändert
- Du sprichst von zwei datenbänken wie sind die verbunden.


Titel: Re: Excel-Formel in Access darstellen
Beitrag von: lutschi83 am November 23, 2016, 11:53:40
Es ist ein Endlosformular und der Wert wird in die Tabelle "tbl_order_entry" eingetragen.
In diesem Endlosformular wähle ich dann für den jeweiligen Datensatz aus ob es per "air" oder "Sea" verschickt wird.
Wenn es via "air" verschickt wird, dann folgende formel: ([deliver_method]="Air";([etd_from_ba]+7)-(([etd_from_ba]+3) Mod 7).
Wenn es via "sea" verschickt wird, dann folgende formel: ([etd_from_ba]+7)-(([etd_from_ba]+3) Mod -42))
Ich habe es so versucht:
If IsNull(test = [Delivery_Method] = "AIR") = True Then

test = ([ETD_from_BA] + 7) - (([ETD_from_BA] + 3) Mod 7)

Else

test = ([ETD_from_BA] + 7) - (([ETD_from_BA] + 3) Mod -42)

End If

Me.ETA_TYO = test

End Sub


Und im Feld wird auch was berechnet, wenn "air" ausgewählt wird, aber bei "sea" kommt nichts...
Titel: Re: Excel-Formel in Access darstellen
Beitrag von: Lachtaube am November 23, 2016, 12:37:10
Im Steuerelementinhalt eines Textfelds (in einer Zeile):=[ETD_from_BA] + 7 - Wenn([Delivery_Method] = "AIR";
                          ([ETD_from_BA] + 3) Mod 7;
                          ([ETD_from_BA] + 3) Mod 42)
Titel: Re: Excel-Formel in Access darstellen
Beitrag von: Beaker s.a. am November 23, 2016, 13:48:49
Moin,
Wie wäre es denn, aus dem Nachschlagefeld eine echte 1:n Beziehung zu
machen, und die Werte 7 und -42 in der dazu nötigen Tabelle mitzuführen?
Zitatwähle ich dann für den jeweiligen Datensatz aus ob es per "air" oder "Sea" verschickt wird.
Vermutlich mit einem Kombi.
Dieses um eine Spalte erweitert entfällt der If-Konstrukt
test = ([ETD_from_BA] + 7) - (([ETD_from_BA] + 3) Mod Me!DeinKombi.Column(2))
.Column(2) = dritte Spalte bei "ID, Text, Wert"
Wenn du das direkt in die ControlSource schreiben willst (s. #5), musst du "Me" in den
vollständigen Formularbezug auflösen
Formulare!DeinForm!


gruss ekkehard