Mga SFDatabase . Dataset serbisyo

Ang Dataset Ang serbisyo ay ginagamit upang kumatawan sa tabular na data na ginawa ng isang database. Sa serbisyong ito posible na:

warning

Pag-update at pagpasok ng mga talaan gamit ang Dataset ang serbisyo ay mas mabagal kaysa sa paggamit ng mga SQL statement. Kapag nag-a-update o naglalagay ng malalaking halaga ng mga tala, inirerekumenda na gumamit ng mga SQL statement sa halip na gamitin ang mga pamamaraan sa serbisyong ito.


Panawagan sa serbisyo

Bago gamitin ang Dataset serbisyo ang ScriptForge kailangang i-load o i-import ang library:

note

• Ang mga pangunahing macro ay kailangang mag-load ScriptForge aklatan gamit ang sumusunod na pahayag:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Ang mga script ng Python ay nangangailangan ng pag-import mula sa scriptforge module:
mula sa scriptforge import CreateScriptService


Ang Dataset ang serbisyo ay ginagamit gamit ang CreateDataset paraan, na maaaring tawagin mula sa a Database halimbawa ng serbisyo o mula sa iba Dataset halimbawa.

Sa Basic

Ang sumusunod na halimbawa ay lumilikha ng a Dataset mula sa talahanayang "Mga Customer" na nakaimbak sa isang file ng database.


    oDatabase = CreateScriptService("Database", "C:\MyDatabase.odb")
    oDataset = oDatabase.CreateDataset("Mga Customer")
    With oDataset
        Do While .MoveNext()
            oValues = .Values()
            ' ...
        Loop
        .CloseDataset()
    End With
  
note

Sa pagkakalikha ng Dataset , ang kasalukuyang tala ay nakaposisyon bago ang unang tala.


Ang halimbawa sa ibaba ay lumilikha ng a Dataset instance sa pamamagitan ng pag-filter sa orihinal na dataset.


    oNewDataset = oDataset.CreateDataset(Filter := "[City]='New York'")
  
Sa Python

    database = CreateScriptService("Database", r"C:\MyDatabase.odb")
    dataset = database.CreateDataset("Mga Customer")
    while dataset.MoveNext():
        values = dataset.Values
        # ...
    dataset.CloseDataset()
  

    new_dataset = dataset.CreateDataset(filter = "[City]='New York'")
  

Mga Katangian

Pangalan

Readonly

Type

Mga nilalaman

BOF

Hindi

Boolean

Nagbabalik totoo kung ang kasalukuyang posisyon ng record ay bago ang unang tala sa dataset, kung hindi ay babalik Mali .

Itakda ang property na ito sa totoo upang ilipat ang cursor sa simula ng dataset. Pagtatakda ng property na ito sa Mali ay hindi pinapansin.

DefaultValues

Mayroon

Diksyunaryo serbisyo

Nagbabalik a Diksyunaryo gamit ang mga default na value na ginamit para sa bawat field sa dataset. Ang mga field o column sa dataset ay ang mga susi sa diksyunaryo.

Ang mga uri ng field ng database ay kino-convert sa kanilang katumbas na Basic/Python na mga uri ng data. Kapag ang uri ng field ay hindi natukoy, ang default na halaga ay Null kung ang field ay nullable o Walang laman .

EOF

Hindi

Boolean

Nagbabalik totoo kung ang kasalukuyang posisyon ng record ay pagkatapos ng huling tala sa dataset, kung hindi ay babalik Mali .

Itakda ang property na ito sa totoo upang ilipat ang cursor sa dulo ng dataset. Pagtatakda ng property na ito sa Mali ay hindi pinapansin.

Fields

Mayroon

Array

Ibinabalik ang isang Array naglalaman ng mga pangalan ng lahat ng field sa dataset.

Filter

Mayroon

String

Ibinabalik ang filter na inilapat bilang karagdagan sa sa wakas SAAN (mga) sugnay sa paunang pahayag ng SQL. Ang ari-arian na ito ay ipinahayag bilang a SAAN sugnay na walang keyword na "WHERE".

OrderBy

Mayroon

String

Ibinabalik ang sugnay sa pag-order na pumapalit sa wakas ORDER NI sugnay na naroroon sa paunang pahayag ng SQL. Ang ari-arian na ito ay ipinahayag bilang a ORDER NI sugnay na walang mga keyword na "ORDER BY".

ParentDatabase

Mayroon

Database serbisyo

Ibinabalik ang Database instance na tumutugma sa parent database ng kasalukuyang dataset.

RowCount

Mayroon

Long

Ibinabalik ang eksaktong bilang ng mga tala sa dataset.

Tandaan na ang pagsusuri sa property na ito ay nagpapahiwatig ng pagba-browse sa buong dataset, na maaaring magastos depende sa laki ng dataset.

RowNumber

Mayroon

Long

Ibinabalik ang numero ng kasalukuyang record simula sa 1. Ibinabalik ang 0 kung hindi alam ang property na ito.

Source

Mayroon

String

Ibinabalik ang pinagmulan ng dataset. Maaari itong maging isang pangalan ng talahanayan, isang pangalan ng query o isang SQL statement.

SourceType

Mayroon

String

Ibinabalik ang pinagmulan ng dataset. Maaari itong isa sa mga sumusunod na string value: TABLE , QUERY o SQL .

UpdatableFields

Mayroon

Array

Ibinabalik ang isang Array naglalaman ng mga pangalan ng mga field ng dataset na naa-update.

Values

Mayroon

Array

Nagbabalik a Diksyunaryo naglalaman ng mga pares (pangalan ng field: value) ng kasalukuyang tala sa dataset.

XRowSet

Mayroon

UNO bagay

Ibinabalik ang com.sun.star.sdb.RowSet UNO object na kumakatawan sa dataset.


Listahan ng Mga Paraan sa Serbisyo ng Dataset

CloseDataset
CreateDataset
Delete
ExportValueToFile
GetRows

GetValue
Insert
MoveFirst
MoveLast

MoveNext
MovePrevious
Reload
Update


CloseDataset

Isinasara ang kasalukuyang dataset. Nagbabalik ang pamamaraang ito totoo kapag matagumpay.

note

Inirerekomenda na isara ang dataset pagkatapos nitong gamitin sa mga libreng mapagkukunan.


Syntax:

svc.CloseDataset(): bool

Halimbawa:

Sa Basic

      oDataset = oDatabase.CreateDataset("MyTable")
      ' ...
      oDataset.CloseDataset()
    
Sa Python

      dataset = database.CreateDataset("MyTable")
      # ...
      dataset.CloseDataset()
    

CreateDataset

Nagbabalik a Dataset instance ng serbisyo mula sa isang umiiral nang dataset sa pamamagitan ng paglalapat ng tinukoy na filter at ORDER NI mga pahayag.

Syntax:

svc.CreateDataset(opt filter: str, opt orderby: str): svc

Mga Parameter:

salain : Tinutukoy ang kundisyon na dapat tumugma ang mga tala upang maisama sa ibinalik na dataset. Ang argumentong ito ay ipinahayag bilang isang SQL SAAN statement na walang "WHERE" keyword. Kung hindi tinukoy ang argumentong ito, ilalapat ang filter na ginamit sa kasalukuyang dataset, kung hindi, ang kasalukuyang filter ay papalitan ng argumentong ito.

orderby : Tinutukoy ang pagkakasunud-sunod ng dataset bilang isang SQL ORDER NI statement na walang keyword na "ORDER BY". Kung hindi tinukoy ang argumentong ito, ilalapat ang pagkakasunud-sunod ng pag-uuri na ginamit sa kasalukuyang dataset, kung hindi, ang kasalukuyang pagkakasunud-sunod ng pag-uuri ay papalitan ng argumentong ito.

Halimbawa:

Sa Basic

      ' Gumamit ng walang laman na string upang alisin ang kasalukuyang filter
      oNewDataset = oDataset.CreateDataset(Filter := "")
      ' Mga halimbawa ng karaniwang mga filter
      oNewDataset = oDataset.CreateDataset(Filter := "[Pangalan] = 'John'")
      oNewDataset = oDataset.CreateDataset(Filter := "[Pangalan] TULAD ng 'A'")
      ' Posibleng magdagdag ng mga karagdagang kundisyon sa kasalukuyang filter
      oNewDataset = oDataset.CreateDataset(Filter := "(" & oDataset.Filter & ") AT [Pangalan] LIKE 'A'")
    
Sa Python

      new_dataset = dataset.CreateDataset(filter = "")
      new_dataset = dataset.CreateDataset(filter = "[Pangalan] = 'John'")
      new_dataset = dataset.CreateDataset(filter = "[Pangalan] KATULAD ng 'A'")
      new_dataset = dataset.CreateDataset(filter = f"({dataset.Filter}) AT [Pangalan] KATULAD ng 'A'")
    

Delete

Tinatanggal ang kasalukuyang tala mula sa dataset. Nagbabalik ang pamamaraang ito totoo kapag matagumpay.

Pagkatapos ng operasyong ito, ang cursor ay nakaposisyon sa record kaagad pagkatapos ng tinanggal na tala. Kung ang na-delete na tala ay ang huli sa dataset, ang cursor ay nakaposisyon pagkatapos nito at ng property EOF nagbabalik totoo .

Syntax:

svc.Delete(): bool

Halimbawa:

Sa Basic

      oDataset.Delete()
    
Sa Python

      dataset.Delete()
    

ExportValueToFile

Ini-export ang halaga ng isang binary field ng kasalukuyang record sa tinukoy na file.

note

Kung ang tinukoy na field ay hindi binary o kung wala itong data, kung gayon ang output file ay hindi nilikha.


Syntax:

svc.ExportValueToFile(fieldname: str, filename: str, overwrite: bool): bool

Mga Parameter:

fieldname : Ang pangalan ng binary field na ie-export, bilang isang case-sensitive na string.

filename : Ang kumpletong path sa file na gagawin gamit ang notation na tinukoy sa FileSystem . FileNaming ari-arian.

overwrite : Itakda ang argumentong ito sa totoo upang payagan ang patutunguhang file na ma-overwrite (Default = Mali ).

Halimbawa:

Sa halimbawa sa ibaba ang dataset ay naglalaman ng isang field na pinangalanang "Larawan" na dapat i-export sa isang file ng imahe.

Sa Basic

      oDataset.ExportValueToFile("Picture", "C:\my_image.png", True)
    
Sa Python

      dataset.ExportValueToFile("Larawan", r"C:\my_image.png", True)
    

GetRows

Ibinabalik ang mga nilalaman ng dataset sa isang 2-dimensional na array, simula sa unang tala pagkatapos ng kasalukuyang tala.

Pagkatapos ng execution, ang cursor ay nakaposisyon sa row na huling binasa o pagkatapos ng huling record sa dataset, kung saan ang EOF pagbabalik ng ari-arian totoo .

Maaaring gamitin ang paraang ito upang basahin ang data mula sa dataset sa mga chunks, na ang laki ay tinukoy ng maxrows argumento.

note

Ang ibinalik na array ay palaging may dalawang dimensyon, kahit na ang dataset ay naglalaman ng isang column at isang record.


Syntax:

svc.GetRows(header: bool, maxrows: int): any

Mga Parameter:

header : Itakda ang argumentong ito sa totoo upang gawin ang unang entry sa Array naglalaman ng mga header ng column (Default = Mali ).

maxrows : Tinutukoy ang maximum na bilang ng mga tala na ibabalik. Kung ang bilang ng mga kasalukuyang tala ay mas maliit kaysa sa maxrows , kung gayon ang laki ng ibinalik na array ay magiging katumbas ng bilang ng natitirang mga tala sa dataset. Iwanang blangko ang argumentong ito o itakda ito sa zero para ibalik ang lahat ng row sa dataset (Default = 0)

Halimbawa:

Ang sumusunod na halimbawa ay nagbabasa ng isang dataset sa mga chunks ng 100 row hanggang ang lahat ng dataset ay nabasa.

Sa Basic

      Dim arrChunk As Variant, lMaxRows As Long
      lMaxRows = 100
      Do
          arrChunk = oDataset.GetRows(MaxRows := lMaxRows)
          If UBound(arrChunk, 1) >= 0 Then
              ' ...
          End If
      Loop Until UBound(arrChunk, 1) < lMaxRows - 1
    
Sa Python

      max_rows = 100
      chunk = dataset.GetRows(maxrows = max_rows)
      while len(chunk) > 0:
          # ...
          chunk = dataset.GetRows(maxrows = max_rows)
    

GetValue

Ibinabalik ang halaga ng tinukoy na field mula sa kasalukuyang talaan ng dataset.

note

Kung binary ang tinukoy na field, ibabalik ang haba nito.


Syntax:

svc.GetValue(fieldname: str): any

Mga Parameter:

fieldname : Ang pangalan ng field na ibabalik, bilang isang case-sensitive na string.

Halimbawa:

Sa Basic

      currId = oDataset.GetValue(FieldName := "ID")
    
Sa Python

      curr_id = dataset.GetValue(fieldname = "ID")
    

Insert

Naglalagay ng bagong record sa dulo ng dataset at sinisimulan ang mga field nito gamit ang mga tinukoy na value.

Kung ang pangunahing key ng dataset ay isang auto value, ibinabalik ng paraang ito ang pangunahing key value ng bagong record. Kung hindi, ang pamamaraan ay magbabalik ng 0 (kapag matagumpay) o -1 (kapag hindi matagumpay).

note

Ang mga naa-update na field na may mga hindi natukoy na halaga ay sinisimulan sa kanilang mga default na halaga.


note

Kung binary ang tinukoy na field, ibabalik ang haba nito.


Syntax:

svc.Insert(pvargs: any): int

Mga Parameter:

pvargs : A Diksyunaryo naglalaman ng mga pares ng mga pangalan ng field at kani-kanilang mga halaga. Bilang kahalili, ang isang pantay na bilang ng mga argumento ay maaaring tukuyin ang mga alternating field name (bilang a String ) at ang kanilang mga halaga.

Halimbawa:

Sa Basic

Isaalang-alang ang isang talahanayan na pinangalanang "Mga Customer" na may 4 na field: "ID" ( BigInt , auto value at primary key), "Pangalan" ( VarChar ), "Edad" ( Integer ), "Lungsod" ( VarChar ).

Ang halimbawa sa ibaba ay naglalagay ng bagong tala sa dataset na ito gamit ang a Diksyunaryo .


      oDataset = oDatabase.CreateDataset("Mga Customer")
      oNewData = CreateScriptService("Dictionary")
      oNewData.Add("Pangalan", "John")
      oNewData.Add("Edad", 50)
      oNewData.Add("City", "Chicago")
      lNewID = oDataset.Insert(oNewData)
    

Ang parehong resulta ay maaaring makamit sa pamamagitan ng pagpasa sa lahat ng mga pares ng mga patlang at mga halaga bilang mga argumento:


      oDataset.Insert("Pangalan", "John", "Edad", 50, "City", "Chicago")
    
Sa Python

      dataset = database.CreateDataset("Mga Customer")
      new_data = {"Pangalan": "John", "Edad": 30, "City": "Chicago"}
      new_id = dataset.Insert(new_data)
    

Ang mga sumusunod na tawag ay tinatanggap sa Python:


      dataset.Insert("Pangalan", "John", "Edad", 50, "City", "Chicago")
      dataset.Insert(Pangalan = "John", Edad = 50, Lungsod = "Chicago")
    

MoveFirst / MoveLast

Inililipat ang cursor ng dataset sa una (na may MoveFirst ) o hanggang sa huli (kasama ang MoveLast ) talaan.

Nagbabalik ang pamamaraang ito totoo kapag matagumpay.

note

Ang mga natanggal na tala ay binabalewala ng pamamaraang ito.


Syntax:

svc.MoveFirst(): bool

svc.MoveLast(): bool

Halimbawa:

Sa Basic

      oDataset.MoveFirst()
    
Sa Python

      dataset.MoveFirst()
    

MoveNext / MovePrevious

Inilipat ang cursor ng dataset pasulong (na may MoveNext ) o pabalik (na may MovePrevious ) sa pamamagitan ng isang naibigay na bilang ng mga talaan.

Nagbabalik ang pamamaraang ito totoo kapag matagumpay.

note

Ang mga natanggal na tala ay binabalewala ng pamamaraang ito.


Syntax:

svc.MoveNext(offset: int = 1): bool

svc.MovePrevious(offset: int = 1): bool

Mga Parameter:

offset : Ang bilang ng mga tala kung saan ang cursor ay dapat ilipat pasulong o paatras. Ang argument na ito ay maaaring negatibong halaga (Default = 1).

Halimbawa:

Sa Basic

      oDataset.MoveNext()
      oDataset.MoveNext(5)
    
Sa Python

      dataset.MoveNext()
      dataset.MoveNext(5)
    

Reload

Nire-reload ang dataset mula sa database. Ang mga ari-arian Salain at Order By maaaring tukuyin kapag tumatawag sa paraang ito.

Nagbabalik ang pamamaraang ito totoo kapag matagumpay.

tip

Ang pag-reload ng dataset ay kapaki-pakinabang kapag ang mga tala ay naipasok o tinanggal mula sa database. Tandaan na ang mga pamamaraan CreateDataset at I-reload magsagawa ng mga katulad na function, gayunpaman I-reload muling ginagamit ang pareho Dataset halimbawa ng klase.


Syntax:

svc.Reload(opt filter: str, opt orderby: str): bool

Mga Parameter:

salain : Tinutukoy ang kundisyon na dapat tumugma ang mga tala upang maisama sa ibinalik na dataset. Ang argumentong ito ay ipinahayag bilang isang SQL SAAN statement na walang "WHERE" keyword. Kung hindi tinukoy ang argumentong ito, ilalapat ang filter na ginamit sa kasalukuyang dataset, kung hindi, ang kasalukuyang filter ay papalitan ng argumentong ito.

orderby : Tinutukoy ang pagkakasunud-sunod ng dataset bilang isang SQL ORDER NI statement na walang keyword na "ORDER BY". Kung hindi tinukoy ang argumentong ito, ilalapat ang pagkakasunud-sunod ng pag-uuri na ginamit sa kasalukuyang dataset, kung hindi, ang kasalukuyang pagkakasunud-sunod ng pag-uuri ay papalitan ng argumentong ito.

Halimbawa:

Sa Basic

      oDataset.Reload()
      oDataset.Reload(Filter := "[Pangalan] = 'John'", OrderBy := "Edad")
    
Sa Python

      dataset.Reload()
      dataset.Reload(Filter = "[Pangalan] = 'John'", OrderBy = "Edad")
    

Update

I-update ang mga halaga ng mga tinukoy na field sa kasalukuyang talaan.

Nagbabalik ang pamamaraang ito totoo kapag matagumpay.

Syntax:

svc.Update(pvargs: any): bool

Mga Parameter:

pvargs : A Diksyunaryo naglalaman ng mga pares ng mga pangalan ng field at kani-kanilang mga halaga. Bilang kahalili, ang isang pantay na bilang ng mga argumento ay maaaring tukuyin ang mga alternating field name (bilang a String ) at ang kanilang mga halaga.

Halimbawa:

Sa Basic

Ina-update ng halimbawa sa ibaba ang kasalukuyang talaan gamit ang a Diksyunaryo .


      oNewValues = CreateScriptService("Dictionary")
      oNewValues.Add("Edad", 51)
      oNewValues.Add("City", "New York")
      oDataset.Update(oNewValues)
    

Ang parehong resulta ay maaaring makamit sa pamamagitan ng pagpasa sa lahat ng mga pares ng mga patlang at mga halaga bilang mga argumento:


      oDataset.Update("Edad", 51, "City", "New York")
    
Sa Python

      new_values = {"Edad": 51, "City": "New York"}
      dataset.Update(new_values)
    

      dataset.Update("Edad", 51, "City", "New York")
      dataset.Update(Edad = 51, Lungsod = "New York")
    
warning

Lahat ScriptForge Ang mga pangunahing gawain o identifier na may prefix na may underscore na character na "_" ay nakalaan para sa panloob na paggamit. Ang mga ito ay hindi nilalayong gamitin sa Basic macros o Python script.


Mangyaring suportahan kami!