[Risolto] dBase: macro aggiornare form (o campo)

Creare una macro - Scrivere uno script - Usare le API
Rispondi
gengiskunk
Messaggi: 8
Iscritto il: lunedì 1 novembre 2010, 13:44

[Risolto] dBase: macro aggiornare form (o campo)

Messaggio da gengiskunk »

Ciao a tutti,
sto cercando di fare un semplice database per inserimento e stampa di Consigli Orientativi per la scuola dove lavoro.
Vi allego il file in questione privo di dati sensibili.
Come si può vedere nel form "Anagrafe" ho inserito una casella combinata "scuole" collegata al campo "Consiglio".
Mi piacerebbe fare in modo che alla selezione di una delle scuole nelle opzioni della combo, la casella "Consiglio" venisse aggiornata automaticamente senza necessità di cliccarci sopra.
Premetto che sono alle primissime armi con LO Basic.
Ho cercato molto in rete per documentarmi ed ho provato anche seguendo i consigli trovati in viewtopic.php?f=13&t=1819&p=8148&hilit= ... form#p8051, ma purtroppo senaza successo (inquesto caso, se non mi sbaglio, mi dice ...modulo non trovato: Drawpage).
Potreste per cortesia darmi qualche suggerimento per risolvere?

Ringrazio anticipatamente per l'attenzione.
Allegati
Consiglio.odb
(32.65 KiB) Scaricato 230 volte
Ultima modifica di gengiskunk il martedì 1 novembre 2016, 16:25, modificato 5 volte in totale.
libreoffice 5.2 Win 8.1/mint 18
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro aggiornare form (o campo)

Messaggio da patel »

ciao, modifica il titolo del primo post indicando che usi Dbase, non sono molti gli utenti che lo conoscono bene
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
gengiskunk
Messaggi: 8
Iscritto il: lunedì 1 novembre 2010, 13:44

Re: dBase: macro aggiornare form (o campo)

Messaggio da gengiskunk »

Ciao a tutti, ho provato anche questa soluzione

Codice: Seleziona tutto

Sub refresh (Evento)
   dim ContestoDB as object
   dim oForm as object
   
   ContestoDB = createUnoService("com.sun.star.sdb.DatabaseContext")
   oForm =  ThisDatabaseDocument.FormDocuments.GetByName("Anagrafe")
   
   oForm.refresh()
End sub
ma ottengo il messaggio

Codice: Seleziona tutto

Errore di runtime BASIC.
Proprietà o metodo non trovato: refresh.
Non capisco dove sbaglio :crazy:
libreoffice 5.2 Win 8.1/mint 18
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: dBase: macro aggiornare form (o campo)

Messaggio da patel »

non conosco dbase, ma nella sintassi oForm.refresh() dopo il punto occorre mettere un metodo o una proprietà e questi non li puoi creare tu, devi usare quelli relativi all'oggetto che stai usando. In conclusione o è sbagliato scrivere oForm.refresh() oppure è sbagliato dare alla sub il nome refresh
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
gengiskunk
Messaggi: 8
Iscritto il: lunedì 1 novembre 2010, 13:44

Re: dBase: macro aggiornare form (o campo)

Messaggio da gengiskunk »

Ciao Patel,
ho cambiato il nome alla sub ma nulla di fatto.....
libreoffice 5.2 Win 8.1/mint 18
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: dBase: macro aggiornare form (o campo)

Messaggio da patel »

inoltre non è chiaro a cosa serve la riga

Codice: Seleziona tutto

   ContestoDB = createUnoService("com.sun.star.sdb.DatabaseContext")
visto che poi non utilizzi ContestoDB
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: dBase: macro aggiornare form (o campo)

Messaggio da Gaetanopr »

Per aggiornare un Form solitamente si usa il metodo reload

Codice: Seleziona tutto

oForm.reload()
Prova a cambiare la macro refresh con questa

Codice: Seleziona tutto

sub aggiorna
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:RefreshFormControl", "", 0, Array())


end sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
gengiskunk
Messaggi: 8
Iscritto il: lunedì 1 novembre 2010, 13:44

Re: dBase: macro aggiornare form (o campo)

Messaggio da gengiskunk »

Perfetto Gaetanopr!!
Funziona alla grande. :super:
Scusa se te lo chiedo, ma se hai tempo e voglia puoi togliermi qualche dubbio?

ma cosa indica?
1

Codice: Seleziona tutto

"com.sun.star.frame.DispatchHelper"
2

Codice: Seleziona tutto

 ".uno:RefreshFormControl", "", 0, Array()
libreoffice 5.2 Win 8.1/mint 18
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] dBase: macro aggiornare form (o campo)

Messaggio da Gaetanopr »

Quella che ti ho fornito è una macro registrata, qua troverai dettagliate spiegazioni.
https://wiki.openoffice.org/wiki/IT/Doc ... mple_macro
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
gengiskunk
Messaggi: 8
Iscritto il: lunedì 1 novembre 2010, 13:44

Re: [Risolto] dBase: macro aggiornare form (o campo)

Messaggio da gengiskunk »

Spulcerò il wiki.
Grazie ancora.
libreoffice 5.2 Win 8.1/mint 18
Rispondi