Domino 9 und frühere Versionen > Entwicklung
Wie (Namens-)Liste einem anderen Namensfeld per LS zuweisen?
Sascha Seipp:
Moin allerseits!
Folgendes Problem: Ich habe in einem Dokument ein Feld vom Typ 'Namen', in dem ein Auftraggeber drinsteht (heißt SupportName). Nun will ich dieses als Vorbelegung in einem neuen Dokument in das Feld 'Besteller' schreiben.
Mit
Call uidoc.FieldSetText("Besteller", actbedoc.SupportName(0))
klappt das, dabei stört mich aber die (0). Denn das Ursprungsfeld könnte ja auch mehrere Namen enthalten (Mehrfachwerte sind zulässig). Da auch das Zielfeld vom Typ 'Namen' ist, sollte doch sowas
Set uidoc.Document.Besteller = actbedoc.SupportName
eigentlich gehen - wo liegt mein Denkfehler, daß da ein "Type mismatch" dabei herauskommt?
Ciao
Sascha
koehlerbv:
Ah, mein Freund, der Biber ... :)
Sascha, im Frontend werden Felder (!) bedient, und die wollen immer "Text". Im Backend hast Du es mit unterschiedlichen Datentypen und immer (!) mit Arrays zu tun (ausser RTIs).
Ergo: Entweder, Du vermischst nicht Front- und Backend-Methoden
actbedoc.Besteller = actbedoc.SupportName
oder
Du bedienst die Frontend-Felder so, damit diese glücklich sind (per Split wird das Array im Backend zu einem Frontend-tauglichem String). Ah - wir sind bei R5 - dann musst Du Ersatz für Split finden (Evaluate über @Implode zum Beispiel).
Ich hoffe, ich konnte entwas Licht ins Dunkel bringen. Ich weiss, dass sowas am Anfang sehr verwirrend erscheint - aber das gibt sich!
Bernhard
Sascha Seipp:
Hallo Bernhard!
Der FE/BE-Unterschied erleuchtet schonmal ein wenig.
Das hier:
Set newbedoc.Besteller = actbedoc.SupportName
bringt aber auch einen 'Type Mismatch'.
Etwas mehr Drumrum:
--- Code: --- Dim uiws As New NotesUIWorkspace ' aktueller Workspace
Dim uidb As NotesUIDatabase ' aktuelle FrontEnd-DB
Dim uidoc As NotesUIDocument ' aktuelles FrontEnd-Document
Dim db As NotesDatabase ' BE-DB
Dim actbedoc As NotesDocument ' Ursprungs-BE-Document
Dim newbedoc As NotesDocument ' neues BE-Document
Set uidoc = uiws.CurrentDocument ' ermittle aktuelles FrontEnd-Document aus aktuellem Workspace
Set uidb = uiws.CurrentDatabase ' ermittle aktuelle FrontEnd-DB aus aktuellem Workspace
Set db = uidb.Database ' ermittle BE-Datenbank aus Frontend-DB
Set actbedoc = uidoc.Document ' ermittle ursprüngliches BE-Document aus aktuellem FE-Document
Set newbedoc = db.CreateDocument ' erzeuge neues BE-Document
newbedoc.Form = "InventarBewegung" ' setze Form des neuen Document auf 'InventarBewegung'
Call newbedoc.Save(False, True) ' speichere neues BE-Document (sonst kann's nicht als FE-Document genutzt werden)
Set uidoc = uiws.EditDocument( True, newbedoc ) ' setze aktuelles FE-Document auf eben neu angelegtes BE-Document
'' Call uidoc.FieldSetText("Besteller", actbedoc.SupportName(0)) ' klappt
Set newbedoc.Besteller = actbedoc.SupportName ' klappt nicht :-(
--- Ende Code ---
Über's Backend zu gehen erscheint mir schon sinniger als übers Frontend - kann das sein, daß ich im BE nicht mehr fummeln kann, wenn ich das Document schon dem FE übergeben hab? Ansonsten bin ich etwas verwirrt.
Und an der Stelle noch ne andere Frage, wenn sie auch nicht zum Thema paßt (aber doch zum obigen Code):
ich muß ja das neu angelegte Document erstmal speichern, damit ich es dem User zum Ausfüllen präsentieren kann.
Wenn der sich nun aber dafür entscheidet, daß das doch nicht seine Absicht war und das Dingen ohne Speichern schließt, hab ich ein Dokument mit lauter leeren Feldern, das keiner mehr braucht. Wie/wo kann ich das denn am besten wieder killen?
Geht da so ne Art AutoDestruct-Sequenz z.B. im Terminate-Ereignis der Maske, wenn ne bestimmte Bedingung erfüllt ist?
(wenn's in Zukunft eher gewünscht ist, für derlei in jedem Falle einen neuen Thread aufzumachen, dann bitte sagen, dann tu ich das fortan).
Ciao
Sascha
koehlerbv:
Nein, dass passt schon zusammen, Sascha.
Antwort kommt gleich - muss nach was anderes fertig machen (sonst komme ich aus dem Konzept).
Bernhard
Sascha Seipp:
Ich find's ja gleichermaßen erschreckend und (nicht zuletzt für mich) positiv, daß da noch jemand zu nachtschlafenden Zeiten noch bastelt... ;-)
Sascha
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln