[Base][Macro][LO] Compilare un campo tipo DATE

Regole del forum
Non inserire domande qui, utilizzare le altre sezioni con un link all'argomento di interesse
Rispondi
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8785
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

[Base][Macro][LO] Compilare un campo tipo DATE

Messaggio da charlie »

In LibreOffice si può compilare un campo di tipo DATE usando il metodo

Codice: Seleziona tutto

.BoundField.updateDate()
Ad esempio, queste righe di codice inseriscono la data di sistema nel campo "Data" di un formulario:

Codice: Seleziona tutto

Sub Leggi_data
oForm=thisComponent.drawpage.forms.getByName("MainForm")
oData=oForm.getByName("Data")
dim unoDate As NEW com.sun.star.util.Date
oData.BoundField.updateDate( unoDate )
oForm.updateRow()
End Sub
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rafkus_pl
Messaggi: 52
Iscritto il: domenica 19 settembre 2021, 15:45

Re: [Base][Macro][LO] Compilare un campo tipo DATE

Messaggio da Rafkus_pl »

Il metodo presentato da @charlie funziona solo in LibreOffice, vorrei mostrarti un modo che funziona sia in OpenOffice che in LO:

Codice: Seleziona tutto

Sub Leggi_data
  Dim oDrawPage As Variant
  Dim oForms As Variant
  Dim DT As Variant

  oDrawPage = ThisComponent.DrawPage.Forms
  oForms = oDrawPage.getByName("MainForm") 

  Dim unoDate As NEW com.sun.star.util.Date
   DT = Now()
   unoDate.Year = Year(DT)
   unoDate.Month = Month(DT)
   unoDate.Day = Day(DT)

  oForms.updateDate(oForms.findColumn("Data"), unoDate) 

  oForms.updateRow()
end sub
Apportando lievi modifiche a questo codice, puoi adattarlo al campo dell'ora:

Codice: Seleziona tutto

  Dim unoDate as new com.sun.star.util.Time
	DT = Now()	
	unoDate.Hours = Hour(DT)
	unoDate.Minutes = Minute(DT)
	unoDate.Seconds = Second(DT)	

  oForms.updateTime(oForms.findColumn("Time"), unoDate)
E anche i campi del timestamp:

Codice: Seleziona tutto

Dim unoDate as new com.sun.star.util.DateTime 
 DT = Now()
 with unoDate
	.Year = Year(DT)
	.Month = Month(DT)
	.Day = Day(DT)
	.Hours = Hour(DT)
	.Minutes = Minute(DT)
	.Seconds = Second(DT)
 end with

 oForms.updateTimestamp(oForms.findColumn("DataTime"), unoDate)
Nota: i nomi dei campi "Data", "Time" e "DataTime" sono i nomi dei campi della tabella di origine.

Scrivo con l'aiuto di google traduttore, quindi mi scuso per eventuali errori.
OpenOffice 4.1.6 / LibreOffice 7.1.6.2 (x64)/ Windows 10

Sto scrivendo con google traduttore mi scuso per eventuali errori.
Rispondi