Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Toady am 28.01.03 - 14:57:09
-
Hallo Leute,
ich habe folgendes Problem:
Im geöffneten Doc übernehme ich per uidoc.FieldGetText den Inhalt eines Feldes(Typ: Kontrollkästchen) und füge ihn dann per uidoc.FieldSetText in ein anderes Doc (gleiche Form) ein. Im neuen Doc bleiben die ausgewählten Kästchen aber immer leer; es wird also kein Inhalt übernommen. Habe keinen blassen Dunst warum. Bei allen anderen Feldtypen (Datum, Text etc.) geht das ohne Probleme.
Hoffe Ihr könnt mir helfen.
Danke!
-
... und was sagt der debugger ?
... und was sagt: Dokument -> Eigenschaften ?
sind die felder im dok gefüllt ?
-
Hallo klaussal,
also der Debugger sagt gar nichts. Es werden einfach keine Werte übernommen.
Ist eine ReservierungsDB an der ich arbeite. Wenn ein neues Doc zur Reservierung eines Raumes angelegt wird, kann ich für mehrere Tage reservieren. Zusätzlich kann ich über Auswahl (Kontrollkästchen) die Einrichtung des Raumes bestimmen. Speichere ich das Doc ab, so wird für jeden Termin ein eigenes Doc angelegt. Dabei werden alle Werte übernommen nur die des Kontrollkästchens nicht. Hab keine Ahnung warum!
Danke und Gruß
-
im debugger kann man sehen, ob die werte übernommen werden.
sind die feldeigenschaften ok ?
-
Im geöffneten Doc übernehme ich per uidoc.FieldGetText den Inhalt eines Feldes(Typ: Kontrollkästchen) und füge ihn dann per uidoc.FieldSetText in ein anderes Doc (gleiche Form) ein
wie kann man zwei versch. uidocs gesetzt haben ?
bist du sicher, dass du nicht ins gleiche doc zurueckschreibst ?
gruss
-
@till_21
... wenn angeblich alle anderen werte übernommen werden, dann muss er ja zwei verschiedene docs ansprechen, oder ???
-
Tach,
@ Till_21 & klaussal
man kann zwei verschiedene uidocs im Zugriff halten, Du musst doch nur verschiedene Variablen darauf setzen...
@Today:
Versuch doch mal, mit
Set NotesItem = doc.GetFirstItem("Feldname")
den Zugriff auf das neue Feld herzustellen, und den Wert dann mit Item.Values(0) = Variable mit dem Wert
in das neue Feld zu schreiben. Dann noch ein uidoc.reload und fertig. Vielleicht gehts so.
Gruss
Thomas
-
@klaussal
Ja, ich hab im Debugger die Werte in den Variablen überprüft - sind leider leer. Das ist ja das Problem, ich weiß halt nicht warum er die Werte daraus nicht übernimmt.
@till21
Mittels 'Set uidoc=uiws.ComposeDocument("","DB","Form")' erstelle ich ein zweites Doc in dem die Werte per 'Call uidoc.FieldSetText()' gespeichert werden.
-
@Today
Poste doch mal den Quelltext, da ist evtl.das Prob schneller gefunden...
-
Hallo Thomator,
im folgenden der Quelltext. Vielleicht ist nur ne Variable falsch deklariert oder so. Keine Ahnung, bin auch noch nicht so lange als Notes-Entwickler dabei - Script erst seit kurzem.
Sub Click(Source As Button)
Dim feld1 As String
Dim feld2 As String
Dim feld3 As String
Dim feld4 As String
Dim feld5 As String
Dim feld6 As String
Dim feld7 As String
Dim feld8 As String
Dim feld9 As String
Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = uiws.CurrentDocument
feld1 = uidoc.FieldGetText("Raum")
feld2 = uidoc.FieldGetText("Titel")
feld3 = uidoc.FieldGetText("Anzahl")
feld4 = uidoc.FieldGetText("Ressourcen")
feld5 = uidoc.FieldGetText("Bestuhlung")
feld6 = uidoc.FieldGetText("sonstiges")
feld7 = uidoc.FieldGetText("Meldung")
feld8 = uidoc.FieldGetText("date1")
feld9 = uidoc.FieldGetText("time1")
feld10 = uidoc.FieldGetText("date2")
feld11 = uidoc.FieldGetText("time2")
feld12 = uidoc.FieldGetText("date3")
feld13 = uidoc.FieldGetText("time3")
feld14 = uidoc.FieldGetText("date4")
feld15 = uidoc.FieldGetText("time4")
If feld8 <> "" And feld9 <> "" Then
Set uidoc = uiws.ComposeDocument("","RaumRes.nsf","Reservierung")
Call uidoc.FieldSetText("Raum", feld1)
Call uidoc.FieldSetText("Datum", feld8)
Call uidoc.FieldSetText("TimeRange", feld9)
Call uidoc.FieldSetText("Titel", feld2)
Call uidoc.FieldSetText("Anzahl", feld3)
Call uidoc.FieldSetText("Ressourcen", feld4)
Call uidoc.FieldSetText("Bestuhlung", feld5)
Call uidoc.FieldSetText("sonstiges", feld6)
Call uidoc.FieldSetText("Meldung", feld7)
Call uidoc.save
Call uidoc.close
Elseif feld2 = "" And feld3 <> "" Then
Msgbox"Fehler! Kein Datum für Raumreservierung angegeben.",16
Exit Sub
Elseif feld2 <> "" And feld3 = "" Then
Msgbox"Fehler! Keine Zeit für Raumreservierung angegeben.",16
Exit Sub
Else
Exit Sub
End If
If feld10 <> "" And feld11 <> "" Then
Set uidoc = uiws.ComposeDocument("","RaumRes.nsf","Reservierung")
Call uidoc.FieldSetText("Raum", feld1)
Call uidoc.FieldSetText("Datum", feld10)
Call uidoc.FieldSetText("TimeRange", feld11)
Call uidoc.FieldSetText("Titel", feld2)
Call uidoc.FieldSetText("Anzahl", feld3)
Call uidoc.FieldSetText("Ressourcen", feld4)
Call uidoc.FieldSetText("Bestuhlung", feld5)
Call uidoc.FieldSetText("sonstiges", feld6)
Call uidoc.FieldSetText("Meldung", feld7)
Call uidoc.save
Call uidoc.close
Elseif feld10 = "" And feld11 <> "" Then
Msgbox"Fehler! Kein Datum für Raumreservierung angegeben.",16
Exit Sub
Elseif feld10 <> "" And feld11 = "" Then
Msgbox"Fehler! Keine Zeit für Raumreservierung angegeben.",16
Exit Sub
Else
Exit Sub
End If
If feld12 <> "" And feld13 <> "" Then
Set uidoc = uiws.ComposeDocument("","RaumRes.nsf","Reservierung")
Call uidoc.FieldSetText("Raum", feld1)
Call uidoc.FieldSetText("Datum", feld12)
Call uidoc.FieldSetText("TimeRange", feld13)
Call uidoc.FieldSetText("Titel", feld2)
Call uidoc.FieldSetText("Anzahl", feld3)
Call uidoc.FieldSetText("Ressourcen", feld4)
Call uidoc.FieldSetText("Bestuhlung", feld5)
Call uidoc.FieldSetText("sonstiges", feld6)
Call uidoc.FieldSetText("Meldung", feld7)
Call uidoc.save
Call uidoc.close
Elseif feld12 = "" And feld13 <> "" Then
Msgbox"Fehler! Kein Datum für Raumreservierung angegeben.",16
Exit Sub
Elseif feld12 <> "" And feld13 = "" Then
Msgbox"Fehler! Keine Zeit für Raumreservierung angegeben.",16
Exit Sub
Else
Exit Sub
End If
If feld14 <> "" And feld15 <> "" Then
Set uidoc = uiws.ComposeDocument("","RaumRes.nsf","Reservierung")
Call uidoc.FieldSetText("Raum", feld1)
Call uidoc.FieldSetText("Datum", feld14)
Call uidoc.FieldSetText("TimeRange", feld15)
Call uidoc.FieldSetText("Titel", feld2)
Call uidoc.FieldSetText("Anzahl", feld3)
Call uidoc.FieldSetText("Ressourcen", feld4)
Call uidoc.FieldSetText("Bestuhlung", feld5)
Call uidoc.FieldSetText("sonstiges", feld6)
Call uidoc.FieldSetText("Meldung", feld7)
Call uidoc.save
Call uidoc.close
Elseif feld14 = "" And feld15 <> "" Then
Msgbox"Fehler! Kein Datum für Raumreservierung angegeben.",16
Exit Sub
Elseif feld14 <> "" And feld15 = "" Then
Msgbox"Fehler! Keine Zeit für Raumreservierung angegeben.",16
Exit Sub
Else
Exit Sub
End If
End Sub
Danke @all für die schnellen Antworten!
-
@Today
also ich würd mal probieren, bei den Feldern, die er jetzt nicht in die Variablen ausliesst (feld1..15) folgendermaßen vorzugehen:
Dim feld1..15 as variant
Set doc = uidoc.document
Dim Item as NotesItem
Set Item = doc.GetFirstItem(" Dein Feldname")
feld1..15 = Item.values(0)
und dann im neuen uidoc:
call uidoc.ReplaceItemValue("Dein Feldname", feld1..15)
Ich bin mir zwar nicht so ganz sicher, aber ich denke, das könnte bei so Sachen wie Kontrollfeldern eher funktionieren, als FieldSetText..
Thomas
-
... ich vermeide so gut es geht mit dem uidoc zu arbeiten. Mit dem Backend habe ich bessere Möglichkeiten, außerdem kann ich bei uidoc.FieldGetText("Feldname") nur mit Strings arbeiten, und alleine daß macht mich rasend...
... ich hätte die Feldnamen in ein Array gepackt und dann das Array mit "For..Next" abgearbeitet - das ist vom Code her übersichtlicher und bei späteren Anpassungen deutlich besser im Handling
ata
-
@ata, @thomator, @.....
Übers BackEnd hab ich's hinbekommen. Hat zwar lange gedauert, aber nur weil ich den Wald vor lauter Bäumen nich gesehen hab.
Danke nochmal für eure Hilfe.
-
@ATA
genau das sind die Unterschiede an denen man erkennt wer was taugt und wer taucht...
@all others, nur wer schimpft, zieht sich den Schuh auch an !
MAHLZEIT