Seite 2 von 2
Re: Formular über Button starten [gelöst]
Verfasst: Di, 11.10.2011 15:49
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 ......
Re: Formular über Button starten [gelöst]
Verfasst: Di, 11.10.2011 15:59
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.
Re: Formular über Button starten [gelöst]
Verfasst: Di, 11.10.2011 17:00
von gogo
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
Re: Formular über Button starten [gelöst]
Verfasst: Mi, 12.10.2011 09:15
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
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?
Re: Formular über Button starten [gelöst]
Verfasst: Mi, 12.10.2011 10:48
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
Re: Formular über Button starten [gelöst]
Verfasst: Mi, 12.10.2011 11:04
von Olek2
Ne ich habe das Makro normal in die Datenbank gespeichert das Externe Formular benutzte ich garnicht mehr.