Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MisterDa am 27.03.03 - 14:38:31

Titel: Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: MisterDa am 27.03.03 - 14:38:31
Hi Leute,

ich hab mal wieder ne Frage und zwar:

Ich komme aus der Access-Ecke und würde gerne wissen, ob ich sowas ähnliches wie Tabellen auch in Lotus implementieren kann. Wenn ich z.b. ne Person hab, deren Adresse ich speichern will und die hat ne Firmen- und ne Privatadresse. Da machts ja dann keinen Sinn, über die Maske die Person an sich 2mal in der DB abzulegen. Gleiches gilt dann beim Löschen, da müßte ich ja jede Person mehrfach löschen statt nur einmal zentral. Kann ich sowas über Teilmasken realisieren? Oder irgendwie anders? ???

Hab mal ein Bild aus Access zum Verständnis angefügt.

Danke für die Hilfe
Titel: Re:Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: Axel am 27.03.03 - 15:11:41
Hi,

Notes kann keine Relationen. Auch werden die Daten nicht in Tabellenform abgelegt. Notes speichert die Daten dokumentenorientiert ab.

Am einfachsten du nimmst beide Adressen ins Personendokument auf oder du arbeitest mit Haupt- und Antwortdokumenten.

Firmenadresse ist das Hauptdokument
Ansprechpartner ist jeweils ein Antwortdokument.


Axel
Titel: Re:Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: MisterDa am 27.03.03 - 15:27:28
danke.

das notes keine relationen kann und dokumentenorientiert abspeichert weis ich ja, aber ich möchte eben so eine ähnliche struktur realisieren, da es bei der entstehenden DB eben zu einem Namen 1 - x dokumente geben kann. aber ich werd mich mal an die haupt- und antwortdokumenten-sache ranmachen

MisterDa
Titel: Re:Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: ata am 27.03.03 - 17:05:09
... das geht schon, was du vorhast. Du mußt dabei darauf achten, daß du für die Person einen Schlüssel generierst, der eindeutig ist. In access ist das mit dem PrimaryKey eingebaut - in Notes gibt es das so nicht - du mußt dir diesen Key also zusammenbauen. Beim Abspeichern einer Person suchst du dann nach einer Person mit diesem Key - gibt es die Person noch nicht, dann kann das Dokument angelegt werden.

... wieviele Felder, ob Privatadresse und Firmenadresse in einem Dokument angelegt werden, ist zunächst mal völlig nebenrangig.

... Notes-Adressbücher legen beides in einem Dokument an...

Ich würde es nicht mit Antwortdokumenten machen. Die haben die Problematik, daß wenn das Hauptdokument gelöscht wird die Antwortdokumente ins Nirwana gehen...

ata
Titel: Re:Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: Axel am 28.03.03 - 08:26:22
... das geht schon, was du vorhast. Du mußt dabei darauf achten, daß du für die Person einen Schlüssel generierst, der eindeutig ist. ....

Ich würde es nicht mit Antwortdokumenten machen. Die haben die Problematik, daß wenn das Hauptdokument gelöscht wird die Antwortdokumente ins Nirwana gehen...

Du versuchst krampfhaft Relation nachzubilden. Das ist ein Riesenaufwand und führt meiner Erfahrung nach selten zu gewünschten Ergebnis.

Ich halte für bestimmte Anwendungen Haupt- und Antwortdokumente für die bessere Alternative, weil man sich hier um den Bezug nicht selbst kümmern muß. In einem gebe ich dir recht, dass wenn das Hauptdokument gelöscht wird, die Antwortdokument im Nirwana verschwinden. Aber das läßt sich relativ einfach verhindern. Es gibt genug Lösungsansätze dafür.

Axel
Titel: Re:Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: MisterDa am 28.03.03 - 08:36:59
"...die Antwortdokument im Nirwana verschwinden. Aber das läßt sich relativ einfach verhindern. Es gibt genug Lösungsansätze dafür."

Als da z.B. wären?

Ich bin wie gesagt komplett neu in die Notes-Programmierung eingestiegen..

Danke.

MisterDa
Titel: Re:Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: Axel am 28.03.03 - 08:57:15
Hi,

füge im PostdocumentDelete - Event des Datenbank-Scripts folgenden Code ein.

Sub Postdocumentdelete(Source As Notesuidatabase)
   
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim i As Integer
   
   Set collection = Source.Documents
   
   If collection.Count = 0 Then
      Exit Sub
   Else
      For i = 1 To collection.Count
         Set doc = collection.GetNthDocument(i)
         Call DeleteResponseDocs(doc)
         Call doc.Remove(True)
      Next  'For i = 1 To collection.Count
   End If  'If collection.Count = 0 Then
   
End Sub


Weiterhin brauchst du folgende Routine:

Sub DeleteResponseDocs (doc As NotesDocument)
   
   Dim responses As NotesDocumentCollection
   Dim tmpdoc As NotesDocument
   Dim dummy As NotesDocument
   
   Set responses = doc.Responses
   Set dummy = responses.GetFirstDocument
   While Not (dummy Is Nothing)
      Set tmpdoc = responses.GetNextDocument(dummy)
      Call DeleteResponseDocs(dummy)
      Call dummy.Remove(True)
      Set dummy = tmpDoc
   Wend  'While Not (dummy Is Nothing)
   
End Sub

Die kannst du ebenfalls in Datenbankscript packen, oder in eine Scriptbibilothek. Die mußt du dann mit Use "Name der Bibliothek" im Options - Abschnitt des Datenbankscriptes einbinden.

Axel
Titel: Re:Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: ata am 28.03.03 - 09:50:20
@Axel

... ich muß öfters mal relational in Notes arbeiten. Ich meide nach Möglichkeit Hierarchische Dokumente, da ich die Zuordnung dynamisch in der Hand haben will - und dabei werde ich durch Dokumenthierarchie behindert...

... das einzigst problematische ist der eindeutige Key, den es zu bilden gibt. Bei Personen nehme ich gerne den Weg

Nachname#Vorname#Geburtstag

... es gibt zwar die statistische Möglichkeit einer Dopplung, aber in einem solchen Fall behelfe ich mir durch einen Namenszusatz wie z.B. "II"...

... Dokumenthierarchie ist bei Diskussionsdatenbanken, schwarzen Brettern, wissensdatenbanken etc. angebracht, da es dort 1:n-Beziehungen gibt. Bei Personen-Adressen würde ich das über ein Dokument handeln. Mehrere Adressen, wie zum Beispiel Privat und Geschäftlich lassen sich dann entweder in getrennten Feldern abwickeln ( s. NAB's ) oder dynamische Tabellen ( bevorzuge ich ). Bei der Lösung muß ich mich um keine Unterdokumente kümmern. Eine Person kann mehrere Adressen haben, ohne daß ich für eine Person dann mehrere Dokumente brauche, wenn eine Person z.B. 2 Arbeitsstellen hat...

ata
Titel: Re:Tabellenaufteilung ähnlich wie in Access möglich?
Beitrag von: MisterDa am 28.03.03 - 11:13:22
Alles klar.

Danke Leute