Formular über Button starten [gelöst]

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Olek2
*
Beiträge: 19
Registriert: Mi, 28.09.2011 12:32

Re: Formular über Button starten [gelöst]

Beitrag von Olek2 »

Hmm ok ich werd das mal versuchen...

Dachte halt wenn man so vorgeht wie in dem Link von ,4 angegeben nimmt er die Daten aus der Datenbank komplett also mit den Makros und nicht nur die Base daten Einträge.
dann bin ich mal gespannt ob das Makro läuft wenn ich es außerhalb starte oder ob das Makro dann garnet mehr geht ......
Olek2
*
Beiträge: 19
Registriert: Mi, 28.09.2011 12:32

Re: Formular über Button starten [gelöst]

Beitrag von Olek2 »

Habs befürchtet Das Makro läuft dann nicht mehr....
Bevor ich jetzt anfange und mühevoll das Makro ändere...frag ich lieber nach... kann ich Base starten und dann automatisch das Formular dabei öffnen?
Also ohne nachzufragen welche datenbank er öffnen.
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Formular über Button starten [gelöst]

Beitrag von gogo »

Code: Alles auswählen

oCon = ThisDatabaseDocument.CurrentController
Der Zugriff entscheidet - die obige Codezeile greift explizit auf das aktuelle *.odb-Dokument zu, daher kann das Makro nur dann laufen, wenn es aus dieser DB heraus gestartet wird.

Ein bestimmtes Formular bei Datenbankstart öffnen:

ein Makro wie dieses erstellen:

Code: Alles auswählen

Sub StartUpDatabase

' stellt die Verbindung zu den Daten her
ThisComponent.DataSource.ConnectWithCompletion(createUnoService("com.sun.star.sdb.InteractionHandler"))

If isNull(ThisDatabaseDocument.CurrentController.ActiveConnection) Then
   ThisDatabaseDocument.CurrentController.Connect
End If

' öffnet das Forular
ThisDatabaseDocument.FormDocuments.getByName( "Zentralformular" ).open ' oder wie auch immer Dein zu öffnendes Formular heisst

end sub
dann:

Datenbankfenster: Menü: Extras/Anpassen, und da im Index:Ereignisse dem Ereignis 'Dokument öffnen' das Makro zuweisen.

Unter der Liste ist ein Listenfeld 'Speichern in', dort vorzugsweise die aktuelle Datenbank auswählen, sonst startet das Makro bei jedem Base-Start...

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Olek2
*
Beiträge: 19
Registriert: Mi, 28.09.2011 12:32

Re: Formular über Button starten [gelöst]

Beitrag von Olek2 »

Code: Alles auswählen

If isNull(ThisDatabaseDocument.CurrentController.ActiveConnection) Then

In der Zeile sagt er mir das die Objektvariable nicht belegt ist.
Oder muss ich "isNull" durch den Namen meiner Datenbank ersetzten?

Der Einwand mit der Codezeile

Code: Alles auswählen

    oCon = ThisDatabaseDocument.CurrentController
leuchtet mir ein. Aber ist trotzdem Schade ;)

Ich denke aber Wenn das Makro zum Automatischen Formular öffnen läuft dürfte das für die Anwender einfach genug sein, die haben dann ja nur eine Datenbank und müssen nicht wählen.

Was mich jetzt noch interessieren würde woher habt ihr die ganzen Befehle und wisst wie ihr die Datenbanken ansprechen könnt? Ich frage immer hier im Forum nach was ja schön einfach und schnell ist
aber es gibt doch bestimmt ne seite mit Befehlen der nen "Online Kurs" oder sowas oder?
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Formular über Button starten [gelöst]

Beitrag von gogo »

... kommt der Fehler beim Starten des Formulars das Du Dir "rauskopiert" hast? - das Formular ist keine Datenbank, also gibt's auch kein Objekt "ThisDatabaseDocument". Die Anleitung bezog sich auf die Datenbankdatei. Das "rauskopierte" Writerformular hat nichts mehr mit der Datenbank am Hut, denn beim "Rauskopieren" wird die Verbindung zu den Daten gekappt. Du solltest eigentlich keine Daten aus der Datenbank in dem Formular sehen können! Wenn Du das Makro in der Bibliothek der Datenbank speicherst, dann ist "ThisDatabaseDocument" zu Beginn der Sub sicher schon definiert.

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Olek2
*
Beiträge: 19
Registriert: Mi, 28.09.2011 12:32

Re: Formular über Button starten [gelöst]

Beitrag von Olek2 »

Ne ich habe das Makro normal in die Datenbank gespeichert das Externe Formular benutzte ich garnicht mehr.
Antworten