Buon giorno a tutti,
Sono Roberto Crosio e da ormai il lontano 2001 uso linux.
Attualmente sul mio portatile gira la Ubuntu 12.04 LTS 64 bit.
Le macro in questione, create da Augusto Scatolini anni or sono, ed
allegate al db Biblioteca, il tutto reperibile in rete sul sito del
Comune di Campagnano, erano per OOo 3.02 .
Ecco il link al sito da dove scaricare l'applicazione "Biblioteca":
http://www.comunecampagnano.it/gnu/biblioteca_remix/index.htm
Poiché dalla Ubuntu 11.04, ma soprattutto da qualche tempo in azienda,
si usa solo LibO con Windows XP/7, sono *liberamente obbligato* ad usare
una suite che mi dà problemi con le macro, mentre prima era tutto a posto.
La domanda é: il lavoro di programmazione fatto per OOo/AOO, si può
utilizzare in LibO, o forse esistono incompatibilità di sintassi o di
comandi macro fra le 2 suites, al punto di dover buttar via tutto il
lavoro, o, peggio, non sapere se funzionerà sempre o meno, a causa di
suites diverse da quella sulla quale si era sviluppato il programma?
E poi..... se ci sono Clients con suites diverse, anche in futuro ci
potrebbero essere problemi....
Vorrei solo capire se le macro, per una o per l'altra delle suites, LibO
o AOO, siano utilizzabili tel quel nell'altra, oppure no per sintassi o
comandi diversi.
Di seguito trovate delle macro; mi interessa soprattutto quella nominata
"EsciDaBase", che da errore, mentre le macro "AutoExec" e
"ChiusuraMaschera" funzionano normalmente (ma la seconda lascia il
database aperto, così come LibO).
"ChiusuraMaschera" è collegata ad un pulsante nella form del menu generale.
Vorrei invece assegnare al pulsante la macro di chiusura ed uscita da
LibO, invece... :-(
Il pulsante si chiama "Uscita", mentre la form principale è
"F_MenuGenerale".
Le macro sono inserite in una libreria collegata al db.
La macro "EsciDabase" restituisce il seguente errore:
Libreoffice 3.5
Errore di runtime BASIC.
Si è verificata un'eccezione
Type: com.sun.star.container.NoSuchElementException
Message:.
Cosa è possibile fare?
(Di seguito le macro)
Grazie a tutti per l'aiuto e la pazienza.....
-------------------------------------------------------------------
REM ***** BASIC *****
Sub Main
End Sub
REM ----------------------------------------------------------------------
Dim oForm
sub subDisplayForm(sDatabaseName as string, sFormName as string)
dim mArgs(1) as new com.sun.star.beans.PropertyValue
oDatabase = fnGetOpenDatabase(sdatabaseName)
oConnection = oDatabase.DataSource.getConnection("","")
mArgs(0).name = "OpenMode"
mArgs(0).value = "open" '"openDesign" ' '"openForMail"
mArgs(1).name = "ActiveConnection"
mArgs(1).value = oConnection
oForm = oDatabase.getFormDocuments.getByName(sFormName)
oDatabase.getFormDocuments.loadComponentFromURL(sFormName,
"_blank", 0, mArgs())
end sub
REM ----------------------------------------------------------------------
REM ----------------------------------------------------------------------
function fnGetOpenDatabase(sDatabaseName as string)
oEnum = StarDesktop.getComponents.createEnumeration
while oEnum.hasMoreElements
oPosDB = oEnum.nextElement
if oPosDB.implementationName =
"com.sun.star.comp.dba.ODatabaseDocument" then
msgbox oPosDB.DataSource.name
if right(oPosDB.DataSource.name, len(sDatabaseName)) =
sDatabaseName then
fnGetOpenDatabase = oPosDB
exit function
end if
end if
wend
end function
REM ----------------------------------------------------------------------
REM ----------------------------------------------------------------------
Sub AutoExec
On Error Goto HandleError
Dim LastFrame As Object
Dim NumFrames As Integer
Static FormDocs As Object
Dim DBDoc As Object
Dim ImpName As String
Dim DataSource As Object
Dim Conn As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim FormName As String
Dim FormDoc As Object
FormName="F_MenuGenerale" REM CHANGE TO YOUR FORM NAME
ImpName="com.sun.star.comp.dba.ODatabaseDocument"
NumFrames=StarDesktop.Frames.Count
LastFrame=StarDesktop.Frames.getByIndex(NumFrames-1)
If LastFrame.Frames.Count>1 Then
Exit Sub
End If
If Not (LastFrame.Controller.Model.ImplementationName=ImpName) Then
Exit Sub REM not a db doc
End If
DataSource=LastFrame.Controller.DataSource
DBDoc=DataSource.DatabaseDocument
FormDocs=DBDoc.FormDocuments
Conn=DataSource.getConnection("","") REM no user/password
Args(0).Name="ActiveConnection" : Args(0).Value=Conn
if FormDocs.hasByName(FormName) Then
FormDoc=FormDocs.loadComponentFromURL(FormName,"_self",2,Args() )
FormDoc.CurrentController.Frame.ContainerWindow.setFocus()
End If
HandleError:
If Err<>0 Then
Exit Sub
End If
End Sub
REM ----------------------------------------------------------------------
REM ----------------------------------------------------------------------
Sub EsciDaBase
Dim oForms as Object, oForm as Object
Dim oCtrl as Object
oForms = ThisComponent.DrawPage.Forms
oForm = oForms.GetByName("Uscita")
'Xray oForm
oForm.ActiveConnection.flush()
StarDesktop.terminate
End sub
REM ----------------------------------------------------------------------
REM ----------------------------------------------------------------------
sub ChiusuraMaschera( oEvent as object )
ThisComponent.CurrentController.Frame.close(True)
end sub
REM ----------------------------------------------------------------------
------------------------------------------------------------------------------------------
--
Distinti saluti
Roberto Crosio
--
Come cancellarsi: E-mail users+help@it.libreoffice.org
Problemi? http://it.libreoffice.org/supporto/mailing-lists/come-cancellarsi/
Linee guida per postare + altro: http://wiki.documentfoundation.org/Local_Mailing_Lists/it
Archivio della lista: http://listarchives.libreoffice.org/it/users/
Tutti i messaggi inviati a questa lista vengono archiviati pubblicamente e non sono eliminabili
Context
- [it-users] macro in LibO · Roberto Crosio
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.