Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: 7Stein am 25.08.04 - 11:51:20

Titel: Formel
Beitrag von: 7Stein am 25.08.04 - 11:51:20
wie kann ich bei der Formel hinbekommen, dass dort eine 1 drinsteht, wenn im Datenbankfeld nichts enthalten ist?

Code
val := @DbLookup( "":"NoCache"; ""; "(BestellPositionen)"; @Text(@DocumentUniqueID);"Verpackungseinheit" );
@If( @IsError( val ); ""; val )
     
Titel: Re:Formel
Beitrag von: Marinero Atlántico am 25.08.04 - 12:10:07
vielleicht so? Nicht sicher.

Code
val := @DbLookup( "":"NoCache"; ""; "(BestellPositionen)"; @Text(@DocumentUniqueID);"Verpackungseinheit" );
temp:= @If( @IsError( val ); "1"; val );
@textToNumber(temp);
Titel: Re:Formel
Beitrag von: 7Stein am 25.08.04 - 12:16:50
habe es ausprobiert, aber dann steht in der Ansicht "@ERROR"
also kann das ja so nicht funzen
Titel: Re:Formel
Beitrag von: elajen am 25.08.04 - 13:30:48
Hallo,

füge mal noch das Fettgedruckte ein

val := @DbLookup( "":"NoCache"; ""; "(BestellPositionen)"; @Text(@DocumentUniqueID);"Verpackungseinheit" );
temp:= @If( @IsError( val ) | val = ""; "1"; val );
@textToNumber(temp);

Gruß von Ekki
Titel: Re:Formel
Beitrag von: Joe am 25.08.04 - 13:34:13
Wie wär's denn damit:

Code
val := @If( @DbLookup( "":"NoCache"; ""; "(BestellPositionen)"; @Text(@DocumentUniqueID);"Verpackungseinheit" )="";"1";@DbLookup( "":"NoCache"; ""; "(BestellPositionen)"; @Text(@DocumentUniqueID);"Verpackungseinheit" ))
Titel: Re:Formel
Beitrag von: Thomas Schulte am 25.08.04 - 13:37:19
Frage: In welchem Kontext willst du das denn einsetzen.
Titel: Re:Formel
Beitrag von: 7Stein am 25.08.04 - 13:44:29
naja, wie du vielleicht aus meinen letzten Postings sehen kannst, bin ich noch relativer newbie in Notes.
Die db und alle Masken etc. habe ich hier so vorgefunden.
Um die Applikation jetzt aber ein bisschen benutzerfreundlicher zu gestalten, und zusätzliche tools einzubauen, habe ich das Feld Verpackungseinheit hinzugefügt. Aber es haben ja jetzt alle alten Dokumente keine Verpackungseinheit.
Damit die Spalte in der view nicht leer ist oder so etwas wie incorrect number oder so auftaucht, möchte ich gerne, das dort eine 1 drinsteht, wenn kein anderer Wert in dem Dokument enthalten ist.

Soweit verstanden?

Gruß 7Stein
Titel: Re:Formel
Beitrag von: 7Stein am 25.08.04 - 13:55:46
jetzt steht dort zwar die 1 drin, also schonmal ein Teilerfolg.
Aber:

dem Feld habe ich übe die Eigenschaften gesagt, "Allow multiple values", weil ja für jedes Dokument eine neue Zeile angehangen wird. Das ist bei den anderen Feldern der Maske genauso.
Aber in dem Feld für die Verpackungseinheit steht oben beim ersten Dokument eine 1 und bei den anderen Dokumenten steht gar nix mehr.
Kann mir jemand erklären wieso?
Ja und dann natürlich noch die Frage was macht das "|val"?

So, es stehen dann mehrere Einträge in dem Feld, wenn in dem Dokument ein Wert für die Verpackungseinheit hinterlegt ist.
Ist dies nicht der Fall, wird immer nur einmal die 1 angezeigt.
Also muss das doch etwas mit der Formel zu tun haben oder?
Zitat
val := @If( @DbLookup( "":"NoCache"; ""; "(BestellPositionen)"; @Text(@DocumentUniqueID);"Verpackungseinheit" )="";"1";@DbLookup( "":"NoCache"; ""; "(BestellPositionen)"; @Text(@DocumentUniqueID);"Verpackungseinheit" ))
bei dieser Formel erhalte ich immer eine Fehlermeldung:
No main or selection expression in formula: "
So, das waren - glaube ich - für's erste alle Neuigkeiten.

Danke für die Hilfe
Titel: Re:Formel
Beitrag von: Thomas Schulte am 25.08.04 - 16:44:32
entweder steh ich heute auf der Leitung oder es ist das Wetter.

Noch einmal die Frage befindest du diich mit deiner Formel in einer Maske, und dort in einem Feld

oder

in einer Ansicht und dort in einer Spalte.

Im zweiten Fall vergiss das DBLookup, das funktioniert in Spalten von Ansichten nicht

Oh und dein Fehler liegt daran, das eine Formel immer einen Haupt oder Auswahlausdruck enthalten muss. In deinem Fall einfach in der Zeile darunter  Val eintragen.

Thomas
Titel: Re:Formel
Beitrag von: koehlerbv am 26.08.04 - 00:21:00
Hallo, 7stein,

geh' mal wirklich in Dich - bist Du nicht auch der Meinung, dass Du gerade versuchst, Deine Aufgaben von anderen hier im Forum erledigen zu lassen ? Du hast keinerlei Kennung, nimmst aber offensichtlich auch kein gutes Buch in die Hand oder besuchst eine Schulung. So kann das nicht funktionieren.

Nix für ungut,
Bernhard
Titel: Re:Formel
Beitrag von: 7Stein am 26.08.04 - 07:40:34
Also ich wollte mir hier nur ein paar Hilfestellungen holen.
Ich habe das Buch"Anwendungsentwicklung unter Notes/Domino 5" von Addison-Wesley hier.
Auf eine Schulung werde ich wohl auch noch geschickt. Aber im Moment bin ich so ziemlich auf mich gestellt. Mein Kollege ist im Urlaub und ich bin erst seit knapp vier wochen dabei mich mit Notes zu beschäftigen. Da wird man ja wohl mal fragen dürfen oder?

Titel: Re:Formel
Beitrag von: 7Stein am 26.08.04 - 07:45:48
Hallo Thomas,
ich brauche die Formel für eine Maske.
Die Felder der Maske haben das Flag "Allow multiple values" wie oben beschrieben.
das ganze dient dazu, enen Lieferschein zu schreiben.
Ich hoffe das klärt deine Fragen.
Titel: Re:Formel
Beitrag von: Driri am 26.08.04 - 10:06:07
@7Stein :

Fragen immer, dafür ist das Forum ja gedacht. Und hier wird eigentlich auch immer weitergeholfen.

Ich denke, was Bernhard eher meinte ist, daß dir absolut die Grundkenntnisse, vor allem zur Systemstruktur, von Notes fehlen. Da Du ja scheinbar aus der Welt der relationalen Datenbanken kommst, ist ein Umstieg sicherlich nicht einfach, da man dazu neigt, die Systeme zu vergleichen (ging mir am Anfang ja auch so).
Das Problem ist, daß Notes nun einmal grundlegend anders funktioniert und sich dadurch gerade für Umsteiger Stolpersteine ergeben, sie man umgehen kann, wenn man erstmal das System verstanden hat.

Und auf Dauer ist dir sicherlich nicht damit geholfen, daß Du das Forum als Unterstützung hast. Mindestens die erste Designer-Schulung sollte Pflicht für dich sein, das macht dir das Leben einfacher.
Titel: Re:Formel
Beitrag von: 7Stein am 26.08.04 - 10:39:10
ja, das sag mal meinem Chef!!!!!
Titel: Re:Formel
Beitrag von: Semeaphoros am 26.08.04 - 10:43:42
Gib ihm doch diesen Thread zum Lesen .... aber sag uns vorher, dass wir alle noch hinschreiben sollen, dass wir mit Driri vollkommen einig gehen ....
Titel: Re:Formel
Beitrag von: 7Stein am 26.08.04 - 11:06:54
werde ich machen, wenn er aus dem Urlaub ist.
So, jetzt aber nochmal zurück zu der Formel bitte,
was hat Thomas gemeint mit der Bemerkung
Zitat
Oh und dein Fehler liegt daran, das eine Formel immer einen Haupt oder Auswahlausdruck enthalten muss. In deinem Fall einfach in der Zeile darunter  Val eintragen.
wo muss ich das eintragen und bei welcher der beiden Formeln?
Titel: Re:Formel
Beitrag von: Driri am 26.08.04 - 11:10:30
Er meint damit, daß Du in der Formel quasi keinen Rückgabewert produzierst. Du hast zwar eine Berechnung, aber die Formel liefert nichts zurück.

Du mußt einfach am Ende der Formel noch einmal den Namen der Variablen mit dem Wert schreiben, also in deinem Fall :

val:=....
....
val

Dann wird der Wert von val zurückgegeben und Du bekommst nicht mehr diese Fehlermeldnug :

Zitat
No main or selection expression in formula:
Titel: Re:Formel
Beitrag von: Semeaphoros am 26.08.04 - 11:11:28
In der Formel, in der Du die Fehlermeldung

No main or selection expression in formula

bekommst als zusätzliche Zeile am Schluss das von Thomas erwähnte val anhängen
Titel: Re:Formel
Beitrag von: 7Stein am 26.08.04 - 11:12:58
jo kapiert, aber der Wert taucht trotzdem nur einmal auf obwohl "Allow multiple values" abgeklickt ist. Wenn Werte in der Verpackungseinheit drin stehen, bekomme ich diese ohne Probleme angezeigt. nur eben nicht, wenn der da immer eine 1 rein schreiben soll. Das verstehe ich nicht.
Titel: Re:Formel
Beitrag von: koehlerbv am 26.08.04 - 11:19:09
Mach Dich doch endlich mal vertraut mit der Bedeutung der Begriffe Dokument, Feld, Ansicht, Maske. Du versuchst doch schon wieder, mittels eines Multi-value-Feldes eine ganze Ansicht zu füllen.
So hat das ABSOLUT keinen Zweck.

Bernhard
Titel: Re:Formel
Beitrag von: 7Stein am 26.08.04 - 11:28:27
NEIN!!!!
das ist eine Tabelle mit verschiedenen Feldern für die einzelnen Bestellpositionen. Das ist keine view.
Ich mach mal einen screenshot davon und poste den hier.
Bei den anderen Feldern in der Maske funktioniert das doch genauso.
Titel: Re:Formel
Beitrag von: Semeaphoros am 26.08.04 - 11:42:01
Naja, trotzdem muss ich Bernhard recht geben, das löst sich doch viel einfacher mit einer eingebetten Ansicht, die hast Du ja schon fast mit der Ansicht, auf die Du mit dem dblookup zugreifst.
Titel: Re:Formel
Beitrag von: 7Stein am 26.08.04 - 11:46:25
ja aber ich habe das doch so nicht geschrieben. Das war schon so, und ich muss jetzt Änderungendaran vornehmen, darf aber die Grundstruktur nicht ändern.

Kann ich diese Formel denn benutzen und irgendwie erweitern oder abändern?
Titel: Re:Formel
Beitrag von: Thomas Schulte am 26.08.04 - 12:16:30
Wenn du das nicht geschrieben hast, dann ist das noch schlimmer.  Denn dann fehlt dir das Grundverständnis dafür warum diese Trickserei angewandt wurde.

Das was du willst kannst du so auf jedne Fall nicht erreichen. Um diese Tabellenstruktur innerhalb eines Dokumentes aufzubauen sind schon ziemlich viele Tricksereien notwendig gewesen. Dazu gehört z.B. das in deinem Beispiel die Tabelle mit dem Designer erstellt wurde und die Felder in der Zweiten Zeile der Tabelle alle Multivalue Felder sind in die die entsprechenden Werte eingetragen werden können. Die einzelnen Werte werden mit Zeilenschaltung getrennt und Werte müssen eingetragen werden (probiers mal aus, wenn du einfach einen leeren Wert einträgst, dann abspeicherst und anschließend wieder aufrufst, was dann passiert).

Du hast jetzt die hehre Aufgabe bekommen hier ein neues Feld einzubauen (deine Verpackungseinheit) und musst sicherstellen, das auch wirklich in allen alten Dokumenten entsprechend der Anzahl der  Positionen entsprechende Werte eingetragen werden.

Also müsstest du deine Formel dahingehend ergänzen, das du eine Schleife einbaust mit der du die Anzahl der Positionen abfragst und überprüfst ob die Werteliste der Verpackungseinheiten die gleiche Anzahl Einträge hat wie die Werteliste der Positionen (Schau dir zur Verdeutlichung mal die Feldeigenschaften deines Positionsfeldes an). Um das hinzukriegen hast du zwei (nein drei) Möglichketen.

Erstens: du lernst im Schnellverfahren Script

Zweitens: du erwirbst, ebenfalls im Schnellverfahren die höheren Weihen der Formelprogrammierung, weil das unter V5 eine ziemliche Hackerei ist. (Unter anderem wäre da @elements beteiligt, aber ein paar Fehlerabfragen musst du auch noch einbauen, z.B. ob das Feld gar keinen wert enthält oder nur zuwenig Werte)

Drittens: du machst ein Upgrade auf V6, weil es da die Möglichkeit gibt mit Schleifen in der Formelsprache zu programmieren, aber selbst dann ist es noch ein Hack.

Thomas