Pagina 1 di 1

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

Inviato: mercoledì 11 ottobre 2017, 6:39
da charlie
Rilancio questo thread per una soluzione con macro: viewtopic.php?f=13&t=8556#p46526

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

Inviato: lunedì 16 ottobre 2017, 22:13
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.

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

Inviato: martedì 17 ottobre 2017, 9:33
da charlie
Grazie @hubert, ho provato la macro ma mi dà questo errore:

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

Inviato: martedì 17 ottobre 2017, 12:44
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
;)

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

Inviato: martedì 17 ottobre 2017, 21:25
da charlie
Grazie @hubert, funziona benissimo.

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

Inviato: mercoledì 18 ottobre 2017, 9:54
da Fryone
Grazie di cuore.

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

Inviato: mercoledì 18 ottobre 2017, 10:03
da Fryone
Funzionaaaaaaaaaaaa. Hubert non ho parole di come esprimere la mia gratitudine.