Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


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


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.