Hallo hans,

> (zum
> verarbeiten wäre - meine starke vermutung - die db wohl viel
> einfacher zu handhaben).

Würde ich auch so sehen denn....:



> 1.   in der 1. tabelle sind "kundendaten"
> 2.   in der 2. tabelle sind "auftragsdaten"
> beide tabellen habe die spalte "kundennummer" (sozusagen als
> primärschlüssel).
> in der 2. tabelle sind bei verschiedenen kunden verschieden oft
> aufträge angeführt.
> 3.   wenn ich also in einer 3. tabelle (für den seriendruck - z.b.
> rechnungen - verwendet - s. oben zur vorgeschichte) jeden auftrag
> übernehme, muss ich auch den entsprechenden "kundensatz" dazufinden.

...was du hier beschreibst, ist eine typische Aufgabe für relationale 
Datenbanken (Stichwort: Join-Operation).

Ich habe in der Firma ähnliche Dinge mit Excel-Dateien produziert, die 
ich als Datenbank verwendet habe. Mittels entsprechender Abfrage lässt 
sich dann der Join ausführen und das Ergebnis als Datenquelle für einen 
Serienbrief nutzen.

Leider habe ich so etwas (der ewige Zeitmangel) noch nicht mit Base 
probiert. Mein gerade erfolgter Test scheitert daran, dass ich beim 
Erstellen einer Abfrage in Base immer nur eine der beiden Tabellen 
hinzufügen kann!? Ziehe ich die beiden Tabellen aus Calc in eine neue 
Base-Datei, so klappt die Abfrage problemlos...

Wenn es nur mit Calc gehen soll, dann fiele mir noch eine weitere (von 
hinten durch die Brust ins Auge-)Lösung ein:

Voraussetzung: Beide Tabellen sind in einer Calc-Datei und die 
Kundennummer ist lückenlos aufsteigend.

In meinem Beispiel:

Blatt1 (Kunden):

        [A]     [B]     [C]
[1]     ID      Vorname Nachname
[2]     1       Hans    Meyer
[3]     2       Frank   Müller
[4]     3       Markus  Schmidt
[5]     4       Andreas Lehmann


Blatt2 (Auftrag):

        [A]     [B]     [C]     [D]
[1]     Auftrag Kunde   Ware    Preis
[2]     1       1       Äpfel   5
[3]     2       2       Birnen  3
[4]     3       4       Citronen        4
[5]     4       1       Datteln 7
[6]     5       4       Erbsen  2
[7]     6       3       Fenchel 4
[8]     7       2       Gurken  2
[9]     8       4       Himbeeren       3

Hier extrem wichtig: Im Blatt1 entspricht ist die Nummer der Zeile immer 
um 1 größer als die Kundennummer!


Nun erzeugst du ein drittes Tabellenblatt mit folgenden Überschriften:

        [A]     [B]     [C]     [D]     [E]     [F]
[1]     Auftrag Kunde   Ware    Preis   Vorname Nachname

Die Daten für die Spalten A-D verschaffst du dir durch Kopieren:

A2=Auftrag.A2
B2=Auftrag.B2
C2=Auftrag.C2
D2=Auftrag.D2

Und nun der Trick ;-) :

Du weißt, dass du die Zeilennummer, in der die Kundendaten stehen, 
ausrechnen kannst! In der ersten Zeile wäre dies Kunde Nr 1, also 
Zeile 2. Dabei Steht der Kundenvorname in Spalte B der Tabelle "Kunden". 
Damit kannst du den Zellbezug für den Vornamen deines Kunden für 
Auftrag Nr. 1 "ausrechnen": Tabelle "Kunden", Spalte B, 
Zeile=Kundennummer+1). Wenn du den Zellbezug erst einmal als Text hast, 
kannst du INDIREKT() verwenden.

Die Formel lautet also:

E2=INDIREKT("Kunden.B"&B2+1)

Für den Nachnamen entsprechend (Spalte C):

F2=INDIREKT("Kunden.C"&B2+1)

Für die zweite Zeile bekommt du so die Einträge:

        [A]     [B]     [C]     [D]     [E]     [F]
[2]     1       1       Äpfel   5       Hans    Meyer


Der eigentliche Trick besteht also darin, dass sich die Position der 
Kundendaten anhand einer Formel aus der Kundennummer (hier Zeile = 
Kundennummer+1) ausrechnen lässt. Dadurch wird die "Berechnung" des 
Zellbezugs als Text und der Zugriff auf die Daten per INDIREKT() erst 
möglich.

Die Formeln lassen sich dann problemlos in die nächsten Zeilen kopieren, 
bis man für jeden Auftrag die passenden Rechnungsdaten vorliegen hat. 
Diese Tabelle lässt sich dann für den Serienbrief verwenden

Das ist allerdings alles eher trickreich als elegant...

Gruß,
Michael

p.s. falls du die Mini-Beispiel-Tabelle haben möchtest, dann kurze 
Nachricht per PM.


-- 
    ____        
   / / / / /__/      Michael Höhne /
  /   / / /  /  [email protected] /
 ________________________________/

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Antwort per Email an