Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: theBastian am 26.03.04 - 10:51:53

Titel: Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 10:51:53
Guten Morgen,

schwitze noch immer an der bereits genannten DB (siehe unten) und bin jetzt dabei eine Rechnungs-Maske zu erstellen.

Die Rechnung soll einem bestimmten Projekt zugeordnet werden. Dieses wird vom User per Dialogliste ausgewählt. Danach muss ein Bestandteil (von 9 möglichen) dieses Projektes ausgewählt werden (auch Dialogliste). Natürlich soll der User nur die Bestandteile des soeben ausgewählten Projektes in der Dialogliste sehen. Dazu habe ich eine versteckte Ansicht gebaut, in der das Projekt und alle Bestandteile in je einer Spalte stehen.

Mit der folgenden Formel will ich die Bestandteile auslesen:
 
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil1):
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil2):
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil4);
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil5):
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil6):
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil7):
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil8):
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil9)

Dabei ist "Projekt" das Feld (in der Rechnungs-Maske) welches das soeben ausgewählte Projekt enthält. Die Spalte Projekt ist sortiert.

Will ich dann die Dialogliste Bestandteile aufrufen, öffnet sich das Fenster aber anstatt der Bestandteile steht da:

Too many arguments for database function

Und dabei habe ich in der Formel eine Prüfung, ob der Bestandteil leer ist, noch garnicht eingebaut. Hat jemand eine Idee, wie ich diesen Fehler beheben oder umgehen kann)

cu
Sebastian
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 11:01:07
holla,

ich glaube ich habe denn fehler denn du machst.

@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;Bestandteil1):

versuch hiermit:

@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;1):

das wo du "Bestandteil1", "Bestandteil2" usw. mach nur spaltennummer 1 , 2 usw.

und noch ein guter tip benutze temporere variable z.B.

tmp10:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;1);
tmp20:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;2);

usw.

dann die variablen als liste sätzen

tmp10:tmp20:usw.

mfg

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 11:15:24

Danke für Deine schnelle Antwort. Hatte auch schon Spaltennummern probiert aber ohne Erfolg. Jetzt habe ich die Variablengeschichte umgesetzt:

tmp10:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;1);
tmp20:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;2);
tmp30:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;3);
tmp40:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;4);
tmp50:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;5);
tmp60:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;6);
tmp70:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;7);
tmp80:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;8);
tmp90:=@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;9);
tmp10:tmp20:tmp30:tmp40:tmp50:tmp60:tmp70:tmp80:tmp90

Leider mit dem gleichen Fehler. Das war es also nicht.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: klaussal am 26.03.04 - 11:22:44
aus der hilfe:
@DbColumn( Klasse : Cache; Server  : Datenbank  ; Ansicht  ; SpaltenNr )

deine formel:
@DbColumn("":"NoCache";"":"";"(Bestandteile)";Projekt;1);

da ist wohl ein parameter zuviel drinne...  ;D
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 11:25:23
jetzt weis ich.
der fehler ist da drin das du mit @DBLookup arbeiten willst und momentan @DBColumn benutzt, des wegen schribt  der notes zuviel argumente weil du ein key in @DBColumn benutzt und das Funktioniert nicht.

so muss DBColumn aussehen:

@DbColumn("":"NoCache";"":"";"(Bestandteile)";1);
aus der hilfe:
@DbColumn( class : cache ; server : database ; view ; columnNumber )

so muss DBLookup aussehen:
@DbLookup("":"NoCache";"":"";"(Bestandteile)";Projekt;1);
aus der hilfe:
@DbLookup( class : cache ; server : database ; view ; key ; fieldName ; keywords ) or
@DbLookup( class : cache ; server : database ; view ; key ; columnNumber ; keywords)

wo bei  keywords optional ist also muss du es nicht benutzen.

MfG

brixxton

Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: klaussal am 26.03.04 - 11:30:03
@brixxton,

da war ich schneller  ;D
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 11:35:46

stimmt, mein Fehler. Also werde ich das Ganze nochmal mit @DbLookup versuchen.

Dank Euch für die schnelle Hilfe. Melde nachher den Stand.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 11:48:52
Aktueller Stand:

habe die Formel etwas umgeändert:

tmp10:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil1);
tmp20:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil2);
tmp30:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil3);
tmp40:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil4);
tmp50:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil5);
tmp60:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil6);
tmp70:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil7);
tmp80:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil8);
tmp90:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil9);
tmp10:tmp20:tmp30:tmp40:tmp50:tmp60:tmp70:tmp80:tmp90

ReProjekt soll hierbei als Schlüssel fungieren. (Habe nur zur Sicherheit von Projekt in ReProjekt umgenannt, da Feld Projekt in anderer Maske schon existiert.)
Bestandteil1-9 das jeweilige Feld, welches als Dialogliste ausgegeben werden soll.

Leider bleibt das 2. Dialogfeld jetzt komplett leer. Hat noch jemand eine Idee?
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 13:07:02
 ;D zu klaussal:
ja ja ist gut du warst schneller nur des wegen weil ich es besser erklären wollte und mehr schreiben musste. 8)

zu dem lätzten eintrag:

das muss du mir leider etwas besser erklären weil wie ich das verstanden habe du hast mehrere felder also in dem sinne 9 dialogfelder oder ?  ???


mfg

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 13:26:52
Es sind 2 Dialogfelder:

Es gibt eine Maske, welche Projekte erfasst. Sie enthält die Felder Projekt (Text), Bestandteil1-9 (Text) und andere (hierfür unwichtige).

Es gibt eine weitere Maske (Rechnung), und um diese geht es. Ich muss die Rechnung einem bereits erfassten Projekt und dem richtigen Bestandteil zuordnen.

1. Dialogfeld: Auswahl des Projektes per Dialogfeld und eine Ansicht, die alle Projekte darstellt; das gewünschte Projekt wird ausgewählt --> funktioniert

2. Dialogfeld: hier sollen die Bestandteile 1-9 erscheinen; aber natürlich nur die von dem Projekt, welches ich im 1. Dialogfeld ausgewählt habe.

Hoffe, ich konnte das einigermaßen erklären.

Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 13:36:39
dann gehst du in die einstellungen von dem erstem feld und bei zweiten tabulator wo du die "Formel für auswahl verwenden" eingibst muss du bei "Optionen" häckchen bei "Felder bei Schlüsselwortänderung aktualisieren" sätzen.

dann wird das zweite Feld gefühlt wenn die formel in dem feld richtig geschrieben ist.

mfg

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 13:45:01
Haken war von Anfang an drin. Das ist es nicht.  :(
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 13:48:58
dann stimmt irgend etwas mit der formel nicht in dem zweitem feld.

mach die formel hier rein und die namen von den beiden feldern.

mfg

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 13:54:01
1. Dialogfeld: Bezeichnung "ReProjekt"; keine Formel, nur Auswahl View und dann die Spalte

2. Dialogfeld: Bezeichnung "Bestandteil"; Formel

tmp10:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil1);
tmp20:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil2);
tmp30:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil3);
tmp40:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil4);
tmp50:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil5);
tmp60:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil6);
tmp70:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil7);
tmp80:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil8);
tmp90:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil9);
tmp10:tmp20:tmp30:tmp40:tmp50:tmp60:tmp70:tmp80:tmp90

(Bestandteil) -> Ansicht
ReProjekt -> 1. Dialogfeld in der Maske "Rechnung"
Bestandteil1-9 -> Felder in dem Projekt, welches im Feld ReProjekt ausgewählt wurden

Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 14:01:51
momentan:
tmp10:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;Bestandteil1);

versuch das hier:
tmp10:=@DbLookup("":"NoCache";"":"";"(Bestandteile)";ReProjekt;"Bestandteil1");

veruschmal Bestandteil1 usw. in anführungszeichen zu sätzen.

noch ein guter rat hilfe von domino designer lesen.

MfG

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 14:13:34
Danke für den Hinweis. Dachte "" muss bei Feldern nicht sein. Sorry.

Aktueller Stand: es werden immer die Bestandteile des Projekts angezeigt, welches in der 1. Zeile der Ansicht (Bestandteile) angezeigt wird. Egal, welches Projekt ich auswähle. Auch F9 bringt nichts.

Also noch nicht so ganz wie gewünscht.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: koehlerbv am 26.03.04 - 14:16:29
Nicht "versuchen", sondern machen:
Bei Bestandteil1 implizierst Du, dass der Name des auszulesenden Feldes in der Variablen Bestandteil1 steht. Die gibt es bei Dir aber gar nicht, dbLookup liest also den Inhalt des Feldes mit dem Namen "" aus. Gibt es auch nicht, also ist der Rückhgabe-Wert "". Genau das siehtst Du ja auch, Notes macht also genau das, was Du ihm gesagt hast.
"Bestandteil1" hingegen ist korrekt, das ist der String, der nun wirklich den Namen des auszulesendes Feldes beschreibt.

Bernhard
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 14:21:45
Bei Nutzung von "Bestandteil1" tritt nun der Fehler auf, den ich im letzten Posting beschrieben habe.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 14:22:58
in der erste spalte müssen die projekte stehen.

die projekte spalte muss du kategoriesieren sonst funktioniert das nicht mit dem @DBLookup

mfg

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 14:26:10
Spalte1 sind die Projekte, kategorisiert und sortiert. Habe sicherheitshalber nochmal nachgeschaut. War aber schon so.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 14:28:33
welche version von notes hast du.

mfg

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 14:29:50
Notes 6.5.1 en
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: koehlerbv am 26.03.04 - 14:30:42
Bist Du Dir sicher, dass in Reprojekt das steht, was Du dort erwartest ? Lass Dir das mal innerhalb Deiner Formel mit @Prompt ausgeben ...
Ansonsten ist eine Ferndiagnose schwierig (zumindest mir fällt jetzt nix ein ...).

Benrhard
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 14:35:14
Habe nicht @Prompt verwendet sondern eine Rechnung erstellt, gespeichert und dann in den Eigenschaften des Docs das Feld ReProjekt gesucht. Dort steht genau das Projekt drin, welches ich ausgewählt habe.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 14:41:49
Habe jetzt @Prompt vor die Formel gebaut und es passiert folgendes:

- Projekt ausgewählt;
- Klick auf Dialogfeld2 -> Prompt mit dem richtigen Projekt und Dialogfeld mit den richtigen Bestandteilen erscheinen
- Projekt geändert
- Klick auf Dialogfeld2 -> kein Prompt und die Bestandteile vom vorigen Projekt erscheinen

Aber die Refresh bei beiden Feldern sind gesetzt  ???
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 14:48:20
ja da hatte ich auch probleme und leiser keine lösung auser F9 gefunden.
ist halt so, damit müssen wir leben was sie noch probieren können ist @Command( [RefreshHideFormulas] ) hinter der Formel die Sie benutzen.

mfg

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 14:52:20
Würde das nicht eher etwas in Dialogfeld1 bringen? Dort statt View-Auswahl eine DbColumn-Formel mit Refresh am Ende? Sollte dann ja auf alle Formel (also auch Dialogfeld2) wirken.  ???

--> @Commands not allowed

Also wird das dort nichts.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 15:00:28
funktioniert das alles wenn du F9 benutzt.

mfg

brixxton
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 15:01:26
Mit F9 funktioniert das Ganze. Ist aber nicht so das Wahre.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: brixxton am 26.03.04 - 15:04:27
dann schreibst du in das erste feld eine @DBColumn Formel und nicht auswahl über Ansicht.

das ist die lösung dann Funktioniert das alles.
es ist vieleicht ein bug in notes.

mfg brixxton


Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 26.03.04 - 15:10:34
Fahre erst mal nach Hause und teste dort weiter. Melde mich gegen Abend nochmal.
Danke erstmal für Deine Hilfe. Hat mich schon viel weiter gebracht.
Bis später.
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: koehlerbv am 26.03.04 - 15:11:55
Dein Dialogfeld2 ist aber schon ein berechnetes Feld ?
Ich kann jedenfalls nicht darüber klagen, dass ein mit @dbLookup auf Basis von Feld1 berechnetes Feld2 nicht funktionieren würde ...

Es gibt aber einen Fakt, der Dich vielleicht sowieso zu einem anderen Ansatz lenken wird: Performance !
Wenn Du Deine @dbLookups in Dialogfeld2 zu stehen hast, dann wird ja jedes Mal beim Öffnen eines Dokuments das ganze Zeugs durchgerödelt - bei grossen DBs merkst Du das dann ganz deutlich. Günstiger ist dann m.E. ein Hotspot zur Auswahl des Projekts, dessen Formel dann nicht nur Dialogliste1 (was dann natürlich Text würde) füllt, sondern mit @SetField und Deiner bisherigen Formel Dialogliste2 füttert. Der Buhtong müsste natürlich im Lesen-Modus verborgen sein, damit der User nicht auf schlechte Gedanken kommt  ;D

HTH,
Bernhard
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 29.03.04 - 08:49:44
Moin Moin,

hatte natürlich am WE keine Zeit und bin erst jetzt zum Testen gekommen.

Warum sollte mein Feld2 berechnet sein? Der User soll sich doch einen Bestandteil aussuchen können.

Performance habe ich auch schon überlegt aber ich hoffe, das pro Jahr nicht mehr als 10-20 Projekte zusammen kommen.

cu
Sebastian
Titel: Re:Fehler "too many arguments" - bei DbColumn
Beitrag von: theBastian am 30.03.04 - 09:15:16
Guten Morgen,

habe jetzt den Vorschlag von brixxton umgesetzt. Funktioniert ohne Probleme.

Danke Euch nochmal.

cu
Sebastian