ເນື້ອໃນ

# ບໍລິການ SFDatabases.Datasheet

ບໍລິການ Datasheet ຊ່ວຍໃຫ້ສາມາດເບິ່ງເນື້ອໃນຂອງຕາຕະລາງຖານຂໍ້ມູນ ຕະຫຼອດຮອດຜົນຂອງການສອບຖາມ (query) ແລະ ຄຳສັ່ງ SQL ໂດຍໃຊ້ Data View ຂອງ Base. ນອກຈາກນັ້ນ, ບໍລິການນີ້ຍັງຊ່ວຍໃຫ້ສາມາດ:

- ເພີ່ມເມນູທີ່ກຳນົດເອງໃສ່ໃນ data view.

- ເຂົ້າເຖິງຄ່າໃນຕຳແໜ່ງທີ່ລະບຸຂອງ data view.

- ວາງຕຳແໜ່ງເຄີເຊີໃນເຊລ (cell) ທີ່ລະບຸຂອງ data view.

## ການເອີ້ນໃຊ້ບໍລິການ

ກ່ອນຈະໃຊ້ບໍລິການ Datasheet, ຫ້ອງສະໝຸດ ScriptForge ຈຳເປັນຕ້ອງໄດ້ຖືກໂຫຼດ ຫຼື ນຳເຂົ້າກ່ອນ:

• ມາໂຄຣ Basic ຕ້ອງມີການໂຫຼດຄັງສຳນວນ ScriptForge ໂດຍໃຊ້ຄຳສັ່ງດັ່ງນີ້:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• ສະຄຣິບ Python ຕ້ອງມີການນຳເຂົ້າຈາກໂມດູນ scriptforge:
from scriptforge import CreateScriptService

##### ໃນ Basic

ບໍລິການ Datasheet ສາມາດເອີ້ນໃຊ້ໄດ້ສອງວິທີທີ່ແຕກຕ່າງກັນ ຂຶ້ນກັບວ່າໄຟລ໌ຖານຂໍ້ມູນຖືກເປີດຢູ່ຫຼືບໍ່.

ຕົວຢ່າງລຸ່ມນີ້ຖືວ່າໄຟລ໌ຖານຂໍ້ມູນຖືກເປີດຢູ່, ດັ່ງນັ້ນຈຶ່ງສາມາດໃຊ້ບໍລິການ UI ເພື່ອດຶງເອົາເອກະສານ ແລະ ໃຊ້ວິທີ OpenTable ຈາກບໍລິການ Database ເພື່ອຂໍອິນສະແຕນຊ໌ບໍລິການ Datasheet.

        Dim ui As Object, oBase As Object, oSheet As Object
        Set ui = CreateScriptService("UI")
        ' ວັດຖຸ oBase ແມ່ນອິນສະແຕນຊ໌ຂອງບໍລິການ Base
        Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
        ' ວັດຖຸ oSheet ແມ່ນອິນສະແຕນຊ໌ຂອງບໍລິການ Datasheet
        Set oSheet = oBase.OpenTable("Customers")

ໃນຕົວຢ່າງຂ້າງເທິງ, ຍັງສາມາດໃຊ້ວິທີ OpenQuery ຈາກບໍລິການ Base ເພື່ອຂໍອິນສະແຕນຊ໌ Datasheet ໄດ້ຄືກັນ.

ເພື່ອເອີ້ນໃຊ້ບໍລິການ Datasheet ເມື່ອໄຟລ໌ຖານຂໍ້ມູນບໍ່ໄດ້ເປີດຢູ່, ໃຫ້ໃຊ້ວິທີ OpenTable, OpenQuery ຫຼື OpenSql ຈາກບໍລິການ Database. ຕົວຢ່າງລຸ່ມນີ້ໃຊ້ວິທີ OpenTable ເພື່ອເປີດຕາຕະລາງທີ່ມີຢູ່ແລ້ວໃນໄຟລ໌ຖານຂໍ້ມູນ:

        Dim oDatabase As Object, oSheet As Object
        ' ວັດຖຸ oDatabase ແມ່ນອິນສະແຕນຊ໌ຂອງບໍລິການ Database
        Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
        ' ວັດຖຸ oSheet ແມ່ນອິນສະແຕນຊ໌ຂອງບໍລິການ Datasheet
        Set oSheet = oDatabase.OpenTable("Customers")

##### ໃນ Python

ຕົວຢ່າງຂ້າງເທິງສາມາດຂຽນເປັນ Python ໄດ້ດັ່ງນີ້:

        from scriptforge import CreateScriptService
        ui = CreateScriptService("UI")
        base_doc = ui.GetDocument(r"C:\Documents\MyFile.odb")
        sheet = base_doc.OpenTable("Customers")

        database = CreateScriptService("Database", r"C:\Documents\myDB.odb")
        sheet = database.OpenTable("Customers")

## ຄຸນສົມບັດ

ຄຸນສົມບັດຕໍ່ໄປນີ້ແມ່ນມີໃຫ້ໃຊ້ໃນບໍລິການ Datasheet:

ຊື່ | ອ່ານຢ່າງດຽວ | ປະເພດ | ຄຳອະທິບາຍ
--- | --- | --- | ---
ColumnHeaders | ແມ່ນ | ອາເຣຂອງ String | ສົ່ງຄືນ Array ທີ່ບັນຈຸຊື່ຫົວຄໍລຳໃນແຜ່ນຂໍ້ມູນ.
CurrentColumn | ແມ່ນ | String | ສົ່ງຄືນຊື່ຄໍລຳທີ່ຖືກເລືອກໃນປັດຈຸບັນ.
CurrentRow | ແມ່ນ | Integer | ສົ່ງຄືນໝາຍເລກແຖວທີ່ຖືກເລືອກໃນປັດຈຸບັນ, ເລີ່ມຈາກ 1.
DatabaseFileName | ແມ່ນ | String | ສົ່ງຄືນຊື່ໄຟລ໌ຂອງໄຟລ໌ Base ໃນຮູບແບບ FSO.FileNaming.
Filter | ບໍ່ | String | ລະບຸຕົວຕອງທີ່ຈະນຳໃຊ້ກັບແຜ່ນຂໍ້ມູນ ເຊິ່ງສະແດງອອກເປັນສ່ວນ WHERE ຂອງການສອບຖາມ SQL ໂດຍບໍ່ຕ້ອງມີຄຳຫຼັກ WHERE. ຖ້າລະບຸເປັນຂໍ້ຄວາມວ່າງ, Filter ທີ່ໃຊ້ຢູ່ຈະຖືກລຶບອອກ.
IsAlive | ແມ່ນ | Boolean | True ເມື່ອແຜ່ນຂໍ້ມູນຍັງບໍ່ຖືກປິດ (ຕົວຢ່າງ: ໂດຍການກະທຳຂອງຜູ້ໃຊ້).
LastRow | ແມ່ນ | Integer | ສົ່ງຄືນຈຳນວນແຖວໃນແຜ່ນຂໍ້ມູນ.
MenuHeaders | ແມ່ນ | String array | ສົ່ງຄືນລາຍຊື່ຂອງເມນູທີ່ມີຢູ່ໃນແຖບເມນູ (menubar).
OrderBy | ບໍ່ | String | ລະບຸລຳດັບການສະແດງລະບຽບຂໍ້ມູນ ເຊິ່ງສະແດງອອກເປັນສ່ວນ ORDER BY ຂອງການສອບຖາມ SQL ໂດຍບໍ່ຕ້ອງມີຄຳຫຼັກ ORDER BY. ຖ້າລະບຸເປັນຂໍ້ຄວາມວ່າງ, OrderBy ທີ່ໃຊ້ຢູ່ຈະຖືກລຶບອອກ.
ParentDatabase | ແມ່ນ | ວັດຖຸ | ສົ່ງຄືນອິນສະແຕນຊ໌ບໍລິການ Database ທີ່ແຜ່ນຂໍ້ມູນນັ້ນສັງກັດຢູ່.
Source | ແມ່ນ | String | ສົ່ງຄືນ String ທີ່ເປັນຕົວແທນຂອງແຫຼ່ງຂໍ້ມູນ, ເຊິ່ງອາດເປັນຄຳສັ່ງ SQL, ຊື່ຕາຕະລາງ ຫຼື ຊື່ການສອບຖາມ.
SourceType | ແມ່ນ | String | ສົ່ງຄືນປະເພດຂອງແຫຼ່ງຂໍ້ມູນ, ເຊິ່ງອາດເປັນຄ່າໃດໜຶ່ງດັ່ງນີ້: "SQL", "TABLE" ຫຼື "QUERY".
XComponent | ແມ່ນ | ວັດຖຸ UNO | ສົ່ງຄືນວັດຖຸ UNO com.sun.star.lang.XComponent ທີ່ເປັນຕົວແທນຂອງແຜ່ນຂໍ້ມູນ.
XControlModel | ແມ່ນ | ວັດຖຸ UNO | ສົ່ງຄືນວັດຖຸ UNO com.sun.star.awt.XControl ທີ່ເປັນຕົວແທນຂອງແຜ່ນຂໍ້ມູນ.
XTabControllerModel | ແມ່ນ | ວັດຖຸ UNO | ສົ່ງຄືນວັດຖຸ UNO com.sun.star.awt.XTabControllerModel ທີ່ເປັນຕົວແທນຂອງແຜ່ນຂໍ້ມູນ.

## ວິທີ (Methods)

ລາຍຊື່ຂອງວິທີຕ່າງໆໃນບໍລິການ Datasheet
Activate CloseDatasheet CreateMenu | GetText GetValue GoToCell | RemoveMenu Toolbars

## Activate

ນຳໜ້າຕ່າງ data view ທີ່ອ້າງອີງໂດຍອິນສະແຕນຊ໌ Datasheet ຂຶ້ນມາໄວ້ທາງໜ້າ.

### ໄວຍາກອນ:

svc.Activate()

### ຕົວຢ່າງ:

##### ໃນ Basic

          oSheet.Activate()

##### ໃນ Python

          sheet.Activate()

## CloseDatasheet

ປິດໜ້າຕ່າງ data view ທີ່ອ້າງອີງໂດຍອິນສະແຕນຊ໌ Datasheet.

### ໄວຍາກອນ:

svc.CloseDatasheet()

### ຕົວຢ່າງ:

##### ໃນ Basic

          oSheet.CloseDatasheet()

##### ໃນ Python

          sheet.CloseDatasheet()

## CreateMenu

ສ້າງລາຍການເມນູໃໝ່ໃນໜ້າຕ່າງ data view ແລະ ສົ່ງຄືນອິນສະແຕນຊ໌ບໍລິການ SFWidgets.Menu, ເຊິ່ງສາມາດໃຊ້ເພື່ອເພີ່ມລາຍການເມນູຜ່ານການຂຽນໂປຣແກຣມໄດ້.

ເມນູທີ່ເພີ່ມໂດຍໃຊ້ວິທີ CreateMenu ຈະຫາຍໄປທັນທີທີ່ໜ້າຕ່າງ data view ຖືກປິດ.

### ໄວຍາກອນ:

svc.CreateMenu(menuheader: str, opt before: any, opt submenuchar: str): obj

### ພາຣາມິເຕີ:

menuheader: ຊື່ຂອງເມນູໃໝ່.

before: ອາຄິວເມັ້ນນີ້ອາດເປັນຊື່ຂອງລາຍການເມນູທີ່ມີຢູ່ແລ້ວ ເພື່ອວາງເມນູໃໝ່ໄວ້ທາງໜ້າຂອງມັນ ຫຼື ເປັນຕົວເລກທີ່ບອກຕຳແໜ່ງຂອງເມນູໃໝ່. ຖ້າປະອາຄິວເມັ້ນນີ້ໄວ້ວ່າງ, ເມນູໃໝ່ຈະຖືກວາງໄວ້ເປັນລາຍການສຸດທ້າຍ.

submenuchar: ຕົວຂັ້ນທີ່ໃຊ້ໃນໂຄງສ້າງເມນູຍ່ອຍ (ຄ່າເລີ່ມຕົ້ນ = ">")

### ຕົວຢ່າງ:

##### ໃນ Basic

          Dim oMenu As Object
          Set oMenu = oSheet.CreateMenu("My Menu", Before := "Data")
          With oMenu
              .AddItem("Item 1", Command := ".uno:About")
              ' ...
              .Dispose()
          End With

##### ໃນ Python

          menu = sheet.CreateMenu("My Menu", before="Data")
          menu.AddItem("Item 1", command=".uno:About")
          # ...
          menu.Dispose()

ອ່ານໜ້າຊ່ວຍເຫຼືອ ບໍລິການ Menu ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບການສ້າງເມນູ, ເມນູຍ່ອຍ ແລະ ການເຊື່ອມໂຍງຄຳສັ່ງ.

## GetText

ສົ່ງຄືນຂໍ້ຄວາມໃນຄໍລຳທີ່ກຳນົດຂອງແຖວປັດຈຸບັນ.

ວິທີນີ້ບໍ່ໄດ້ປ່ຽນຕຳແໜ່ງຂອງເຄີເຊີໃນໜ້າຕ່າງ data view.

### ໄວຍາກອນ:

svc.GetText(column: any): str

### ພາຣາມິເຕີ:

column: ຊື່ຂອງຄໍລຳເປັນ String ຫຼື ຕຳແໜ່ງຂອງຄໍລຳ (ເລີ່ມຈາກ 1). ຖ້າລະບຸຕຳແໜ່ງທີ່ໃຫຍ່ກວ່າຈຳນວນຄໍລຳທີ່ມີຢູ່, ມັນຈະສົ່ງຄືນຄໍລຳສຸດທ້າຍ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          oSheet.GetText("FirstName")

##### ໃນ Python

          sheet.GetText("FirstName")

## GetValue

ສົ່ງຄືນຄ່າໃນຄໍລຳທີ່ກຳນົດຂອງແຖວປັດຈຸບັນເປັນປະເພດ Basic ທີ່ຖືກຕ້ອງ.

ປະເພດທີ່ສາມາດສົ່ງຄືນໄດ້ແມ່ນ: String, Integer, Long, Single, Double, Date ແລະ Null.

ປະເພດຖານສອງ (Binary) ຈະຖືກສົ່ງຄືນເປັນຄ່າ Long ທີ່ບອກຄວາມຍາວຂອງຟີວຖານສອງ.

ຄ່າ Empty ຈະຖືກສົ່ງຄືນຖ້າບໍ່ສາມາດດຶງຄ່າທີ່ຕ້ອງການມາໄດ້.

ວິທີນີ້ບໍ່ໄດ້ປ່ຽນຕຳແໜ່ງຂອງເຄີເຊີໃນໜ້າຕ່າງ data view.

### ໄວຍາກອນ:

svc.GetValue(column: any): any

### ພາຣາມິເຕີ:

column: ຊື່ຂອງຄໍລຳເປັນ String ຫຼື ຕຳແໜ່ງຂອງຄໍລຳ (ເລີ່ມຈາກ 1). ຖ້າລະບຸຕຳແໜ່ງທີ່ໃຫຍ່ກວ່າຈຳນວນຄໍລຳທີ່ມີຢູ່, ມັນຈະສົ່ງຄືນຄໍລຳສຸດທ້າຍ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          oSheet.GetValue("Address")

##### ໃນ Python

          sheet.GetValue("Address")

## GoToCell

ຍ້າຍເຄີເຊີໄປທີ່ແຖວ ແລະ ຄໍລຳທີ່ລະບຸ.

### ໄວຍາກອນ:

svc.GoToCell(opt row: int, opt column: any): bool

### ພາຣາມິເຕີ:

row: ໝາຍເລກແຖວເປັນຄ່າຕົວເລກ ເລີ່ມຈາກ 1. ຖ້າແຖວທີ່ລະບຸເກີນຈຳນວນແຖວທີ່ມີຢູ່, ເຄີເຊີຈະຖືກຍ້າຍໄປທີ່ແຖວສຸດທ້າຍ. ຖ້າບໍ່ໄດ້ລະບຸອາຄິວເມັ້ນນີ້, ແຖວຈະບໍ່ມີການປ່ຽນແປງ.

column: ຊື່ຂອງຄໍລຳເປັນ String ຫຼື ຕຳແໜ່ງຂອງຄໍລຳ (ເລີ່ມຈາກ 1). ຖ້າຄໍລຳທີ່ລະບຸເກີນຈຳນວນຄໍລຳທີ່ມີຢູ່, ເຄີເຊີຈະຖືກຍ້າຍໄປທີ່ຄໍລຳສຸດທ້າຍ. ຖ້າບໍ່ໄດ້ລະບຸອາຄິວເມັ້ນນີ້, ຄໍລຳຈະບໍ່ມີການປ່ຽນແປງ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          ' ຍ້າຍເຄີເຊີໄປທີ່ຄໍລຳ "LastName" ໃນແຖວທີ 4
          oSheet.GoToCell(4, "LastName")
          ' ຍ້າຍເຄີເຊີໄປທີ່ຄໍລຳທີສາມຂອງແຖວປັດຈຸບັນ
          oSheet.GoToCell(Column := 3)
          ' ຍ້າຍເຄີເຊີລົງໜຶ່ງແຖວໂດຍທີ່ຍັງຢູ່ໃນຄໍລຳເດີມ
          oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
          ' ຍ້າຍໄປທີ່ຄໍລຳສຸດທ້າຍຂອງແຖວສຸດທ້າຍ
          Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
          oSheet.GoToCell(oSheet.LastRow, LastColumn)

##### ໃນ Python

          sheet.GoToCell(4, "LastName")
          sheet.GoToCell(column=3)
          sheet.GoToCell(row=sheet.CurrentRow + 1)
          sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))

## RemoveMenu

ລຶບລາຍການເມນູອອກຈາກ data view ໂດຍໃຊ້ຊື່ຂອງມັນ.

ວິທີນີ້ສາມາດລຶບເມນູທີ່ເປັນຂອງສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ເວີຊັນມາດຕະຖານ ຕະຫຼອດຮອດເມນູທີ່ຖືກເພີ່ມຜ່ານການຂຽນໂປຣແກຣມດ້ວຍວິທີ CreateMenu. ການລຶບເມນູມາດຕະຖານບໍ່ແມ່ນການລຶບແບບຖາວອນ ແລະ ພວກມັນຈະກັບຄືນມາຫຼັງຈາກທີ່ໜ້າຕ່າງຖືກປິດ ແລະ ເປີດໃໝ່.

### ໄວຍາກອນ:

svc.RemoveMenu(menuheader: str): bool

### ພາຣາມິເຕີ:

menuheader: ຊື່ຂອງເມນູທີ່ຈະລຶບອອກ (ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່). ຊື່ຕ້ອງບໍ່ລວມເອົາຕົວອັກສອນ tilde ("~").

### ຕົວຢ່າງ:

##### ໃນ Basic

          oSheet.RemoveMenu("Data")

##### ໃນ Python

          sheet.RemoveMenu("Data")

### Toolbars

ວິທີການນີ້ສົ່ງຄືນທັງລາຍຊື່ຂອງຊື່ແຖບເຄື່ອງມືທີ່ມີຢູ່ໃນເອກະສານຕົວຈິງ ຫຼື ອິນສະແຕນຂອງບໍລິການ SFWidgets.Toolbar.

### ໄວຍາກອນ:

svc.Toolbars(opt toolbarname: str): svc
svc.Toolbars(): str[0..]

### ພາຣາມິເຕີ:

toolbarname: ຊື່ປົກກະຕິຂອງໜຶ່ງໃນແຖບເຄື່ອງມືທີ່ມີຢູ່.

### ຕົວຢ່າງ:

##### ໃນ Basic

        Dim oToolbar As Object
        Set oToolbar = oDoc.Toolbars("standard")

##### ໃນ Python

        a_list = doc.Toolbars()

ຣູທີນ ຫຼື ຕົວລະບຸ Basic ຂອງ ScriptForge ທັງໝົດທີ່ຂຶ້ນຕົ້ນດ້ວຍເຄື່ອງໝາຍຂີດກ້ອງ "_" ແມ່ນສະຫງວນໄວ້ສຳລັບໃຊ້ພາຍໃນ. ພວກມັນບໍ່ໄດ້ມີໄວ້ໃຫ້ໃຊ້ໃນມາໂຄຣ Basic ຫຼື ສະຄຣິບ Python.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ບໍລິການ SFDatabases.Database

ບໍລິການ ScriptForge.UI

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!