Pomoč LibreOfficeDev 7.6
Storitev Database zagotavlja dostop do zbirk podatkov, ki so vdelane ali opisane v dokumentih Base. Ta storitev zagotavlja metode za:
pridobivanje dostopa do podatkov v tabelah zbirke podatkov;
zagon povpraševanj SELECT in izvajanje sestavljenih funkcij;
izvajanje ukazov dejanj SQL , kot so INSERT, UPDATE, DELETE itn.
Vsaka instanca storitve Database predstavlja posamezno zbirko podatkov in ponuja dostop do njenih tabel, poizvedb in podatkov.
Ta storitev ne ponuja dostopa do obrazcev ali poročil v dokumentih Base, ki vsebujejo zbirko podatkov. Če želite dostopati do obrazcev v dokumentu programa Base, glejte metodo FormDocuments storitve Base.
Vse izmenjave med to storitvijo in zbirko podatkov se izvedejo zgolj z uporabo SQL.
Izjave oz. ukaze SQL lahko izvedete neposredno ali posredno. V neposrednem načinu je izjava prenesena v pogon zbirke podatkov brez preverjanja skladnje ali pregleda.
Podani vmesniki vključujejo enostavne sezname tabel in poizvedb, kot tudi dostop do podatkov zbirke podatkov.
Da bi bile izjave SQL lažje berljive, lahko uporabite neobvezne oglate oklepaje »[ ]« za podajanje imen tabel, poizvedb in polj namesto uporabe drugih znakov za navajanje, ki so morda ekskluzivni za določene sisteme upravljanja relacijskih zbirk podatkov (RDBMS). Vendar ne pozabite, da so znaki zaobjetja podatkov v tem kontekstu obvezni.
Pred uporabo storitve Database je potrebno naložiti ali uvoziti knjižnico ScriptForge:
Instanco storitve Database lahko tvorite tudi z metodo CreateScriptService:
CreateScriptService("SFDatabases.Database", [filename: str], [registrationname], [readonly], [user, [password]]): svc
Z zgoraj opisano skladnjo lahko za prvi argument metode CreateScriptService uporabite »SFDatabases.Database« ali enostavno »Database«.
filename: ime datoteke programa Base. Izraženo mora biti v zapisu SF_FileSystem.FileNaming.
registrationname: ime registrirane zbirke podatkov. Če je podano ime datoteke filename, tega argumenta ne uporabljajte.
Ravno nasprotno, če je določen parameter registrationname, potem parameter filename ne sme biti določen.
readonly: določa, ali bo zbirka podatkov odprta samo za branje (privzeta vrednost je True).
user, password: parametra prijave (uporabniško ime in geslo) za strežnik zbirke podatkov.
      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim myDatabase as Object
      Set myDatabase = CreateScriptService("Database", "/home/user/Documents/myDB.odb")
      ' Izvedite poizvedbe, ukaze SQL ...
      myDatabase.CloseDatabase()
    
      from scriptforge import CreateScriptService
      myDatabase = CreateScriptService("Database", "/home/user/Documents/myDB.odb")
      # Izvedite poizvedbe, ukaze SQL ...
      myDatabase.CloseDatabase()
    Do zbirke podatkov, povezane z dokumentom programa Base, lahko dostopate tudi s storitvijo ScriptForge.UI, kar prikazuje spodnji primeri:
      Dim myDoc As Object, myDatabase As Object, ui As Object
      Set ui = CreateScriptService("UI")
      Set myDoc = ui.OpenBaseDocument("/home/user/Documents/myDB.odb")
      ' Uporabnik in geslo sta navedena spodaj, če jih potrebujete
      Set myDatabase = myDoc.GetDatabase()
      ' Izvedite poizvedbe, ukaze SQL ...
      myDatabase.CloseDatabase()
      myDoc.CloseDocument()
    
      ui = CreateScriptService("UI")
      doc = ui.OpenBaseDocument("/home/user/Documents/myDB.odb")
      # Uporabnik in geslo sta navedena spodaj, če jih potrebujete
      myDatabase = doc.GetDatabase()
      # Izvedite poizvedbe, ukaze SQL ...
      myDatabase.CloseDatabase()
      doc.CloseDocument()
    V zgornjem primeru uporabljena metoda GetDatabase je del storitve ScriptForge Base.
| Ime | Samo za branje | Vrsta | Opis | 
|---|---|---|---|
| Queries | Da | Polje nizov | Seznam shranjenih poizvedb. | 
| Tables | Da | Polje nizov | Seznam shranjenih tabel. | 
| XConnection | Da | Predmet UNO, ki predstavlja povezavo s trenutno zbirko podatkov. | |
| XMetaData | Da | Predmet UNO, ki predstavlja metapodatke, ki opisujejo sistemske atribute zbirke podatkov. | 
| Seznam metod v storitvi Database | ||
|---|---|---|
Zapre trenutno povezavo zbirke podatkov.
db.CloseDatabase()
    myDatabase.CloseDatabase() ' Basic
  
    myDatabase.CloseDatabase() # Python
  Izračuna dano agregatno funkcijo na polju ali izrazu, ki pripada tabeli.
Po potrebi lahko določite stavek SQL WHERE kot filter, ki bo uporabljen pred agregatno funkcijo.
db.DAvg(expression: str, tablename: str, [criteria: str]): any
db.DCount(expression: str, tablename: str, [criteria: str]): any
db.DMin(expression: str, tablename: str, [criteria: str]): any
db.DMax(expression: str, tablename: str, [criteria: str]): any
db.DSum(expression: str, tablename: str, [criteria: str]): any
expression: izraz SQL z imeni polj v oglatih oklepajih.
tablename: ime tabele (brez oglatih oklepajev).
criteria: stavek WHERE brez ključne besede "WHERE", v katerem so imena polj v oglatih oklepajih.
Spodnji primer predvideva, da ima datoteka Employees.odb tabelo z imenom EmployeeData.
      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim myDB as Variant
      Set myDB = CreateScriptService("Database", "/home/user/Databases/Employees.odb")
      ' Prešteje zaposlene v tabeli
      MsgBox myDB.DCount("[ID]", "EmployeeData")
      ' Vrne vsoto vseh plač v tabeli
      MsgBox myDB.DSum("[Salary]", "EmployeeData")
      ' Sledi nekaj primerov, kako lahko filtrirate tabele
      MsgBox myDB.DCount("[ID]", "EmployeeData", "[Position] = 'Manager'")
      MsgBox myDB.DCount("[ID]", "EmployeeData", "[Position] = 'Sales' AND [City] = 'Chicago'")
      MsgBox myDB.DCount("[ID]", "EmployeeData", "[FirstName] LIKE 'Paul%'")
    
      myDB = CreateScriptService("Database", "/home/user/Databases/Employees.odb")
      bas = CreateScriptService("Basic")
      bas.MsgBox(myDB.DCount("[ID]", "EmployeeData"))
      bas.MsgBox(myDB.DSum("[Salary]", "EmployeeData"))
      bas.MsgBox(myDB.DCount("[ID]", "EmployeeData", "[Position] = 'Manager'"))
      bas.MsgBox(myDB.DCount("[ID]", "EmployeeData", "[Position] = 'Sales' AND [City] = 'Chicago'"))
      bas.MsgBox(myDB.DCount("[ID]", "EmployeeData", "[FirstName] LIKE 'Paul%'"))
    Izračuna izraz SQL na posameznem zapisu, ki jih vrne stavek WHERE, določen s parametrom Criteria.
Če poizvedba vrne več zapisov, se uporabi le prvi. Uporabite parameter OrderClause, da ugotovite, kako so razvrščeni rezultati poizvedbe.
db.DLookup(expression: str, tablename: str, [criteria:str], [orderclause: str]): any
expression: izraz SQL z imeni polj v oglatih oklepajih.
tablename: ime tabele (brez oglatih oklepajev).
criteria: stavek WHERE brez ključne besede "WHERE", v katerem so imena polj v oglatih oklepajih.
orderclause: stavek ORDER BY brez ključnih besed "ORDER BY". Imena polj morajo biti v oglatih oklepajih.
      MsgBox myDB.DLookup("[FirstName]", "EmployeeData", Criteria := "[LastName] LIKE 'Smith'", OrderClause := "[FirstName] DESC")
      MsgBox myDB.DLookup("[Salary]", "EmployeeData", Criteria := "[ID] = '3'")
      MsgBox myDB.DLookup("[Quantity] * [Value]", "Sales", Criteria := "[SaleID] = '5014'")
    
      bas = CreateScriptService("Basic")
      bas.MsgBox(myDB.DLookup("[FirstName]", "EmployeeData", criteria = "[LastName] LIKE 'Smith'", orderclause = "[FirstName] DESC"))
      bas.MsgBox(myDB.DLookup("[Salary]", "EmployeeData", criteria = "[ID] = '3'"))
      bas.MsgBox(myDB.DLookup("[Quantity] * [Value]", "Sales", criteria = "[SaleID] = '5014'"))
    Shrani vsebino tabele ali rezultate poizvedbe SELECT ali izjave SQL v dvodimenzionalno polje. Prvi indeks tabele ustreza vrsticam, drugi indeks pa se nanaša na stolpce.
Določite lahko zgornjo mejo števila vrnjenih vrstic. Imena stolpcev lahko po želji vstavite v prvo vrstico polja.
Vrnjeno polje bo prazno, če ne vrne nobenih vrstic in glave stolpcev niso zahtevane.
db.GetRows(sqlcommand: str, directsql: bool = False, header: bool = False, maxrows: int = 0): any
sqlcommand: ime tabele ali poizvedbe (brez oglatih oklepajev) ali SQL-izjava SELECT.
directsql: ko je True, pošlje ukaz SQL pogonu zbirke podatkov brez predhodne analize. Privzeta vrednost je False. Ta argument je pri tabelah prezrt. Za poizvedbe je uporabljena tista možnost, ki je veljala ob določitvi poizvedbe.
header: če je True, prva vrstica vrnjenega polja vsebuje glave stolpca.
maxrows: največje število vrnjenih vrstic. Privzeta vrednost je nič, kar pomeni, da število vrnjenih vrstic ni omejeno.
Spodaj je nekaj primerov rabe metode GetRows:
      Dim queryResults as Variant
      ' Vrne vse vrstice v tabeli z glavami stolpcev
      queryResults = myDB.GetRows("EmployeeData", Header := True)
      ' Vrne prvih 50 zapisov zaposlenih, razvrščenih po polju 'FirstName'
      queryResults = myDB.GetRows("SELECT * FROM EmployeeData ORDER BY [FirstName]", MaxRows := 50)
    
      queryResults = myDB.GetRows("EmployeeData", header = True)
      queryResults = myDB.GetRows("SELECT * FROM EmployeeData ORDER BY [FirstName]", maxrows = 50)
    Odpre okno podatkovnega pogleda navedene poizvedbe in vrne instanco storitve Datasheet.
Če poizvedbe ni mogoče odpreti, vrne Nothing.
db.OpenQuery(queryname: str): obj
queryname: ime obstoječe poizvedbe kot niz vrste String; razlikuje med velikimi in malimi črkami.
      myDatabase.OpenQuery("MyQuery")
    
      myDatabase.OpenQuery("MyQuery")
    Izvede ukaz SQL SELECT, odpre okno podatkovnega pogleda z rezultati in vrne instanco storitve Datasheet.
db.OpenSql(sql: str, directsql: bool): obj
sql: niz, ki vsebuje veljavno izjavo SQL SELECT. Identifikatorji so lahko zaobjeti z oglatimi oklepaji.
directsql: ko je True, pošlje ukaz SQL pogonu zbirke podatkov brez predhodne analize (privzeta vrednost je False).
      myDatabase.OpenSql("SELECT * FROM [Customers] ORDER BY [CITY]")
    
      myDatabase.OpenSql("SELECT * FROM [Customers] ORDER BY [CITY]")
    Odpre okno podatkovnega pogleda navedene tabele in vrne instanco storitve Datasheet.
db.OpenTable(tablename: str): obj
tablename: ime obstoječe tabele kot niz vrste String; razlikuje med velikimi in malimi črkami.
      myDatabase.OpenTable("MyTable")
    
      myDatabase.OpenTable("MyTable")
    Izvede dejanje poizvedbe izjave SQL, kot je ustvarjanje tabele, pa tudi vstavljanje, posodabljanje in brisanje zapisov.
Metoda vrne True, če uspe.
Metoda RunSql je zavrnjena s sporočilom o napaki, če je bila zbirka podatkov prej odprta v načinu samo za branje.
db.RunSql(sqlcommand: str, directsql: bool = False): bool
sqlcommand: ime poizvedbe (brez oglatih oklepajev) ali ukaz SQL.
directsql: ko je True, pošlje ukaz SQL pogonu zbirke podatkov brez predhodne analize (privzeta vrednost je False). Za poizvedbe je uporabljena tista možnost, ki je veljala ob določitvi poizvedbe.
      myDatabase.RunSql("INSERT INTO [EmployeeData] VALUES(25, 'Smith', 'John')", DirectSQL := True)
    
      myDatabase.RunSql("INSERT INTO [EmployeeData] VALUES(25, 'Smith', 'John')", directsql = True)