von petzy » Sa, 10.04.2010 16:59
Ich habe ein Formular erstellt, mit dem ich aus den vorhandenen Datensätzen den richtigen suchen kann.
Den gefundenen Datensatz möchte ich in einem anderen Formular öffnen.
Dazu soll ein Filter gesetzt werden, oder aber eine SQL-Abfrage angewendet werden.
Mit Filter öffnen habe ich Makros gefunden, die aber nur dann laufen, wenn ich sie von dem (neuen) Formular selbst aufrufe.
ich habe folgendes versucht:
Code: Alles auswählen
Sub Formular_aufrufen(sRName as String)
dim sFormularName as string, oContext as Object, oDatenbank as Object
DIM oVerb as Object, i as Integer
dim arg(1) as New com.sun.star.beans.PropertyValue
dim aFormulare(), oDoc as Object, oForm as Object
sFormularName = "Rezept"
aFormulare = StarDesktop.CurrentComponent.getParent.getFormDocuments().getElementNames()
for i = lBound(aFormulare) to uBound(aFormulare)
if aFormulare(i) = sFormularName then
oContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDatenbank = oContext.getByName(StarDesktop.CurrentComponent.getParent.getLocation())
oVerb = oDatenbank.getConnection("","")
arg(0).Name = "OpenMode"
arg(0).Value = "open"
arg(1).Name = "ActiveConnection"
arg(1).Value = oVerb
oForm = StarDesktop.CurrentComponent.getParent.getFormDocuments().loadComponentFromURL(aFormulare(i), "", 0, Arg())
REM oForm => Formular 'Rezept'
FilterSetz(oForm, sRName)
Exit Sub
end if
next
End Sub
Sub FilterSetz(oFormU as Object, sRezName as String)
DIM oDoc as Object
REM Setzt Filter auf Formular Suchanfrage!!
oDoc = ThisComponent
oFormU = oDoc.DrawPage.Forms(0)
oFormU.Filter = (" ""RezeptName"" = '" & sRezName & "'")
oFormU.ApplyFilter = True
oFormU.reload
End Sub
So wie ich das sehe, läuft das deshalb nicht, weil das aufrufende Formular immer noch aktiv ist und mein Versuch, das damit zu ändern, dass ich "oForm" mitgebe an die andere Funktion auch nicht funtkioniert.
Kann mir da jemand weiterhelfen? Ich bin leider auf meiner Suche nicht fündig geworden.
Ich nutze OpenOffice 3.2.0 in Windows XP
Vielen Dank für Eure Hilfe.
Ich habe ein Formular erstellt, mit dem ich aus den vorhandenen Datensätzen den richtigen suchen kann.
Den gefundenen Datensatz möchte ich in einem anderen Formular öffnen.
Dazu soll ein Filter gesetzt werden, oder aber eine SQL-Abfrage angewendet werden.
Mit Filter öffnen habe ich Makros gefunden, die aber nur dann laufen, wenn ich sie von dem (neuen) Formular selbst aufrufe.
ich habe folgendes versucht:
[code]
Sub Formular_aufrufen(sRName as String)
dim sFormularName as string, oContext as Object, oDatenbank as Object
DIM oVerb as Object, i as Integer
dim arg(1) as New com.sun.star.beans.PropertyValue
dim aFormulare(), oDoc as Object, oForm as Object
sFormularName = "Rezept"
aFormulare = StarDesktop.CurrentComponent.getParent.getFormDocuments().getElementNames()
for i = lBound(aFormulare) to uBound(aFormulare)
if aFormulare(i) = sFormularName then
oContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDatenbank = oContext.getByName(StarDesktop.CurrentComponent.getParent.getLocation())
oVerb = oDatenbank.getConnection("","")
arg(0).Name = "OpenMode"
arg(0).Value = "open"
arg(1).Name = "ActiveConnection"
arg(1).Value = oVerb
oForm = StarDesktop.CurrentComponent.getParent.getFormDocuments().loadComponentFromURL(aFormulare(i), "", 0, Arg())
REM oForm => Formular 'Rezept'
FilterSetz(oForm, sRName)
Exit Sub
end if
next
End Sub
Sub FilterSetz(oFormU as Object, sRezName as String)
DIM oDoc as Object
REM Setzt Filter auf Formular Suchanfrage!!
oDoc = ThisComponent
oFormU = oDoc.DrawPage.Forms(0)
oFormU.Filter = (" ""RezeptName"" = '" & sRezName & "'")
oFormU.ApplyFilter = True
oFormU.reload
End Sub
[/code]
So wie ich das sehe, läuft das deshalb nicht, weil das aufrufende Formular immer noch aktiv ist und mein Versuch, das damit zu ändern, dass ich "oForm" mitgebe an die andere Funktion auch nicht funtkioniert.
Kann mir da jemand weiterhelfen? Ich bin leider auf meiner Suche nicht fündig geworden.
Ich nutze OpenOffice 3.2.0 in Windows XP
Vielen Dank für Eure Hilfe.