Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: schikoli am 02.12.05 - 14:18:53

Titel: Lotus Script
Beitrag von: schikoli am 02.12.05 - 14:18:53
Hallo,

kann mir bitte jemand mit diesem Script weiterhelfen:

Ich möchte meine Felder des Dokumentes Unternehmensdatenblatt mit den Daten aus einem anderen Dokument (Firmen) füllen.

Ich habe in in der Ansicht Firmen eine Action-Button eingerichtet, der die ausgewählten Daten nach Unternehmensdatenblatt "importieren soll".

Leider öffnet sich nur die Maske Unternehmensdatenblatt aber ohne Daten!

Was muss ich in diesem Script ändern?

LG

Sub Click(Source As Button)
   
   ' Button für Ansichten
   On Error Goto Errhandle
   
   Dim ses As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim curDoc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim item As NotesItem
   Dim form As String
   Dim default As String
   Dim values(6) As Variant
   Dim fillField(19) As String
   Dim fillFieldFormat(19) As String
   
   '--------------------------------------------------
   ' Data   
   
   values(0)="Unternehmensdatenblatt"
   
   'Daten      
   fillField(0)="Firma"
   fillFieldFormat(0)="txt"
   fillField(1)="Anschrift"
   fillFieldFormat(1)="txt"
   fillField(2)="PLZ"
   fillFieldFormat(2)="txt"
   fillField(3)="Ort"
   fillFieldFormat(3)="txt"
   fillField(4)="Region"
   fillFieldFormat(4)="txt"
   fillField(5)="Homepage_1"
   fillFieldFormat(5)="rtxt"
   fillField(6)="Projekte"
   fillFieldFormat(6)="txt"
   fillField(7)="Bedarf"
   fillFieldFormat(7)="txt"   
   fillField(8)="Branche_1"
   fillFieldFormat(8)="txt"
   fillField(9)="MA"
   fillFieldFormat(9)="txt"
   fillField(10)="Umsatz"
   fillFieldFormat(10)="txt"
   fillField(11)="Entwicklung"
   fillFieldFormat(11)="txt"
   fillField(12)="Klassifizierung_Firma"
   fillFieldFormat(12)="txt"
   fillField(13)="Status"
   fillFieldFormat(13)="txt"
   fillField(14)="Datum"
   fillFieldFormat(14)="txt"
   fillField(15)="KW"
   fillFieldFormat(15)="txt"
   
   'vertriebsrelevante Informationen
   fillField(16)="Vertriebsinformationen"
   fillFieldFormat(16)="txt"
   
   ' ----------------------------------------------------------------------
   
   
   Set db = ses.CurrentDatabase
   Set curDoc = ses.DocumentContext
   
   If Not curDoc Is Nothing Then
      default = curDoc.GetFirstItem("Form").Text
   Else
      default = ""
   End If   
   
   form = ws.Prompt( PROMPT_OKCANCELLIST, "Neues Dokument anlegen", "Bitte wählen Sie für das neue Dokument die zutreffende Kategorie:", default, values )
   
   If Not form="" Then
      Set uidoc = ws.ComposeDocument( "", "", form )
   Else
      Messagebox "Abbruch durch den Benutzer.",,"Abbruch"
   End If
   
   End
   
Errhandle:
   Messagebox "Button Neu ohne Inhalt: Fehler " & Err() & " in Zeile " & Cstr(Erl) & ": " & Error(),16,"Fehler"      
   Dim currentLog As NotesLog
   Set currentLog = New NotesLog( "NewProtocolEntryLog" )
   Call currentLog.OpenFileLog( "n:\mh\db\logs\address.txt" )
   Call currentLog.LogError(Err(), "Button Neu ohne Inhalt: Fehler " & Err() & " in Zeile " & Cstr(Erl) & ": " & Error() & " User: " & ses.CommonUserName)
   Call currentLog.Close
   Resume TheEnd
   
TheEnd:
   
End Sub
Titel: Re: Lotus Script
Beitrag von: koehlerbv am 02.12.05 - 14:45:20
Leider öffnet sich nur die Maske Unternehmensdatenblatt aber ohne Daten!

In dem geposteten Code finde ich nicht einmal den Ansatz von dem, was Du eigentlich vorhast.
Einen LS-Kursus können wir im Rahmen des Forums leider nicht bieten.

Bernhard
Titel: Re: Lotus Script
Beitrag von: schikoli am 02.12.05 - 14:49:04
okay, trotzdem danke
Titel: Re: Lotus Script
Beitrag von: Axel am 02.12.05 - 15:27:56
Was muss ich in diesem Script ändern?

Erst mal mindestens 2/3 des Scriptes wegschmeissen.

Die Übernahme von Feldwerten kann ungefähr so aussehen. Die Feldnamen musst du natürlich anpassen.

...
Dim newdoc As NotesDocument
...

Set db = ses.CurrentDatabase
Set curDoc = ses.DocumentContext
   
If Not curDoc Is Nothing Then
      default = curDoc.GetFirstItem("Form").Text
Else
      default = ""
End If   
   
form = ws.Prompt( PROMPT_OKCANCELLIST, "Neues Dokument anlegen", "Bitte wählen Sie für das neue Dokument die zutreffende Kategorie:", default, values )
   
If Not form="" Then
  Set newdoc = New NotesDocument(db)  ' Neues Dokument im Backend anlegen
  newdoc.Form = form  'Maskennamen setzen
  'Ab hier werden die Feldinhalte aus dem markierten Dokument übernommen
  newdoc.Feldname1 = curdoc.Feldname1
  newdoc.Feldname2 = curdoc.Feldname2
  newdoc.Feldname3 = curdoc.Feldname3
  newdoc.Feldname4 = curdoc.Feldname4
  newdoc.Feldname5 = curdoc.Feldname5
  ...

  Set uidoc = ws.EditDocument(True, newdoc)  'Dokument zur weiteren Bearbeitung im Frontend öffnen
   Else
      Messagebox "Abbruch durch den Benutzer.",,"Abbruch"
End If
   
Exit Sub  'Wenn Routine ohne Fehler durchgelaufen ist, wird beendet

Errhandle:
...


Das ist logischerweise auch noch kein fertiges Script. Das können wir nicht liefern. Mich beschleicht das Gefühl, dass du noch nicht sonderlich viel in Script gemacht hast, oder?  Das ist ja auch keine Schande, auch wir haben mal klein angefangen.  Aber wenn du effektiv Script programmieren willst/musst, dann musst du dich einarbeiten und mit kleinen Sachen anfangen. Besorge die Literatur und/oder belege einen entsprechenden Lehrgang. Ein guter Einstieg ist aber auch die Designer-Hilfe. Nimm die Beispiele, arbeite sie durch, passe sie an und schaue was passiert. Bei Fragen stehen wir hier gerne zur Verfügung.

Axel