Pagina 1 di 1

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

Inviato: mercoledì 19 gennaio 2022, 17:13
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

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

Inviato: lunedì 28 marzo 2022, 18:29
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.