Seite 1 von 1

Korrespondenz zum Kunden per Knopfdruck anzeigen

Verfasst: Fr, 07.02.2014 12:30
von lou-cypher
Ich suche jetzt schon so lange hier im Forum und auch über Google nach einer Lösung für mein Problem, werde aber nicht fündig. Leider bin ich absoluter Einsteiger und brauche unkomplizierte Hilfe ;-)
Es soll eine Kundendatanbank werden in der Korrespondenz abgespeichert werden soll und ich weiß nicht wie ich das anlegen und verknüpfen soll.
Kunden sollen angelegt werden können und dann soll zu einem Kunden eine Kommunikation angelegt werden. Das kann ein Telefonat, eine Mail oder ein Brief sein. Der Inhalt soll als Info hinterlegt werden.
Ein Kunde hat dann später eine Historie dieser Kommunikation hinterlegt.
Idealerweise gibt es in dem Kundenformular ein Button mit "Kommunikation anzeigen", um zu sehen was bisher geschah und ein Button mit "Neue Kommunikation", um diese anzulegen.

Tabelle 1: ID, Vorname, Nachname
Tabelle 2: ID, Datum, Art, Inhalt

Kann mir jemand sagen, wie ich das am besten anstelle, bzw. anfange ? Habe unterschiedlichste Ansätze gelesen mit Unterformular und Makros, aber hab alles nicht hingekriegt.

Re: Korrespondenz zum Kunden per Knopfdruck anzeigen

Verfasst: Fr, 07.02.2014 19:02
von RobertG
Hallo Lou-cypher,
lou-cypher hat geschrieben: Tabelle 1: ID, Vorname, Nachname
Tabelle 2: ID, Datum, Art, Inhalt
Die beiden Tabellen sind nicht verknüpft. In die Tabelle 2 gehört ein Feld, das als Fremdschlüssel die ID aus Tabelle 1 speichert.
Also
Kunde: ID, Vorname, Nachname
Korrespondenz: ID, Datum, Art, Inhalt, Kunde_ID
Die ID aus der Tabelle "Kunde" muss den gleichen Feldtyp haben wie "Kunde_ID" aus der Tabelle "Korrespondenz". Wenn Du die ID als AutoWert-Feld definiert hast, so ist der Feldtyp "INTEGER". Also darauf achten, dass der Feldtyp von "Kunde_ID" auch INTEGER ist.
Jetzt unter Extras → Beziehungen die Tabellen miteinander verbinden. Maus auf "Kunde"."ID", ziehen nach "Korrespondenz"."Kunde_ID". Das ergibt eine 1:n-Verknüpfung. Falls ein Kunde gelöscht wird kann auch der Inhalt aus der Tabelle "Korrespondenz" entfernt werden. Dies kann bei den Beziehungen (mit einem rechten Mausklick auf den verbinder) noch eingestellt werden.
Jetzt zum Formular:
Formularassistenten starten, Hauptformular basiert auf der Tabelle "Kunde". Unterformular: "Korrespondenz" anwählen. Alle weiteren Schritte laufen nach Belieben. Wenn Du im Unterformular ein Tabellenkontrollfeld wählst, dann kannst Du sämtliche Korrespondenz auf einmal sehen. Wenn Du viel Inhalt hast, dann kannst Du später daneben auch noch Felder erstellen, die den kompletten Inhalt in größer zeigen, wenn Du auf eine Zeile des Tabellenkontrollfeldes triffst.
Einen Button brauchst Du nicht zwingend. Du kannst Dich später einfach durch die Kunden durchklicken und im Unterformular die Daten sehen.
Wenn es viele Kunden sind, dann empfiehlt sich eine Suchfunktion. Die kann aber später noch eingebaut werden.

Gruß

Robert

Re: Korrespondenz zum Kunden per Knopfdruck anzeigen

Verfasst: Mo, 10.02.2014 10:51
von lou-cypher
Vielen Dank Robert. Ich hatte vorher schon ganz viele Sachen probiert, aber nicht hingekriegt. So funktioniert es jetzt bei mir.
Jetzt habe ich ein Formular, in dem auf der einen Seite die ganzen Details eines Kunden angezeigt werden und rechts daneben in tabellarischer Form alle Dokumente untereinander aufgelistet sind. Wie du bereits erwähnt hast, gibt es jetzt eine Möglichkeit den Inhalt größer anzuzeigen, aber wie? In der Tabelle der Dokumente reicht der Platz für die Anzeige das Datums und der Art der Kommunikation, aber der Inhalt (Memo) soll darunter komplett angezeigt werden (ganze Mail oder ganzer Brief) je nachdem welcher Datensatz in der Tabelle ausgewählt wurde.

Re: Korrespondenz zum Kunden per Knopfdruck anzeigen

Verfasst: Mo, 10.02.2014 14:28
von lou-cypher
Parallel dazu versuche ich über einen Button im Kundenformular das Formular aufzurufen, mit dem man ein neues Dokument zu dem Kunden anlegt. Wie wird denn dieser Datensatz automatisch dem Kunden zugeordnet, den ich geöffnet habe ? Oder muss man auf jeden Fall bei der Anlage des Dokumentes den Kunden mit angeben ?

Re: Korrespondenz zum Kunden per Knopfdruck anzeigen

Verfasst: Mo, 10.02.2014 15:15
von RobertG
Hallo lou-cypher,

Du hast ja im Unterformular jetzt ein Tabellenkontrollfeld. Rufe das Formular zum Bearbeiten auf, rufe das Unterformular (im Formularnavigator) auf und gründe dann ein Textfeld, dass den Memo-Inhalt aufnehmen soll. Du erhältst dann im Unterformular den Memo-Inhalt zu dem Datensatz angezeigt, den Du auf dem Tabellenkontrollfeld anklickst.

Theoretisch kannst Du auch ein neues Dokument in diesem Tabellenkontrollfeld zusammen mit dem Memo-Inhalt anlegen. Wenn Du aber ein separates Formular nutzen willst, dann musst Du irgendwie das Feld "Kunde_ID" vorbelegen, das Du gerade ausgesucht hast. Ich würde sicherheitshalber noch in dem zweiten Formular den Namen des Kunden zumindest anzeigen lassen.

Es gibt vom Prinzip her zwei Wege zur Vorbelegung.
1. Du gibst dem neuen Formular einen Filterwert mit. Nachteil: So ein Filter kann ausgeschaltet werden. Wenn jemand also das Formular startet und anschließend den Filter ausstellt, dann sind alle möglichen Kunden wieder zur Eingabe frei.
2. Du legst den Filterwert in einer separaten Tabelle ab. Ich habe solche Filtertabellen in vielen Datenbanken eingebaut. Die Tabelle Filter enthält "ID" - Ja/Nein-Feld, "Kunde_ID" - Integer. Dann brauchst Du eine Abfrage, die nur die Datensätze anzeigt, die eine "Kunde_ID" haben, die mit dieser "Kunde_ID" übereinstimmt. Diese Abfrage wird Grundlage für das Formular.
Für beide Varianten brauchst Du ein Makro. Das Makro muss zuerst die "Kunde_ID" abspeichern und dann das Formular starten. Solche Makros sind in den Beispieldatenbanken zum Base-Handbuch enthalten. Für den Filter kann ich da nicht allgemeingültig etwas aufschreiben. Hier nur die Zeilen, wie ein Formular aus einem anderen heraus gestartet wird:

Code: Alles auswählen

SUB Formular_Korrespondenz
ThisDatabaseDocument.FormDocuments.getByName("Formular_Korrespondenz").open
END SUB
Das würde das Formular mit dem Namen "Formular_Korrespondenz" öffnen. Mit ...close schließt Du übrigens ein Formular.

Gruß

Robert