Seite 1 von 1

Makro soll Formular schließen

Verfasst: Do, 20.02.2014 12:54
von CoolTux
Hallo Leute

Code: Alles auswählen

Sub close_Window
   Dim Document   as Object
   Dim Dispatcher as Object
   Dim oForm as Object

' Frage für MsgBox
   Frage = "Möchten Sie das Formular wirklich schließen "+chr(13)+_
            "und alle Eingaben speichern? "
   
' falls auf Nein geklickt, Sub verlassen         
   If  MsgBox ( Frage,36) = 7 Then
      Exit Sub
   End If

' Zugriff auf Dokument
   Document   = ThisComponent.CurrentController.Frame
   Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   
' Änderungen im Formular speichern, nicht im ungespeicherten Datensatz
   Dispatcher.executeDispatch(Document, ".uno:Save", "", 0, Array())
   
' Zugriff auf das Formular und speichern des aktuellen Datensatzes
   oForm = ThisComponent.DrawPage.Forms.getByName("F_Main")  ' geht auch: Forms(0)
   If oForm.IsNew then oForm.InsertRow else oForm.UpdateRow   
   
' Formular schließen
   ThisComponent.CurrentController.Frame.Close(False)

End Sub
Das Formular wird geschlossen und die Daten auch gespeichert.
Leider bekomme ich eine Fehlermeldung wenn ein leerer Datensatz vorhanden ist oder wenn Felder noch nicht gefüllt sind welche aber zwingend gefüllt sein sollen. Wie kann ich das umgehen oder schöner machen. ein Basic Error ist für den normalen User nicht sehr aussagekräftig.

Re: Makro soll Formular schließen

Verfasst: Do, 20.02.2014 13:19
von Jörg
Hallo,
vielleicht hilft das?

Code: Alles auswählen

Sub Beenden
oDoc = thisComponent
odoc.store
odoc.close(true)
End Sub
Deine msg box voranstellen.
Gruß

Re: Makro soll Formular schließen

Verfasst: Do, 20.02.2014 13:33
von pmoegenb

Re: Makro soll Formular schließen

Verfasst: Do, 20.02.2014 14:38
von CoolTux

Code: Alles auswählen

Sub close_Window
   Dim Document   as Object
   Dim Dispatcher as Object
   Dim oForm as Object

[b]Sub Beenden
oDoc = thisComponent
odoc.store
odoc.close(true)
End Sub[/b]

' Frage für MsgBox
   Frage = "Möchten Sie das Formular wirklich schließen "+chr(13)+_
            "und alle Eingaben speichern? "
   
' falls auf Nein geklickt, Sub verlassen         
   If  MsgBox ( Frage,36) = 7 Then
      Exit Sub
   End If

' Zugriff auf Dokument
   Document   = ThisComponent.CurrentController.Frame
   Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   
' Änderungen im Formular speichern, nicht im ungespeicherten Datensatz
   Dispatcher.executeDispatch(Document, ".uno:Save", "", 0, Array())
   
' Zugriff auf das Formular und speichern des aktuellen Datensatzes
   oForm = ThisComponent.DrawPage.Forms.getByName("F_Main")  ' geht auch: Forms(0)
   If oForm.IsNew then oForm.InsertRow else oForm.UpdateRow   
   
' Formular schließen
   ThisComponent.CurrentController.Frame.Close(False)

End Sub
Hallo Jörg

Vielen Dank für Deine Antwort. Meintest Du das so. Aber so kann das doch nicht gehen oder?
Bin nicht so toll in programmieren.



Gruß
Leon

Re: Makro soll Formular schließen

Verfasst: Do, 20.02.2014 15:16
von Jörg
Hallo, suche mir die Sachen auch imForum zusammen.
falls das unten nicht klappt, muß noch jemand anderes helfen. :(
Gruß
Jörg

Code: Alles auswählen

    
    [b]Sub Beenden
rem ----------------------------------------------------------------------
antwort = msgbox("Dein Text", 33)                   statt "Nein", geht auch abbrechen
if antwort = 2 Then
       exit sub
end if      
rem define variables
rem-------------------------------------------------------------------------- 
    oDoc = thisComponent
    odoc.store
    odoc.close(true)
    End Sub[/b]