Das Notes Forum
Domino 9 und frühere Versionen => Administration & Userprobleme => Thema gestartet von: KiTaMann am 15.06.04 - 18:49:39
-
Hallo @All,
setze mich seit Kurzem mit LotusScript auseinander und habe jetzt folgendes Problem.
Ich möchte den Usern die Möglichkeit geben, bei der Datenerfassung über Eingabehilfen zu verfügen und da habe ich mir zum Bsp. 2 kleine Prozeduren geschrieben, von denen sich die eine die PLZ merkt und die andere dann den Ort (soweit verfügbar) autuomatisch ins Feld Ortsname setzt.
Die eine Prozedur zum Setzen der Schlüsselworte sieht so aus:
Sub SchluesselwortePlz
Dim session As New NotesSession
Dim uidoc As notesUIDocument
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Dim dc As NotesDocumentCollection
Dim keydoc As NotesDocument
Dim db As NotesDatabase
Dim plz As String
Dim dt As New NotesDateTime("1.1.1900")
Dim ort As String
Set db = session.currentDatabase
Set uidoc = ws.CurrentDocument
Set doc = uidoc.document
Set item = doc.getFirstItem("Postleitzahl")
plz = Trim(item.text)
Set item = doc.getFirstItem("Ortsname")
ort = Trim(item.text)
If Len(plz) > 0 Then
Set dc = db.Search({doctype = "plz" & Postleitzahl = "}+plz+{"},dt,0)
If dc.count = 0 Then
Set keydoc = New NotesDocument(db)
keydoc.doctype = "plz"
keydoc.form = "Postleitzahl"
keydoc.Postleitzahl=plz
keydoc.Ortsname=ort
Call keydoc.save(True,False)
End If
End If
End Sub
Die andere zum automatische Feldbesetzen lautet:
Sub HoleUndSetzeOrtsname
Dim session As New NotesSession
Dim uidoc As notesUIDocument
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Dim dc As NotesDocumentCollection
Dim keydoc As NotesDocument
Dim db As NotesDatabase
Dim plz As String
Dim dt As New NotesDateTime("1.1.1900")
Set db = session.currentDatabase
Set uidoc = ws.CurrentDocument
Set doc = uidoc.document
Set item = doc.getFirstItem("Postleitzahl")
plz = Trim(item.text)
If Len(plz) > 0 Then
Set dc = db.Search({doctype = "plz" & Postleitzahl = "}+plz+{"},dt,0)
If dc.count > 0 Then
Set keydoc = dc.GetFirstDocument
Set item = keydoc.getfirstitem("Ortsname")
Call uidoc.FieldSetText("Ortsname",Trim(item.text) )
End If
End If
End Sub
So weit, so gut. Habe jetzt nur das Problem, dass es ja auch Orte gibt, die unterschiedlich heißen, aber dieselbe PLZ haben :-\,
hat jemand eine Idee, wie man das abfangen könnte?
Grüße @All
KiTaMann
-
Ist das wirklich so ? Verschiedene Orte mit einer PLZ ?
Da bleibt dann wohl nur der Weg, alle zugehörigen Ortsnamen zu ermitteln und dem User als Auswahl anzubieten.
Andere Alternative wäre ja höchstens eine Fehlermeldung.
-
Für die 2. Prozedur:
Du kannst anstelle des db.Search auch mittels Evaluate ein @DbLookup machen.
Du brauchst eine Ansicht, die PLZ Dokumente anzeigt und nach PLZ in der 1. Spalte sortiert ist und in der 2. Spalte den Ortsnamen enthält
Ich skizziere mal:
dim ws as New NotesUIWorkspace
dim lookupPLZ as Variant
dim ret_prompt as string
...
lookupPLZ = Evaluate(|@DbLookup("";"";"Ansichtsname";"| + plz + |";1)|)
if not IsArray(lookupPLZ) then
'Keine PLZ gefunden
exit sub
end if
if UBound(lookupPLZ) = 0 then
'Genau eine PLZ gefunden
Call uidoc.FieldSetText("Ortsname",lookupPLZ(0) )
else
'Auswahl in Prompt
ret_prompt = ws.Prompt(PROMPT_OKCANCELLIST,"Ort wählen","Bitte wählen Sie den Ort aus:",lookupPLZ(0),lookupPLZ)
if ret_prompt <> "" then
Call uidoc.FieldSetText("Ortsname",ret_prompt )
end if
end if
Andreas
-
Evaluate... , jaja, da hab ich doch mal was gelesen über die Verwendung meiner über Alles geliebten Formeln in LotusScript.
Besten Dank auch, werde die von Andreas vorgeschlagene Variante mal "einzubauen" versuchen...
Grüße
Klaus