Verknüpfung in Datenbanktabellen überschreiben

Hallo!

In einer Datenbanktabelle übernehme ich für den Eintrag eines Datensatzes den Großteil der Daten aus einer anderen Grund)tabelle dieser Datenbank. Die Verknüpfungen sind in der Datenbank entsprechend angelegt.

Gelegentlich kommt es jedoch vor, dass die benötigten Einträge nicht in der Grundtabelle enthalten sind.

Ich muss also für jedes Datenfeld vor dem Eintrag die Verknüpfung überschreiben, was bei über 30 Datenfeldern sehr nervig ist.

Gibt es in Papyrus die Möglichkeit, die Verknüpfung im Eingabeformular vor der Eintragung eines Datensatzes pauschal für alle Felder zu überschreiben?

Ich könnte natürlich die entsprechenden Daten in die Grundtabelle eintragen und dann in die zweite Tabelle übernehmen. Aber das möchte ich auf keinen Fall, da ich dann dort mehrere Datensätze anlegen und diese nach der Übernahme wieder löschen muss.

Schon mal vielen Dank für Eure Unterstützung

Andreas

Hallo Andreas.

Das kann ich auch nachvollziehen.

OK - das ist auch klar.

Prüfe bitte, ob sich im BASE-Modus folgende Funktion eignet:

Menü “Bearbeiten” > “Global ersetzen …”

Aber lasse Vorsicht walten. (Sicherungskopie der DB erstellen.)

Das verstehe ich nicht.

Du solltest (womöglich) die Datenbankstruktur überdenken. Redundanz!?

Hallo Gerd!

Vielleicht habe ich mein Problem noch nicht genau genug beschrieben. Ich versuche es noch mal.

Ich habe eine Datenbank mit mehreren Tabellen. Eine Tabelle davon beinhaltet wesentliche Grunddaten von Personen (Name, Vorname, Adresse, Geburtsdatum und vieles mehr).

Tabelle 2 ist sozusagen ein “Anmeldeformular” für eine bestimmte Veranstaltung. Das bedeutet, ich brauche für den Eintrag in Tabelle 2 in den meisten Fällen Daten aus der Tabelle Grunddaten (eben Name, Adresse usw.).

Karl Müller aus der Ringstraße 5<< meldet sich für eine Veranstaltung ‘X’ an. Seine Stammdaten übernehme ich aus der Grundtabelle in das Eingabeformular von Tabelle 2 über die Verknüpfung und ergänze weitere Daten, die in der Grundtabelle nicht stehen(z.B. Veranstaltungsname, Ort usw.).

Ist der Teilnehmer noch nicht volljährig, übernehme ich noch einige Grunddaten der Eltern. Kommt die Person noch mit einer Begleitperson, wird auch die noch ergänzt.

Und jetzt zum Problem:

Wenn ich in Tabelle 2 einen neuen Datensatz erzeugen möchte, das Eingabeformular öffne, und im Feld >>Name<< zu tippen beginne, geht wg. der Verknüpfung sofort die Grundtabelle auf, um nach dem entsprechenden Datensatz zu suchen.

Wenn allerdings diese Person in der Grundtabelle nicht aufgeführt ist, muss ich im Eingabeformular bei jedem Eingabefeld, das eine Verknüpfung zur Grundtabelle hat, über rechte Maustaste->Popup ‘Verknüpfung überschreiben’ anklicken und kann dann die jeweiligen Daten eintragen.

Der Grund, warum ich diese Verknüpfung angelegt habe, ist, dass ich dann mit den in Tabelle 2 erzeugten Datensätzen einen Report in ein Seriendokument vornehmen kann.

(Seriendokumente mit Feldern aus unterschiedlichen Tabellen einer Datenbank gehen ja leider nicht :cry: ) .

Also: mit ‘Global suchen und ersetzen’ komme ich nicht weiter.

Ich möchte ja nur global für alle in Frage kommenden Felder die Verknüpfung abschalten - und das auch nur für diesen einen Datensatz, den ich gerade eingebe.

Und ich meine, dass meine Datenbankstruktur auch relativ gut durchdacht ist.

Ist das jetzt etwas verständlicher dargestellt?

Gruß, Andreas

Das ist korrekt so.

Das solltest Du anders regeln.

Du klickst also in das DB-Feld “Name” und das Eingabeformular der Grundtabelle öffnet sich.

Wenn also in der Grundtabelle (Stammdaten Kunden) ein Kunde nicht enthalten ist, erzeugtst Du bitte gleich dort durch Klick auf das Symbol “Neu” einen neuen Datensatz. D.h., Du legst einen neuen Kunden dort an.

Hast du das getan stehen Dir diese Daten wie gewohnt im Anmeldeformular (Tabelle 2) zur Verfügung.

(Dafür hast Du Dir doch seinerzeit die Verknüpfungen angelegt.)

Das stimmt.

Wörtlich genommen: abschalten - dies geht nicht.

dotpap schrieb am Fr, 01 August 2008 20:32

Das hatte ich bereits in meinem ersten Beitrag geschrieben, dass ich das nicht möchte. Die Sache ist etwas komplizierter, als dass ich nur “einen Kunden” eingebe. Ich muss dann meistens mehrere Datensätze erzeugen und die dann nach der Übernahme in Tabelle 2 wieder löschen. Ist mir zu kompliziert. Da kann ich besser für jedes einzelne Feld die Überschreibung abschalten.

Schade - aber das ist genau das, was ich mir wünsche.

Vielen Dank.

Andreas

Ich hab das jetzt erst so gelesen, vielleicht hilft folgendes (Falls ich das Problem verstanden habe):

setze bei allen verknüpften Feldern doch einmal bei "Rechenergebnis überschreiben: auf „Immer erlaubt“

Rechenergebnis überschreiben.gif

Damit kannst du nach der Verknüpfung schon mal alles überschreiben.

Dann blieben noch 2 Optionen: Du legst einen DUMMY-Datensatz an und nutzt immer den, ODER du machst aus Herbert Müller, noch einen Müller01, Müller 02, usw. und legst in der Adressdatenbank ein Häckchen-Feld „Für Report benutzen an“. Bei all diesen *01, *02, usw Adressen lässt du das Häckchen ungesetzt und machst vor deinem Druck-Report eine entsprechende Suchabfrage.

Noch sauberer (wenn zum Problem passend) wäre eine 2. Adressdatenbank, die du ZWISCHEN deine bestehende Adressdatenbank und die „Anmeldeformular“ Datenbank legst, gleicher Aufbau wie die Adressdatenbank, mit Verknüpfungen zur „Originaladressdatenbank“. Dann gehst du vom Anmeldeformular erst mal in diese Zwischentabelle: Dort

1)legst du entweder einen neuen Datensatz an (den danach augenscheinlich keiner mehr braucht) oder

  1. falls du Daten aus der „Originaladressdatenbank“ brauchst: gehst über die Verknüpfung zur „Originaladressdatenbank“ holst die alles, löschst in der Zwischendatenbank das unbenötigte und verwendest dann diese Daten.

Dann brauchst du gegenüber Variante 1 bei der Originaladressdatenbank keine Abfrage vor den Report ausführen, keine Häckchen setzen, sondern kannst diese genauso verwende wie jetzt. Was in der Zwischendatenbank steht kann der grösste Mist sein, du brauchst ihn nicht zu löschen,

Ist zwar ein bißchen „von hinten durch die Brust ins Auge“, wenns klappt ist das aber auch egal…