Hallo robert,

vielen  Dank fuer deine Hilfe, hat alles wunderbar geklappt.

Gruesse

Martin Jennigers


Robert Großkopf schrieb:
Hallo Martin,
Ich habe eine DBmit zwei Tabellen erstellt

empfaenger

Empf-ID
Name
Adresse
Postleitzahl
Ort
Kontonummer

ueberweisungen

ID
Datum
Betrag
Mitteilung
Empf-ID

Ich würde folgendes machen:

1. Gründe eine Tabelle tmp
Diese Tabelle hat 2 Felder: ID und Empf-ID.
ID wird automatisch erstellt, ist Primärschlüssel.

2. Hauptformular - besteht nur aus einer Listbox, in der der Empfänger steht.
Tabelle für das Hauptformular ist die Tabelle tmp.

SELECT "Name","Empf-ID" FROM "empfaenger"

Empf-ID wird hier in tmp geschrieben.

Anschließend erfolgt die Speicherung über ein Makro, verbunden mit dem Ereignis "Modifiziert"

sub DatenAktualisieren
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


rem ----------------------------------------------------------------------

dispatcher.executeDispatch(document, ".uno:RecSave", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Refresh", "", 0, Array())
end sub

Das Makro ersetzt Dir lediglich Den Druck auf den Button "Speichern" und das anschließende "Aktualisieren".

Das Hauptformular soll jedes Mal sicher auf den neuesten Datensatz springen (ist allerdings immer nur einer, wenn nicht irgendetwas unvorhergesehenes passiert). Das Makro wird direkt mit dem Formular verbunden, Ereignis "Beim Laden"

sub Neuer
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:NewRecord", "", 0, Array())
end sub

2. Deine vorherigen Tabellen stehen jetzt in 2 Unterformularen zu dem Hauptformular. Das Ganze braucht man gar nicht vom Layout her zu erkennen erkennen. Das Auswahlfeld steht einfach da, wo Du vorher in Deinem vorherigen Hauptformular das Namensfeld hattest. Beide Unterformulare beziehen jetzt aus tmp die Empf-ID und zeigen die dazugehörigen Informationen an.

3. Der einzige Haken: Du kannst so keine neuen Empfänger eingeben. Hier würde ein gesondertes Feld für neue Empfänger helfen, das neben dem Hauptformular in dem Formular liegt. Auch die Eingabe kann durch Makros automatisiert werden. Ich habe so etwas einmal als Beispieldatenbank hergestellt, bevor ich mich größer mit Makros befasst habe. Die dort verwandten Makros sind alle mit dem Makrorecorder erstellt. Der Link zu diesem Beispiel mit einem Formularblatt, das zwei Hauptformulare und zu dem zweiten Hauptformular auch noch zwei Unterformulare enthält:
http://www.scoolonline.de/download/Inventur.zip

Wenn Du deine Datenbank nur selbst betreibst und nicht auf viele andere PCs transportieren willst rate ich Dir allerdings, die Formulare nicht im Dokument selbst zu speichern. Das ist zwar praktisch zum Transport der Makros, aber leider hat OpenOffice in der Base-Version hier einen Bug, der auch in der 2.3.1 noch existiert: Das Formular muss 2 Mal hintereinander gestartet werden, damit die Makros auch gefunden werden.

Melde Dich gerne zurück, wenn etwas zu kompliziert aussieht.

Gruß

Robert



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to