Fai la tua domanda
0

Base: Salvare la data da un campo a una tabella

chiesto il 2017-10-27 00:50:51 +0200

Immagine gravatar per Michele Salvador

updated 2017-10-27 03:51:44 +0200

In un Formulario c'è il Campo data datData in cui è scritta una data (il Formato non sembra essere rilevante).
Voglio salvare questa data in una tabella utilizzando una macro.
Questa è una sintesi di ciò che sono riuscito a scrivere:

Sub salvaData
    form = ThisComponent.DrawPage.Forms.GetByIndex(0)
    grezzo = form.datData.Date                                  '20171026'   Long/Object
    oggi = CDateFromIso(grezzo)                                 '26/10/2017' Date
    stringa = ""+ Year(oggi) +"-"+ Month(oggi) +"-"+ Day(oggi)  '2017-10-26' String
    sql = form.ActiveConnection.CreateStatement
    sql.Execute("UPDATE ""Tabella"" SET ""Data"" = '" + stringa + "'")
End Sub

Questa macro funziona perfettamente in OpenOffice Base.
Invece in LibreOffice Base 5.4.2.2 la funzione CDateFromIso si blocca con errore:

Errore di runtime BASIC. Valore per la proprietà errato.

Il fatto è che la funzione Date fa sì che grezzo in OpenOffice sia un Long nel formato AAAAMMGG, invece in LibreOffice lo fa diventare un Object (il cui contenuto per ora mi è oscuro): CDateFromIso riesce a digerire il Long, mentre rigetta l'Object.
Lo stesso fanno CurrentValue e GetCurrentValue se sostituiti a Date.

Come posso correggere la macro per farla funzionare anche in LibreOffice?
Grazie!

modifica retag flag offensive close merge delete

1 Answer

1

risposto il 2017-10-27 06:37:52 +0200

Immagine gravatar per Ratslinger

updated 2017-10-27 06:39:32 +0200

Sub salvaData
    form = ThisComponent.DrawPage.Forms.GetByIndex(0)
    grezzo = form.datData.Date                                  '20171026'   Long/Object
'    oggi = CDateFromIso(grezzo)                                 '26/10/2017' Date'
'    stringa = ""+ Year(oggi) +"-"+ Month(oggi) +"-"+ Day(oggi)  '2017-10-26' String'
    mystringa = ""+ grezzo.Year +"-"+ grezzo.Month +"-"+ grezzo.Day 
    dateString = Format(mystringa, "YYYY-MM-DD")
    sql = form.ActiveConnection.CreateStatement
'    sql.Execute("UPDATE ""Tabella"" SET ""Data"" = '" + stringa + "'")'
    sql.executeUpdate("UPDATE ""Tabella"" SET ""Data"" = '" + dateString + "'")
End Sub
modifica flag offensive delete link more

Commenti

Ottimo! Questa macro funziona perfettamente in LibreOffice. Grazie!

Immagine gravatar per Michele Salvador Michele Salvador ( 2017-10-27 23:35:00 +0200 )modifica
Login/Signup to Answer

Question Tools

1 follower

Stats

Chieste: 2017-10-27 00:50:51 +0200

Seen: 67 times

Last updated: Oct 27 '17