Autor Thema: Feld Formeln  (Gelesen 2131 mal)

Offline sabinerin

  • Frischling
  • *
  • Beiträge: 6
Feld Formeln
« am: 22.03.07 - 16:45:09 »
Hallo,
ich bastle schon ewig an einer Datenbank, welche Provisionen automatisch berechnet. Die Berechnungen sind komplex - es stecken gnaze Kataloge dahinter - das eine schließt das andere aus. Nun komme ich mit meinen spärlichen Notes-Kenntnissen, der Hilfe und dem Forum nicht mehr weiter.

Die letzte Hürde: Ich habe in ca. 15 Feldern verschiedene Rechen-Formeln hinterlegt.

Nun möchte ich ein Feld in dem nun letztendlich die Provision angezeigt wird die nach Berücksichtigung sämtlicher Kriterien tatsächlich zutrifft.

Mit z.B.  @If(feld1!="";feld1a; feld2!="";feld2a;feld3) klappt es nicht, weil in beiden Feldern etwas stehen kann.

Im Prinzip will ich dem Feld sagen: schreibe den Wert aus Feld 1 rein wenn da was drin steht.
Wenn aber in Feld 2 was drin steht, dann schreib nicht den Wert von Feld 1 sondern von Feld 2 und ignoriere Feld 1
Schreibe das aber nur unter der Voraussetzung, dass z.B im Dialogfeld dieses oder jenes Wort hinterlegt ist. Wenn das zutrifft und der Wert kleiner als 250 ist, schreibe 250. Bei zwei anderen Wörtern schreibe Null.

Ich hoffe sehr, dass das jemand nachvollziehen (tu`mich sehr schwer es zu erklären) und mir helfen kann. ...Oder mir dann Bescheid gibt wenn das unmöglich ist, damit ich den Kampf aufgeben kann.

Ganz herzlichen Dank!!

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Feld Formeln
« Antwort #1 am: 22.03.07 - 16:51:07 »
Also ich du hast 15 Felder in denen etwas drin stehen kann ? Und nun willst du in einem Feld einen Wert reinschreiben der Aufgrund der vorhandenen 15 Felder reagiert und dann am Ende zu einem Ergebnis kommt? Das wird schwierig, wie viele Kombinationen sind denn möglich ?

Oder geht es wirklich nur darum , das Feld in dem ein Wert steht in das Zielfeld zu schreiben ?
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline sabinerin

  • Frischling
  • *
  • Beiträge: 6
Re: Feld Formeln
« Antwort #2 am: 22.03.07 - 17:24:20 »
Danke für die schnelle Reaktion.
Es gibt ca. 5 Kombinationen bzw. Varianten die sich aus den Inhalten der Felder zusammensetzen.

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Re: Feld Formeln
« Antwort #3 am: 22.03.07 - 18:08:03 »
Wenn ich die Aufgabe richtig verstanden habe, könntest du es evtl. über Variablen lösen.

Etwa so:
Code
tmp1 := @If(Feld2!="";Feld2;Feld1);
tmp2 := @If(Dialogfeld = "ja";tmp1;0);
tmp3 := @If(tmp2>0 & tmp2<250;250;tmp2);
tmp3

Du musst halt nacheinander die ganzen Bedingungen abprüfen.

HTH
Bille
« Letzte Änderung: 22.03.07 - 18:09:50 von Bille »
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline sabinerin

  • Frischling
  • *
  • Beiträge: 6
Re: Feld Formeln
« Antwort #4 am: 22.03.07 - 18:22:42 »
Herzlichen Dank Bille!

So ähnlich hatte ich das mal probiert - aber eben halt nur so ähnlich.
Bin jetzt nicht mehr im Büro und starte gleich morgen früh den Versuch.
Könnte man soetwas auch über ein Script lösen?

Gruß und schönen Abend

Sabine

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Re: Feld Formeln
« Antwort #5 am: 22.03.07 - 18:56:17 »
Ja, das sieht in Script ziemlich ähnlich aus:

Code
        Dim tmp1 As Double, tmp2 As Double , tmp3 As Double

        If doc.Feld2(0) = "" Then
		tmp1 =  doc.Feld1(0)	
	Else
		tmp1 =  doc.Feld2(0)
	End If
	
	If doc.Dialogfeld(0) = "ja" Then
		tmp2 = tmp1
	Else
		tmp2 = 0
	End If
	
	If tmp2 >0 And tmp2 < 250 Then
		tmp3 = 250
	Else
		tmp3 = tmp2
	End If
	
	doc.Ergebnis = tmp3

Das geht bestimmt noch irgendwie kürzer und schöner, aber das Resultat sollte das gleiche sein ...

Den Datentyp für die Variablen musst Du entsprechend Deiner Werte anpassen. Welcher wofür passt, findest Du in der Hilfe unter "data types".
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Feld Formeln
« Antwort #6 am: 23.03.07 - 08:35:40 »
Wieso über ein script.
Wenn ein Doc. erstellt wird berechnet sich die Provision doch in dem Moment also das ganze in einem Feld mit @Formel.

Boris

Offline sabinerin

  • Frischling
  • *
  • Beiträge: 6
Re: Feld Formeln
« Antwort #7 am: 23.03.07 - 11:42:36 »
Hallo,
ich hab das jetzt nochmal versucht - klappt aber nicht..

Mein Gedankengang:

Wenn Dialogfeld A oder B oder C oder D dann schreibe Ergebnis aus Feld X;
Wenn Dialogfeld A oder B oder C oder D UND H dann schreibe Ergebnis aus Feld Y;
Wenn Dialogfeld A oder B oder C oder D UND I dann schreibe Ergebnis aus Feld Z;
Wenn Dialogfeld E oder F dann schreibe 0;
wenn Dialogfeld G dann schreibe Ergebnis aus Feld W;
wenn x,y,z kleiner ist als 250 dann schreibe 250;

...und die Formel

tmp1:=@If (Dialogfeld!= A|B|C|D;Feld X;0);
tmp2:=@If (Dialogfeld!= A|B|C|D & H=""; Feld Y;0);
tmp3:=@If (Dialogfeld!= A|B|C|D & I=""; Feld Z;0);
tmp4:=@If (Dialogfeld!= E|F|;0;0);
tmp5:=@If (Dialogfeld!= G; Feld W;0);
tmp6:=@If (tmp1 |tmp2 |tmp3 < 250;250;0);
tmp7

Bringt keine Fehler - rechnet aber auch nix :-(
Mach ich das total falsch?


Gruß Sabine

klaussal

  • Gast
Re: Feld Formeln
« Antwort #8 am: 23.03.07 - 11:47:47 »
Muss das nicht "A"... usw heissen ?

Ausserdem ist das Konstrukt mit den Pipes wohl falsch. Müssen da nicht mehr Klammern gesetzt werden ?

Dialogfeld!= A|B|C|D & I=""   sondern: Dialogfeld!= (A|B|C|D) & I=""

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Feld Formeln
« Antwort #9 am: 23.03.07 - 11:47:58 »
Fehlen vielleicht Klammern um (A|B|C|D)?

und warum "!=", müsste es nicht "=" sein?

Thomas
Thomas von der IuK

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Feld Formeln
« Antwort #10 am: 23.03.07 - 12:09:34 »
So hier einmal mein Versuch. Ich habe das mal so gelernt m dass die Bedingungen so seperat formuliert werden müssen, hatte mal ein ähnliches Problem.


Code
@IF( A != "" | B!="" | C! = "" | D != "" ; Feld X ; "");
@IF( A != "" & H != ""| B!="" & H != ""| C! = "" & H != ""| D != "" & H != "";Feld Y;"");
@IF( A != "" & I != ""| B!="" & I != ""| C! = "" & I != ""| D != "" & I != "";Feld Z;"");
@IF( E != "" | F "= "" ; 0 ; "");
@IF( G != "" ; Feld w ; "" );
@IF( x < 250 | y < 250 | z < 250 ; 250 ; "" );
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Feld Formeln
« Antwort #11 am: 23.03.07 - 13:31:26 »
Wie soll man das pflegen können, wenn sich einmal Änderungen bei der Provisionierung oder eine Umformulierung der DialoglistenAuswahlwerte ergeben ?

Erstens:
Die Dialoglisteninhalte in einem Feld BERECHNET BEIM ANLEGEN definieren und im Dialogfeld selbst die Auswahl darüber steuern. Das hat den Vorteil, daß Dokumente konsistent bleiben, auch wenn sich die Dialogliste einmal ändert, weil jedes Dokument die Auswahl enthält, die bei seiner Erstellung gültig war.

Das hat den Nachteil, daß eine Volltextsuche über den Dialogfeldinhalt nur noch mit Feldangabe möglich ist, denn jedes Dokument enthält alle Auswahlmöglichkeiten in dem Feld der Dialoglisteninhalte.

Zweitens:
Formalisiere deine Auswahlmöglichkeiten in kleineren Schritten. Dann behältst du den Überblick und kannst deine Ergebnisse auch testen (mit Zwischenergebnissen).

Drittens:
Gib deinen Ausdrücken sprechende Namen und kommentiere sie. In einem Jahr weißt du sonst nicht mehr, warum du diesen Formelsalat so angemengt hast.

Viertens:
Führe ein Feld ein, daß die errechnete Provision nach den in der jeweils aktuellen Provisionsrichtlinien speichert und sich nicht mehr ändert, wenn sich die Richtlinie ändert. Dann brauchst du noch einen Button, der dir dieses Feld wieder auf 0 setzt, damit die Provision doch neu berechnet werden kann (wenn die erste Berechnung mit falschen Schlüsselwörtern erfolgte z.B.)

ListeFallABCD:=@Subset(DIALOGLISTWERTE;4);
ListeFallEF:=@Subset(@Subset(DIALOGLISTWERTE;6);-2);
ListeFallG:=@Subset(@Subset(DIALOGLISTWERTE;7);-1);
MindestBetrag:=250;

FallABCD:=@If(@IsMember(Dialogliste;ListeFallABCD);@True;@False);
FallEF:=@If(@IsMember(Dialogliste;ListeFallEF);@True;@False);
FallG:=@If(@IsMember(Dialogliste;ListeFallG);@True;@False);

tmp1:=@If(FallABCD;@If(H="";Y;I="";Z;X);0);
ProvisionABCD:=@If(tmp1>0;tmp1<MindestBetrag;MindestBetrag;tmp1);
Provision:=@If(FallEF;0;FallG;W;ProvisionABCD);

FIELD PROVISIONBERECHNET:=@If(PROVISIONBERECHNET=0 & !@IsError(Provision);Provision;PROVISIONBERECHNET);
Provision

So kann es klappen.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Re: Feld Formeln
« Antwort #12 am: 23.03.07 - 15:40:50 »
Hallo Sabine,

dass bei Deiner Formel nichts berechnet wird, liegt wohl daran, dass Du zum Schluss die Variable tmp7 ausgibst, diese aber keinen Inhalt hat.

tmp1:=@If (Dialogfeld!= A|B|C|D;Feld X;0);
tmp2:=@If (Dialogfeld!= A|B|C|D & H=""; Feld Y;0);
tmp3:=@If (Dialogfeld!= A|B|C|D & I=""; Feld Z;0);
tmp4:=@If (Dialogfeld!= E|F|;0;0);
tmp5:=@If (Dialogfeld!= G; Feld W;0);
tmp6:=@If (tmp1 |tmp2 |tmp3 < 250;250;0);
tmp6

Abgesehen davon solltest Du natürlich die Hinweise von Norbert beachten.

HTH
Bille
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline sabinerin

  • Frischling
  • *
  • Beiträge: 6
Re: Feld Formeln
« Antwort #13 am: 23.03.07 - 16:32:45 »
...an dieser Stelle möchte ich mich jetzt ersteinmal für die phantastischen Bemühungen bedanken!!
Das war mein erster Forumeintrag - ich bin begeistert. Danke..

Ich versuche das umzusetzen was Ihr empfohlen habt. Aber ich scheitere schon an dem Feld "berechnet beim anlegen" für den Dialoglisteninhalt. Was für ne Formel? Wie steuern?

Naja - heute mach ich nix mehr...

Ich wünsche Euch ein schönes Wochenende!

Gruß Sabine

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz