iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0

在這次鐵人賽系列的技術最終章,使用 LibraOffice 建立巨集,使用者也可以再進一步使用 工作排程器 自動產生 daily report。

BASE安裝 + 建立資料庫

  1. 安裝
    https://ithelp.ithome.com.tw/upload/images/20240922/201623028lYTzxNVN4.png
  2. 打開 LibraOffice Base 會遇到缺乏JRE的錯誤訊息,需要到JAVA官網下載JRE執行檔
    download
    https://ithelp.ithome.com.tw/upload/images/20240917/20162302362g61WxSz.png
  3. 開始建立資料庫
    https://ithelp.ithome.com.tw/upload/images/20240922/20162302SNC2c0Oyyw.png
  4. 開始新增/編輯資料
    https://ithelp.ithome.com.tw/upload/images/20240922/20162302qxZjei2Pyv.png

Cal 新增按鈕與巨集

  1. 新增push button
    https://ithelp.ithome.com.tw/upload/images/20240922/20162302suhHGKIXj5.png
  2. 新增按鈕巨集事件
    https://ithelp.ithome.com.tw/upload/images/20240922/20162302u6CRKHPsjp.png
    https://ithelp.ithome.com.tw/upload/images/20240922/20162302jZlqFAZGSZ.png
  3. 成品
    https://ithelp.ithome.com.tw/upload/images/20240922/20162302Cs5Wq5eVdM.png

取得 DATABASE 資料並輸出

  1. 連線資料庫
    https://ithelp.ithome.com.tw/upload/images/20240922/20162302gczfrH5uqe.png
  2. 輸入BASIC語法 REF
REM  *****  BASIC  *****

Private Const service = "com.sun.star.sdb.DatabaseContext"
Private Const database = "fruit"

Sub Exercise2

	ctx = CreateUnoService(service)
	db = ctx.getByName(database)
	
	conn = db.getConnection("","")
	stmt = conn.createStatement()
	
	query = "SELECT * FROM inventory"
	result = stmt.executeQuery(query)
	
	If Not IsNull(result) Then
		row = 1 'assign output row position  
		ctr = ThisComponent.CurrentController
		sheet = ctr.getActiveSheet()	
		
		While result.next 
		
			cellA = sheet.getCellByPosition(0,row)
			cellB = sheet.getCellByPosition(1,row)
			cellC = sheet.getCellByPosition(2,row)	
			
			cellA.String = result.getString(1)
			cellB.String = result.getString(2)
			cellC.String = result.getString(3)
			
			row = row + 1
		Wend
	End If	
End Sub
  1. 成品
    https://ithelp.ithome.com.tw/upload/images/20240922/201623025G5wwb1TSi.png

推薦的 LibreOffice 語法教學網站

libreoffice-basic-macro-tutorial
中文版寫得很詳細的教學網站

Reference


上一篇
Day 28 應用-LibreOffice連結資料庫(1)
下一篇
Day 30 參賽結語
系列文
不居功的系統隱士 - 30天由淺入深學SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言