[Risolto] Base - macro per aggiornare data su più record

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8785
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

[Risolto] Base - macro per aggiornare data su più record

Messaggio da charlie »

Rilancio questo thread per una soluzione con macro: viewtopic.php?f=13&t=8556#p46526
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Base - macro per aggiornare data su più record

Messaggio da hubert lambert »

Buonasera,

Ecco una prima proposta : ammesso che il nome del controlo data è "nuova_data", la macro assegnata al pulsante :

Codice: Seleziona tutto

sub aggiornaData(event)
    form = event.Source.Model.Parent
    form.beforeFirst()
    DUnuova = form.getByName("nuova_data")
    DUcol = form.findColumn("Data-Udienza")
    if not isempty(DUnuova.Date) then
        do while form.next()
            form.updateDate(DUcol, DUnuova.Date)
            form.updateRow()
        loop
        form.getByName("MainForm_Grid").reset()
        DUnuova.reset()
        form.first()
    end if
end sub
Saluti.
Allegati
prova BIS.odb
(30.29 KiB) Scaricato 193 volte
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8785
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Base - macro per aggiornare data su più record

Messaggio da charlie »

Grazie @hubert, ho provato la macro ma mi dà questo errore:
Allegati
Schermata 10-2458044 alle 09.31.41.png
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Base - macro per aggiornare data su più record

Messaggio da hubert lambert »

Ciao charlie,

Funziona soltanto con LibreOffice, perchè il valore restituito dalla proprietà "Date" di un controllo data è stato modificato per consistenza con alcuni metodi, come "updateDate" (https://wiki.documentfoundation.org/Rel ... o_UNO_APIs).
Si deve un pò modificare la macro per utilizzarla in Openoffice:

Codice: Seleziona tutto

sub aggiornaData(event)
    form = event.Source.Model.Parent
    form.beforeFirst()
    DUnuova = form.getByName("nuova_data")
    DUcol = form.findColumn("Data-Udienza")

    d$ = DUnuova.Date
    dim nuovadata as new com.sun.star.util.Date
    nuovadata.Year = left(d, 4)
    nuovadata.Day = right(d, 2)
    nuovadata.Month = mid(d, 5, 2)

    if not isempty(DUnuova.Date) then
        do while form.next()
            form.updateDate(DUcol, nuovadata)
            form.updateRow()
        loop
        form.getByName("MainForm_Grid").reset()
        DUnuova.reset()
        form.first()
    end if
end sub
;)
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8785
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Base - macro per aggiornare data su più record

Messaggio da charlie »

Grazie @hubert, funziona benissimo.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Fryone
Messaggi: 23
Iscritto il: giovedì 5 ottobre 2017, 9:22

Re: Base - macro per aggiornare data su più record

Messaggio da Fryone »

Grazie di cuore.
Libreoffice Ver 5.0.3.2 - O.S. : Windows 7
Fryone
Messaggi: 23
Iscritto il: giovedì 5 ottobre 2017, 9:22

Re: Base - macro per aggiornare data su più record

Messaggio da Fryone »

Funzionaaaaaaaaaaaa. Hubert non ho parole di come esprimere la mia gratitudine.
Libreoffice Ver 5.0.3.2 - O.S. : Windows 7
Rispondi