Tjenesten SFDatabases.Database

Tjenesten Database giver adgang til databaser enten indlejrede eller beskrevet i Base-dokumenter. Denne tjeneste leverer metoder til:

Hvert eksemplar af tjenesten Database repræsenterer en enkelt database og giver adgang til sine tabeller, forespørgsler og data.

Denne tjeneste giver ikke adgang til formularer eller rapporter i det Base-dokument, der indeholder databasen. For at tilgĂĄ formularer i et Base-dokument, se metoden FormDocuments (formulardokumenter) i tjenesten Base.

note

Alle udvekslinger mellem denne tjeneste og databaser udføres udelukkende med SQL.


SQL-udtryk kan udføres i direct (direkte) eller indirect (indirekte) tilstand. I direkte tilstand overføres udtrykket til databasemotoren uden noget syntaks-tjek eller -gennemsyn.

De leverede brugerflader inkluderer tabel- og forespørgsels-lister så vel som adgang til databasens data.

tip

For at gøre SQL-udtryk mere læselige kan du bruge klammer "[ ]" til at omslutte navne på tabeller, forespørgsler og felter i stedet for at bruge andre omsluttende tegn, der kan være specifikke for bestemte Relational Database Management Systems (RDBMS). Men bemærk, at omsluttende tegn er obligatoriske i denne sammenhæng.


Kald af tjeneste

Før brug af tjenesten Database skal biblioteket ScriptForge være indlæst eller importeret:

note

• Basic macros require to load ScriptForge library using the following statement:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python scripts require an import from scriptforge module:
from scriptforge import CreateScriptService


Syntaks:

For at oprette et eksemplar af tjenesten Database kan du bruge metoden CreateScriptService:

CreateScriptService("SFDatabases.Database", [filename: str], [registrationname], [readonly], [user, [password]]): svc

note

I den syntaks, der er beskrevet ovenfor kan du bruge enten "SFDatabases.Database" eller simpelthen "Database" som det første argument i metoden CreateScriptService.


Parametre:

filnavn: Navnet pĂĄ Base-filen. Skal udtrykkes med notationen SF_FileSystem.FileNaming.

registernavn: Navnet på dem registrerede database. Hvis der opgives et filnavn, bør dette argument ikke bruges.

Omvendt, hvis der er angivet registreringsnavn, bør parameteren filnavn ikke defineres.

skrivebeskyttet: Bestemmer, om databasen skal ĂĄbnes som skrivebeskyttet (standard = True (sand)).

bruger, adgangskode: Yderligere forbindelsesparametre til databaseserveren.

Eksempel:

I Basic

      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim myDatabase as Object
      Set myDatabase = CreateScriptService("Database", "/home/user/Documents/myDB.odb")
      ' Kør forespørgsler, SQL-udtryk, ...
      myDatabase.CloseDatabase()
    
I Python

      from scriptforge import CreateScriptService
      myDatabase = CreateScriptService("Database", "/home/user/Documents/myDB.odb")
      # Kør forespørgsler, SQL-udtryk, ...
      myDatabase.CloseDatabase()
    

Tilgang til databaser med tjenesten UI

Det er ogsĂĄ muligt at tilgĂĄ databasen, der er knyttet til et Base-dokument med tjenesten ScriptForge.UI, som vist i eksemplerne herunder:

I Basic

      Dim myDoc As Object, myDatabase As Object, ui As Object
      Set ui = CreateScriptService("UI")
      Set myDoc = ui.OpenBaseDocument("/home/user/Documents/myDB.odb")
      ' Bruger og adgangskode opgives, om nødvendigt, herunder
      Set myDatabase = myDoc.GetDatabase()
      ' Kør forespørgsler, SQL-udtryk, ...
      myDatabase.CloseDatabase()
      myDoc.CloseDocument()
    
I Python

      ui = CreateScriptService("UI")
      doc = ui.OpenBaseDocument("/home/user/Documents/myDB.odb")
      # Bruger og adgangskode er anført herunder, hvis nødvendigt
      myDatabase = doc.GetDatabase()
      # Kør forespørgsler, SQL-udtryk, ...
      myDatabase.CloseDatabase()
      doc.CloseDocument()
    
tip

Metoden GetDatabase (Hent_database), der er brugt i eksemplet ovenfor er en del af ScriptForge's tjeneste Base.


Egenskaber

Navn

Readonly (skrivebeskyttet)

Type (type)

Description (beskrivelse)

Queries

Yes (ja)

Array of strings (matrix af strenge)

Listen over gemte forespørgsler.

Tables

Yes (ja)

Array of strings (matrix af strenge)

Listen over gemte tabeller.

XConnection

Yes (ja)

XConnection

UNO-objektet, der repræsenterer den aktuelle dataforbindelse.

XMetaData

Yes (ja)

XDatabaseMetaData

UNO-objektet, der repræsenterer de metadata, der beskriver databasens systemattributter.


Liste over metoder i tjenesten Database

CloseDatabase
DAvg
DCount

DMin
DMax
DSum

DLookup
GetRows
RunSql


CloseDatabase

Lukker den aktuelle database-forbindelse.

Syntaks:

db.CloseDatabase()

Eksempel:


    myDatabase.CloseDatabase() ' Basic
  

    myDatabase.CloseDatabase() # Python
  

DAvg, DCount, DMin, DMax, DSum

Beregner den givne aggreger-funktion på et felt eller udtryk, der hører til en tabel.

Valgfrit kan en SQL WHERE (hvor)-sætning angives som et filer, der anvendes forud for aggreger-funktionen.

Syntaks:

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

Parametre:

udtryk: Et SQL-udtryk, hvor feltnavnene er omsluttet med kantede klammer.

tabelnavn: Et tabelnavn (uden kantede klammer).

kriterier: En WHERE (hvor)-sætning uden nøgleordet "WHERE", hvor feltnavnene er omsluttet af kantede klammer.

Eksempel:

Eksemplet herunder antager, at filen Employees.odb (ansatte.odb) har en tabel med navnet EmployeeData (ansattes data).

I Basic

      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim myDB as Variant
      Set myDB = CreateScriptService("Database", "/home/user/Databases/Employees.odb")
      ' Tæller antallet af ansatte i tabellen
      MsgBox myDB.DCount("[ID]", "EmployeeData")
      ' Returnerer summen af alle lønninger i tabellen
      MsgBox myDB.DSum("[Salary]", "EmployeeData")
      ' Herunder ses nogle eksempler pĂĄ, hvordan tabeller kan filtreres
      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%'")
    
I Python

      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%'"))
    

DLookup

Beregner et SQL-udtryk i en enkelt post, returneret af en WHERE (hvor)-sætning, defineret af parameteren Criteria (Kriterier).

Hvis forespørgslen returnerer flere poster, tages kun den første i betragtning. Brug parameteren OrderClause (rækkefølge-sætning) for at afgøre, hvordan resultaterne af forespørgslen er sorteret.

Syntaks:

db.DLookup(expression: str, tablename: str, [criteria:str], [orderclause: str]): any

Parametre:

udtryk: Et SQL-udtryk, hvor feltnavnene er omsluttet af kantede klammer.

tabelnavn: Et tabelnavn (uden kantede klammer).

kriterier: En WHERE (hvor)- sætning uden nøgleordet "WHERE", hvor feltnavnene er omsluttet af kantede klammer.

sorter-sætning: En ORDER BY (sorter efter)-sætning uden nøgleordene "ORDER BY" (sorter efter). Feltnavne bør omsluttes med kantede klammer.

Eksempel:

I Basic

      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'")
    
I Python

      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'"))
    

GetRows

Gemmer indholdet af en tabel eller resultater af en SELECT (udvælg)-forespøgsel eller af et SQL-udtryk i en todimensionel matrix. Det første indeks i matrixen svarer til rækkerne og det andet indeks til kolonnerne.

Der kan angives en øvre grænse for antallet af returnerede rækker. Valgfrit kan kolonnenavne indsættes i matrixens første række.

Den returnerede matrix er tom, hvis ingen rækker returneres og der ikke kræves kolonneoverskrifter.

Syntaks:

db.GetRows(sqlcommand: str, directsql: bool = False, header: bool = False, maxrows: int = 0): any

Parametre:

sqlkommando: Et tabel- eller forespørgselsnavn (uden kantede klammer) eller en SELECT (udvælg) SQL-sætning.

direkte_sql: Når True (sand), sendes SQL-kommandoen til databasemotoren uden forhåndsanalyse. Standard er False (falsk). Dette argument ignoreres ved tabeller. Ved forespørgsler er den anvendte indstilling den, der blev sat, da forespørgslen blev oprettet.

overskrift: Når True (sand), indeholder den række i den returnerede matrix kolonneoverskrifterne.

maxrækker: Maksimum-antallet af rækker, der skal returneres. Standarden er nul, hvilket betyder, at der ikke er nogen grænse for antallet af returnerede rækker.

Eksempel:

Herunder er der nogle fĂĄ eksempler pĂĄ, hvordan metoden GetRows kan bruges:

I Basic

      Dim queryResults as Variant
      ' Returnerer alle rækker i tabellen med kolonneoverskrifter
      queryResults = myDB.GetRows("EmployeeData", Header := True)
      ' Returnerer de første 50 poster sorteret efter feltet 'FirstName' (fornavn)
      queryResults = myDB.GetRows("SELECT * FROM EmployeeData ORDER BY [FirstName]", MaxRows := 50)
    
I Python

      queryResults = myDB.GetRows("EmployeeData", header = True)
      queryResults = myDB.GetRows("SELECT * FROM EmployeeData ORDER BY [FirstName]", maxrows = 50)
    

RunSql

Udfører en SQL-erklærings handlingsforespørgsel såsom at oprette en tabel, såvel som indsættelse, opdatering og sletning af poster.

Metoden returnerer True (sand), nĂĄr den lykkes.

tip

Metoden RunSql (kør SQL) forkastes med en fejlmeddelelse i det tilfælde, at databasen tidligere blev åbnet i skrivebeskyttet tilstand.


Syntaks:

db.RunSql(sqlcommand: str, directsql: bool = False): bool

Parametre:

sqlkommando: En forespørgselsnavn (uden kantede klammer) eller et SQL-udtryk.

direkte_sql: Når True (sand), sendes SQL-kommandoen til databasemotoren uden forhåndsanalyse. (Standard = False (falsk)). Ved forespørgsler er den anvendte indstilling den, der blev sat, da forespørgslen blev oprettet.

Eksempel:

I Basic

      myDatabase.RunSql("INSERT INTO [EmployeeData] VALUES(25, 'Smith', 'John')", DirectSQL := True)
    
I Python

      myDatabase.RunSql("INSERT INTO [EmployeeData] VALUES(25, 'Smith', 'John')", directsql = True)
    
warning

Alle ScriptForge Basic-rutiner eller identifikatorer, der er indledet med et understreget tegn "_" er reserveret til internt brug. Det er ikke meningen, at de skal bruges i Basic-makroer eller Python-scripts.


Støt os venligst!