Autor Thema: Checken von evtl. Doppeleinträgen  (Gelesen 1013 mal)

Offline KiTaMann

  • Aktives Mitglied
  • ***
  • Beiträge: 111
  • Geschlecht: Männlich
  • Nimm Platz in meiner Datenbank!
Checken von evtl. Doppeleinträgen
« 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
Gruß Klaus

"Alle Menschen sind klug.
Die einen vorher, die anderen nachher."

Driri

  • Gast
Re:Checken von evtl. Doppeleinträgen
« Antwort #1 am: 16.06.04 - 10:10:03 »
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.

Glombi

  • Gast
Re:Checken von evtl. Doppeleinträgen
« Antwort #2 am: 16.06.04 - 10:20:11 »
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


Offline KiTaMann

  • Aktives Mitglied
  • ***
  • Beiträge: 111
  • Geschlecht: Männlich
  • Nimm Platz in meiner Datenbank!
Re:Checken von evtl. Doppeleinträgen
« Antwort #3 am: 16.06.04 - 11:39:56 »
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
Gruß Klaus

"Alle Menschen sind klug.
Die einen vorher, die anderen nachher."

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz