[Risolto] Macro Autoexec non funziona

Discussioni sulle caratteristiche di database
Rispondi
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

[Risolto] Macro Autoexec non funziona

Messaggio da UTPiovene »

Ho attinto a piene mani dalle varie macro per aprire formulari, report e quant'altro.
La macro per aprire in automatico il formulario al caricamento del documento (la ormai famosa autoexec) non fa il suo dovere e non c'è nessun messaggio di errore.
Ho provato a cambiare i dati di riferimento della macro, ma non cambia nulla. Il database si apre, ma non parte il formulario.
Dato per scontato che la macro non ha problemi, visto che è la stessa che usano anche altri utenti, qualcuno mi sa dire dove potrebbe essere l'inghippo?
La macro l'ho registrata all'interno del documento e l'ho collegata all'evento "Apri documento" nella maschera "Personalizza" del menu "Strumenti".
Il DB si trova su un server di rete.

Grazie
Ultima modifica di UTPiovene il venerdì 14 gennaio 2011, 15:16, modificato 1 volta in totale.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Akrobaticone
Messaggi: 93
Iscritto il: mercoledì 31 marzo 2010, 9:09

Re: Macro Autoexec non funziona

Messaggio da Akrobaticone »

hai registrato il database?
LibreOffice 3.3.2
Ubuntu 10.10
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: Macro Autoexec non funziona

Messaggio da UTPiovene »

si, è registrato.
per scrupolo sono andato a controllare e aveva registrato anche una versione 2 e 3 (che ho cancellato perchè non esistenti)
anzi, adesso lo cancello e poi lo registro nuovamente ... proviamo
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Akrobaticone
Messaggi: 93
Iscritto il: mercoledì 31 marzo 2010, 9:09

Re: Macro Autoexec non funziona

Messaggio da Akrobaticone »

Nel mio DB funziona questa

Codice: Seleziona tutto

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="Frm_Principale"  

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
Frm_principale è il nome del form di avvio
LibreOffice 3.3.2
Ubuntu 10.10
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: Macro Autoexec non funziona

Messaggio da UTPiovene »

Esattamente uguale alla mia, ovviamente non il nome del form.
Bisogna forse registrare in qualche modo la macro?
Fra l'altro non è l'unica macro che non funziona, anzi direi neanche una.
Ci deve essere qualcosa nelle impostazioni di Base che le blocca. Oppure nei documenti di Base perchè ieri mi sono portato a casa il documento per testarlo sul mio computer (Ubuntu 10.10 e OOo 3.2.1) e non funziona nemmeno lì.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Akrobaticone
Messaggi: 93
Iscritto il: mercoledì 31 marzo 2010, 9:09

Re: Macro Autoexec non funziona

Messaggio da Akrobaticone »

la sicurezza delle macro deve essere impostata su Medio
prova a avviare la macro direttamente con un doppio click
magari riporta l'errore
LibreOffice 3.3.2
Ubuntu 10.10
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: Macro Autoexec non funziona

Messaggio da UTPiovene »

Sono sempre più convinto che debba essere qualche impostazione del programma perchè ho caricato un DB di esempio di Xergio contenente delle macro e non girano ... comincia a girarmi qualcosaltro :crazy: :knock:
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Akrobaticone
Messaggi: 93
Iscritto il: mercoledì 31 marzo 2010, 9:09

Re: Macro Autoexec non funziona

Messaggio da Akrobaticone »

la butto a caso
non abilitato ambiente runtime java?
LibreOffice 3.3.2
Ubuntu 10.10
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: Macro Autoexec non funziona

Messaggio da UTPiovene »

dove lo verifico Java?
adesso con la sicurezza macro impostata a "medio" la macro di Xergio funziona, ma le altre no.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

[Risolto] Re: Macro Autoexec non funziona

Messaggio da UTPiovene »

ok adesso autoexec funziona con la sicurezza impostata "medio"
ma ancora non va il richiamo di un formulario da pulsante
metto comunque risolto perchè il 3D era relativo alla macro Autoexec
grazie
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Akrobaticone
Messaggi: 93
Iscritto il: mercoledì 31 marzo 2010, 9:09

Re: [RISOLTO] Macro Autoexec non funziona

Messaggio da Akrobaticone »

Prova a postare il codice
LibreOffice 3.3.2
Ubuntu 10.10
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: [RISOLTO] Macro Autoexec non funziona

Messaggio da UTPiovene »

Codice: Seleziona tutto

REM ----------------------------------------------------------------------
Dim oForm
   sub subDisplayForm(sDatabaseName as string, sFormName as string)
REM   sub subDisplayForm(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 ----------------------------------------------------------------------
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 ----------------------------------------------------------------------
Dim oForm
sub CLASSIFICAZIONE
   subDisplayForm("RegistroDitte.odb","CLASSIFICAZIONE")
REM   subDisplayForm("CLASSIFICAZIONE")
end sub
Ovviamente il formulario di chiama "CLASSIFICAZIONE"
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: [RISOLTO] Macro Autoexec non funziona

Messaggio da UTPiovene »

La macro funziona se la lancio direttamente, anche se mi chiede conferma del percorso del file. Non funziona da pulsante.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Akrobaticone
Messaggi: 93
Iscritto il: mercoledì 31 marzo 2010, 9:09

Re: [RISOLTO] Macro Autoexec non funziona

Messaggio da Akrobaticone »

Viene chiesta conferma del nome perchè c'e una msgbox in mezzo
quale è l'associazione della macro che hai fatto con il pulsante?
LibreOffice 3.3.2
Ubuntu 10.10
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: [RISOLTO] Macro Autoexec non funziona

Messaggio da UTPiovene »

L'ho associata a "Esegui l'azione" perchè se associavo a "Tasto premuto" o "Dopo aver premuto il tasto" non funziona.
La macro è questa:

Codice: Seleziona tutto

REM ----------------------------------------------------------------------
Dim oForm
   sub subDisplayForm(sDatabaseName as string, sFormName as string)
REM   sub subDisplayForm(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 ----------------------------------------------------------------------
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 ----------------------------------------------------------------------
Dim oForm
sub INSERIMENTO
   subDisplayForm("RegistroDitte.odb","INS_DITTE")
REM   subDisplayForm("CLASSIFICAZIONE")
end sub
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Rispondi