Artikel mit abhängigen Artikeln in einem Formular

  • Ich habe ein Formular in dem mehrere (unter)-Substanzen erfasst werden können. Dazu schrieb ein ehemaliger Kollege drei Scripts. Je einen für Add, Edit und Remove. Hierbei wird eine kleine Dialogbox geöffnet in der 4 Felder abgefüllt werden können. Mein Problem ist nun das eine Substanz bei der am Anfang noch nicht alle Felder abgefüllt wurden nicht mehr editiert werden kann. Scheinbar hat Notes ein Durcheinander unter den einzelnen Substanzen da diese nicht sauber getrennt werden.


    Wie lässt sich dies lösen ohne bestehende Daten zu beinträchtigen?


    Hier der Script der Add Funktion:


  • Das Problem bei dem Add Script ist das @Trim in den Evaluate Formeln.


    Bleibt ein Wert leer dann wird der leere Wert einfach rausgekürzt.


    Notes ist da nicht das Problem sondern die nicht wirklich ausführlich getesteten Scripte die dein Kollege da gebaut hat.


    Im Endeffekt müsstest du überall dafür sorgen, daß jedes der vier gefüllten Felder immer die gleiche Anzahl an Elementen hat.


    Das Problem wird nur sein, daß du das manuell machen musst um die richtigen Zuordnungen wieder herzustellen, denn die sind durch das Add-Script deines Kollegen verlorengegangen, sobald zwischendrin ein leerer Wert war



    Bitte in Zukunft aufs Themenpräfix achten

  • Na indem du sie aus dem Code rausnimmst.


    Allerdings solltest du dich schon zumindest ein wenig damit auskennen sonst wird das ein Glücksspiel bis es funktioniert.


    Gibt es bei euch keinen der sich mit Notes Programmierung auskennt und dir helfen kann ?

  • moin


    also es sollte reichen wenn du das @trim entfernst


    vorher:
    doc.sIUPAC = Evaluate({[color=0000FF]@Trim[/color](sIUPAC : "} & doc.dlgsIUPAC(0) & {")}, doc)


    nachher:
    doc.sIUPAC = Evaluate({sIUPAC : "} & doc.dlgsIUPAC(0) & {"}, doc)



    mit evaluate bettet man die Formelsprache in das Script ein...das kann man sich vorstellen wie hmm ne Exceltabelle in ein Worddocument ( ich weiss ich weiss..;-) )


    ist aber eigentlich sehr gut in der Hilfe beschrieben


    edit:
    sry Klammer übersehen
    oh man nicht mein Tag..

  • hmmm habs versucht doch erhalte noch immer ne error meldung wenn ich editieren möchte.


    Hier die add funktion:


    Code
    Sub Click(Source As Button)	On Error Goto Errhandler	Dim ss As New NotesSession	Dim ws As New NotesUIWorkspace	Dim db As NotesDatabase	Dim uidoc As NotesUIDocument	Dim doc As NotesDocument	Set uidoc = ws.CurrentDocument	Set doc = uidoc.Document	ret = ws.DialogBox("frmContentDlg", True, True, False, True, False, False, "Substance Details")	If ret = False Then Exit Sub	doc.sEC_number = Evaluate({@Trim(sEC_number : "} & doc.dlgsEC_number(0) & {")}, doc)	doc.sIUPAC = Evaluate({sIUPAC : "} & doc.dlgsIUPAC(0) & {"}, doc)	doc.sCAS_number = Evaluate({sCAS_number : "} & doc.dlgsCAS_number(0) & {"}, doc)	doc.Composition = Evaluate({@Trim(Composition : "} & doc.dlgComposition(0) & {")}, doc)	If Isnumeric(doc.Volume(0)) Then		calcVol = doc.Volume(0) / 100 * doc.dlgComposition(0)		doc.sVolume = Evaluate({@Trim(sVolume : "} & Round(calcVol, 2) & {")}, doc)	Else		doc.sVolume = Evaluate({@Trim(sVolume : "0.00")}, doc)	End If	doc.dlgsEC_number = ""	doc.dlgsIUPAC = ""	doc.dlgsCAS_number = ""	doc.dlgComposition = ""	Exit SubErrhandler:	Msgbox "Line " & Str(Erl) & " : Error " & Str(Err) & " - " & Error$	EndEnd Sub


    und hier die edit:


  • was kommt denn für eine meldung?


    Der codeschnipsel war jetzt nur als Besispiel gedacht...


    edit:


    aber warum die ganzen evaluates...ich würd drauf verzichten und alles mit script lösen... mal so am rande erwähnt

  • wenn ich mich da jetzt richtig eingelesen habe..müsste das kommen weil du versuchst auf eine ebene des feldes zuzugreifen die aber nicht existiert..also wie beim array das 5 werte hat, du aber versuchst den6. auszulesen


    kam die meldung vorher auch schon oder erst nach der änderung?


    lass dir doch mal die werte nach und nach ausgeben

  • Wie ich in einem vorigen Post schon mal sagte: Du musst die existierenden defekten Feldinhalte, die durch den @Trim verursacht worden sind erst mal korrigieren. Und das geht eben nicht über die Scripte, sondern muss manuell gemacht werden, damit die einzelnen Einträge der verschiedenen Felder wieder korrekt zueinander zugeordnet sind.


    Das wirst du aber ohne etwas tiefergehendere Kenntnisse nicht hinbekommen.


    Der Fehler sagt ganz einfach aus, daß das Script versucht auf ein Element in einem der Felder zuzugreifen das nicht existiert.


    Und bitte für die Zukunft:


    Beschreibe bitte genauer was für ein Fehler wann und wobei auftritt.


    Erst klang es so, als ob der Fehler beim Editieren des Scriptes auftritt und dann war es auf einmal beim Ausführen der Script Funktion.


    Ich habe mal deinen Code in Code Tags verpackt, damit er besser zu lesen ist.


    setherus


    Der Fehler wird so auch schon vorher aufgetreten sein, da dieser durch das @Trim in der Add Funktion verursacht wird, denn dadurch werden ja leere Einträge entfernt und damit die Arrays ungleich lang

  • taurec
    ja das ist richtig, das sagtest du bereits vorhin schon wo du den tip mit dem @trim entfernen gegeben hast...an die ungleichen arrays hab ich aber in dem fall gar nicht gedacht...danke :)

  • also ich hab den script wie oben angepasst und dann die daten erfasst. beim erfassen keine probleme aber sobald ich 2 artikel erfasst habe und einen editieren möchte bei dem vorher nicht alle felder abgespitzt wurden bekomme ich den erwähnten fehler...

  • Ich habe die Trim bei 2 Feldern entfernt da dort der User keine daten eingeben muss wenn er nicht will. die anderen 2 felder sind muss felder daher sind dort daten vorhanden. stört die trim funktion trozdem?

  • Schwer zu sagen ohne zu wissen was in den Feldern drinsteht.


    Du müsstest den Debugger verwenden, da du aber selbst sagst, daß du keine Ahnung von Script hast, wird dir der auch nicht helfen.


    Und dir hier so ins Blaue hinein zu helfen ist nahezu nicht möglich.


    Ich fürchte ihr werdet in den sauren Apfel beissen müssen und euch da jemand kommen lassen müssen, der von Script Programmierung was versteht

  • warum musst du wissen was drin ist? der inhalt ist ja eigentlich egal oder? geht einfach darum das gewisse felder leer sind und gewisse nicht. solange bei allen artikeln alle felder gefüllt wurden ist das editieren kein problem sobald jedoch etwas nicht komplett gefüllt abgespeichett wurde ist editieren nicht mehr möglich...


    hier die db:

  • Und wie ich vorher schon sagte: Genau das was in den Feldern drinsteht, d.h. wie die einzelnen Felder mit Werte gefüllt sind ist der Knackpunkt.


    Stehen in Feld 1 10 Werte drin und in Feld 2 nur 5, dann werden die Scripte beim Editieren der Werte 6-10 immer auf die Nase fallen.


    Und das muss eben bei existierenden Dokumenten erst mal glattgezogen werden.


    Und dann müssen die angepassten Scripte getestet werden, ob sie die Felder auch korrekt füllen bzw verändern.


    Und dafür brauchst du eben jemanden der sich mit Script Programmierung auskennt, wenn du es selbst nicht kannst.


    Wir helfen dir gerne bei konkreten Fragen, aber die Korrektur eurer Anwendungen können und wollen wir nicht für euch übernehmen.