Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Kutz am 05.12.02 - 16:24:45
-
Hallo zusammen,
wir haben eine Datenbank mit verschiedenen Feldern gefüllt.
Ein Feld als Inhalt eine vorgegebene Tabelle erhalten.
Wir wollen damit eine standardmäßige Vorgehensweise bei
(Themen aus Sitzungen) diesen Protokollen vorgeben. Da die Länge der Tabellen immer unterschiedlich ist kann ich aus meiner Sicht keine feste Tabelle in der Maske vorgeben.
Habt Ihr eine Idee, oder vielleicht läßt sich eine Vorlage ja einfach kopieren? ???
-
ich habe sowas in der Richtung schon gemacht.
- einfügen von Tabellen aufgrund einer selection
- In einem setup dok befinden sich mehrere rtf Felder mit vordefinierten Tabellen, diese werden nach der Auswahl einfach ins aktuelle dok übernommen mit einem .appendrtitem
cu
-
Hört sich ja ganz gut an, würde sicherlich unsere Lösung sein, aber wie funktioniert so etwas? :'(
-
ich bin damals wie folgt vorgegangen:
- versteckte View erzeugt - dok erstellt,geschützt mit Autorfelder - in der 4 vordefinierte Tabellen erzeugt wurden in 4 rtfs(Überschrift, Farbe usw. => d_qualitydept, ...1, ...2, ...3)
- in dem dok wo diese eingefügt werden sollen habe ich ein action button eingefügt, darunter das rtf Feld(eleganter sind hotspots in einer Tabelle die die gleiche Farbe wie die Tabelle haben)
- in der action wird die Routine aus einer library aufgerufen die wie folgt aussieht:
Sub InsertDeptQuality(actdoc As Notesdocument)
.... actdoc == hier wird reingepastet
.... doc == hier werden die Tabellen geholt
Dim view As NotesView
Dim item1 As Variant, item2 As Variant, auswahl As Variant
Dim tabelle(3) As String
tabelle(0) = "Strategy Development"
tabelle(1) = "Requirement Management"
tabelle(2) = "Project Management"
tabelle(3) = "Service Planning"
Set view = db.GetView( "dworkquality" ) ''' in der view ist nur ein dok für diesen Zweck
Set doc = view.GetFirstDocument
If doc Is Nothing Then
Messagebox "................ ", 48, "Notice"
Exit Sub
Else
REM Auswahl Tabellenart
auswahl = ws.Prompt(PROMPT_OKCANCELLIST, "Insert table frame", "please select a table frame", tabelle(0), tabelle)
Select Case auswahl
Case tabelle(0) : Set item2 = doc.GetFirstItem( "d_qualitydept" )
Case tabelle(1) : Set item2 = doc.GetFirstItem( "d_qualitydept1" )
Case tabelle(2) : Set item2 = doc.GetFirstItem( "d_qualitydept2" )
Case tabelle(3) : Set item2 = doc.GetFirstItem( "d_qualitydept3" )
Case Else : Exit Sub
End Select
Set item1 = actdoc.GetFirstItem( "d_quality" )
If ( item1 Is Nothing Or item2 Is Nothing ) Then
Messagebox "............... ", 48, "Notice"
Else
If ( item1.Type = RICHTEXT And item2.Type = RICHTEXT ) Then
Call item1.AddNewLine( 2 )
Call item1.AppendRTItem( item2 )
actdoc.saveoptions = "1"
Call actdoc.save (True,False)
actdoc.saveoptions = "0"
Call docUI.close
Set docUI = ws.EditDocument(True, actdoc)
Call docUI.refresh
Call docUI.GotoBottom
Else
Messagebox "...................... ", 48, "Notice"
Exit Sub
End If
End If
cu
-
Hy,
bin leider die letzten Tage nicht im Haus gewesen.
Ich habe bei der Übernahme des Scripts immer das Problem:
Variant does not contain an object.
Anscheinend ist bei der Zuweisung noch ein Problem
set item1=actdoc.getfirstItem("protokoll")
Bei mir heisst das Feld der Eingabe Protokoll.
Weiss jemand weiter ? ???
-
kann das nicht ganz nachvollziehen, das actdoc ist gespeichert, dein Feld protokoll existiert bereits.....
sorry, gib mir nähere Details - oder code Fragmente
cu
-
Hy,
ich habe jetzt folgenden Script-Code erstellt
Meine versteckte Ansicht heißt Vorlagen, das RTF-Feld in dieser Ansicht v_protokoll.
In der erstellten Maske heisst das Feld Protokoll
Sub Click(Source As Button)
Dim actdoc As Notesdocument
Dim view As NotesView
Dim item1 , item2
Set view = db.GetView( "Vorlagen" ) ''' in der view ist nur ein dok für diesen Zweck
Set doc = view.GetFirstDocument
Set item2 = doc.GetFirstItem( "v_protokoll" )
Set item1 = actdoc.GetFirstItem( "Protokoll" )
If ( item1.Type = RICHTEXT And item2.Type = RICHTEXT ) Then
Call item1.AddNewLine( 2 )
Call item1.AppendRTItem( item2 )
actdoc.saveoptions = "1"
Call actdoc.save (True,False)
actdoc.saveoptions = "0"
Call actdoc.close
Set docUI = ws.EditDocument(True, actdoc)
Call docUI.refresh
Call docUI.GotoBottom
End If
End Sub
-
habe jetzt dein code nicht getestet aber
- ich würde in der Deklaration die items als Variant deklarieren
- Protokoll und v_protokoll sind 2 RTF Felder !
die Fehlermeldung deutet darauf hin das ein variant nicht initialisiert wurde
cu
-
jetztetle - ich habe genau den Fall mit
If ( item1 Is Nothing Or item2 Is Nothing ) Then ....
ausgeklammert, falls ein item nicht initialisiert ist macht es keinen Sinn irgendwas zu appenden.
cu
-
Und hast Du mal überlegt mit einem RTF Editor zu arbeiten, in dem der User die Tabelle selber erweitern und anpassen kann? Oder willst Du die einzelnen Tabellenfelder separat abspeichern und auslesen können, oder würd es ausreichen den gesamten Inhalt in ein RTF zu schreiben? Dann würde z.B. sowas wie der WYSIWYG Web Editor für Notes funktionieren. Der funktioniert auch im Client. www.lotusnotesdomino.de (http://www.lotusnotesdomino.de)
-
@savage
wenn jemand eine profesionelle Lösung will dann sucht derjenige bestimmt nicht in diesem thread.
Ich finde dieses Forum soll Lösungen aufzeigen und nicht Wege wie man an dieses oder jenes Produkt kommt.
cu
-
@Performance
ja und nein. Es gibt ja auch solche Tools kostenlos. Die sind zwar nicht so gut, aber reichen manchmal auch aus. Und einige Sachen gibt es nun auch nicht als freeware oder shareware. Zudem ist es immer ein gute Ansatz das Thema auch von einer anderen Seite anzuschauen und auf Basis der Profi-Tools evtl. eigene Ideen umzusetzen. Also muss nicht schlecht sein sich mal anzuschauen, was bereits vorhanden ist um sich ein Bild der Möglichkeiten zu machen.
Und ist es nicht eine "Lösung" wenn man um den ganzen Programmierkram rum kommt indem man ein fertiges Tool einsetzt, auf das auch z.B. R6 setzt? Ich weiss nicht, ob Du nicht etwas zu kritisch mit professionellen Tools bist. Ich meine, wer hat schon Lotus Notes als Groupwaretool selber programmiert, damit er es nicht kaufen muss. ;D
-
@savage
- ich bin nicht kritisch gegenüber "profesionellen Tools" - als ITler bin ich ja eh voll dabei mit "profesionellen Lösungen/Tools" .....
- fertige Tools kosten immer Geld
- da wir meist mit Werksverträgen arbeiten MUSS das Endprodukt auch tatsächlich funktionieren, da hilft keine shareware oder auch kein fertiges Tool das eine Teilaufgabe übernehmen kann.
- und at least wenn der code mitverkauft wird(kostet etwas mehr) hilft eh nur Eigenarbeit.
cu
-
Hi,
sorry habe erst mal meinen Urlaub genossen. Heute habe ich gleich eure Antworten ausprobiert.
Nachdem ich die Variablen item1 und item2 als Variant deklariert habe und gleichzeitig in der If Anweisung die Klammern entfernt hatte, erhalte ich jetzt eine andere Fehlermeldung.
Variant does not contain an objekt.
Das Feld in der Vorlage ist jedoch gefüllt. Habt Ihr eine Idee?
Cu
Kutz
-
hallo Urlauber
vielleicht kannst du die db posten mit der einen form
cu
-
@Performance:
Ich bekomme immer so einen widerlichen Juckreiz im
kleinen Finger,
wenn ich ein Tool anempfohlen bekomme,
wo die eMailAdresse des Posters mit der empfohlenen Webseite so merkwürdig übereinstimmt.
ciao
Don Pasquale
-
yo don
aberrrrr
irgendwie sind wir doch alle Verkäufer oder ? ::) ::) ::) ::)
- in erster Linie will jeder sich selbst am besten verkaufen ;D
cu
-
das verstehe ich jetzt aber nicht. War das eine Antwort auf meine Fehlermeldung ???
-
@Kutz
nein
wenn du die db postest - kann ich dir weiterhelfen :)
cu
-
... da sind einige Fehler und Ungenauigkeiten drin...
Dim item1 , item2
Dim item1 As Variant
Dim item2 As Variant
Set view = db.GetView( "Vorlagen" )
... wo kommt die db her - ist die Global deklariert...
Set item1 = actdoc.GetFirstItem( "Protokoll" )
... wo wird actdoc initialisiert - ich vermisse "Set actdoc = ... "
ata
-
Hm, irgendwie komme ich immer nicht weiter.
Beide Dokumente sind in der selben Datenbank.
Habt Ihr eine Idee, ich denke hier habe ich ein Denkfehler.
Sub Click(Source As Button)
Dim actdoc As Notesdocument
Dim db As notesdatabase
Dim view As NotesView
Dim item1 As Variant
Dim item2 As Variant
Set view = db.GetView( "Vorlagen" ) ''' in der view ist nur ein dok für diesen Zweck
Set doc = view.GetFirstDocument
Set item2 = doc.GetFirstItem( "v_protokoll" )
Set item1 = actdoc.GetFirstItem( "Protokoll" )
If ( item1.Type = RICHTEXT And item2.Type = RICHTEXT ) Then
Call item1.AddNewLine( 1 )
Call item1.AppendRTItem( item2 )
actdoc.saveoptions = "1"
Call actdoc.save (True,False)
actdoc.saveoptions = "0"
Call actdoc.close
Set docUI = ws.EditDocument(True, actdoc)
Call docUI.refresh
Call docUI.GotoBottom
End If
End Sub
???
-
... wo kommt das actdoc her - ich vermisse
Set actdoc = ws.CurrentDocument.Document
... oder derartiges..
ata
-
Ja hatte ich ganz übersehen,
aber nachdem ich die Zeile eingefügt habe, erscheint immer noch die Meldung,
Variable does not contain an object.
Eine der Variablen ist leer.
:(
-
... es fehlt noch die Deklaration des ws...
Dim ws As New NotesUIWorkspace
... sorry...
ata
-
Danke, jetzt komme ich Schritt für Schritt weiter
Jetzt erhalte ich
Object variable not set
>:(
-
... schau mal mit dem Debugger, wo die Meldung erzeugt wird...
ata
-
@ata
der Geduldsmensch ;D ;D ;D
@Kutz
poste doch einfach deine db hier rein - nur die 2 verwendeten Forms, dann kann ich dir weiterhelfen
- wenn du jede Fehlermeldung hier postest kann dieser Beitrag noch Ellenlang werden :-\
cu
-
Hallöchen Zusammen,
es gibt da etwas was eine Erwähnung sein sollte, nein es ist nicht kostenlos aber es hilft ungemein mit RTF Felder zu arbeiten.
Ich selber setzte diese Libary ein und man kann diese kostenlos testen. Für Profressionelle Berichte aus Notes mit RTF Felder eigentlich ein muss:
http://geniisoft.com/
Man kann mit dieser Libary mit den Backendklassen RTF Felder vergewaltigen und sämtliche Benutzerfunktionalität benutzen.
-
Hallo,
hier habe ich meine DB eingestellt.
Ein neues Management-Protokoll soll erstellt werden, dazu habe ich ein Button in die Maske eingebaut, mit der die Tabelle eingesetzt werden soll.
Danke schon im voraus :)
Kutz
-
hallo kutz
ich habe ein Paar Änderungen vorgenommen
- du kannst mehrere Vorlagen mit einer Maske erstellen - der Unterschied liegt in der Bezeichnung der Vorlagen - Feld v_Art
- Auswahl von neuen Vorlagen über eine Dialogliste - da habe ich die vorhandenen VMasken reingeschrieben - wenn dir das ein wenig zu starr ist kannst du auch ein @unique(@dbcolumn einbauen.
- das Querysave der VMaske verhindert das Vorlagennamen doppelt vorkommen
- das erzeugen von neuen Vorlagen oder Management doks habe ich über die roten Punkt Aktion gemacht
- die Vorlagen werden immer an die vorhandene rtf angehängt
cu
-
Hi,
wollte mich eigentlich nicht einmischen nur der Neugierde zu Liebe.
Um den Fehler "OBjectvariable not set" loszuwerden fehlt das hier:
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
sonst knallts bei der set view = ....
das Managment Dokument muss auch erst ein save erfahren sonst knallts am rtf Feld.
Aber so richtig habe ich das Szenario nicht verstanden was da tun soll??
-
@doliman
jeder darf sich einmischen - so entstehen geniale Ideen !!
- welche view meinst du - ich verwende keine view mehr
- beim Mgm dok kanllt es nicht sondern es kommt eine Meldung oder Kutz kann den Code ändern mit einem actdoc.save true, false
--> steht aber im Kommentar
cu
-
Hallo
vielen Dank für die vielen Infos.
Besonderer Dank gilt performance für die kompetente Hilfe.
Cu
:D
-
Hallo Kutz
thx...
ich hatte schon gedacht du hättest dich von Notes verabschiedet ;D
keep running