Tjenesten SFDatabases.Database

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

Hver forekomst af tjenesten Database repræsenterer en enkelt database og giver adgang til dens tabeller, forespørgsler og data. Denne tjeneste giver ikke adgang til formularer eller rapporter i Base-dokumentet.

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 firkantede klammer til at omslutte tabeller, forespørgsler og felter i stedet for at bruge andre omsluttende tegn, der kan være særegne for visse Relationsdatabase administrationssystemer (Relational Database Management Systems = RDBMS).


Kald af tjeneste

Syntaks:

Kodestumpen herunder viser, hvordan du tilgĂĄr en vilkĂĄrlig database med tjenesten Database.


        Dim myDatabase As Object
        Set myDatabase = CreateScriptService("SFDatabases.Database", [FileName], [RegistrationName], [ReadOnly], [User, [Password]])
        '   ... Kør forespørgsler, SQL-udtryk ...
        myDatabase.CloseDatabase()
    

Parametre:

FileName (filnavn): Basefilens navn. Skal udtrykkes i SF_FileSystem.FileNaming (filnavngivelse)-notation.

RegistrationName (registreringsnavn): Navnet på en registreret database. Hvis der er givet et filnavn, bør dette argument ikke bruges.

Hvis der modsætningsvis er angivet et RegistrationName (registreringsnavn), bør parametren FileName (filnavn) ikke defineres.

Skrivebeskyttet: Bestemmer, om databasen bliver ĂĄbner som skrivebeskyttet (Standard = True (sand)).

User, Password (bruger, adgangskode): Ydeligere forbindelsesparametre til database-serveren.

note

This service is fully supported in both Basic and Python languages. All examples are expressed using the Basic programming language and can be easily converted to Python.


Tilgang til databaser med tjenesten UI

Det er ogsĂĄ muligt at tilgĂĄ den database, der er tilknyttet et Base-dokument med tjenesten ScriptForge.UI, som vist i eksemplet herunder:


        Dim myDoc As Object, myDatabase As Object, ui As Object
        Set ui = CreateScriptService("UI")
        Set myDoc = ui.OpenBaseDocument("myDb.odb")
        ' Bruger og adgangskode opgives, om nødvendigt, herunder
        Set myDatabase = myDoc.GetDatabase()
        '   ... Kør forespørgsler, SQL-udtryk ...
        myDoc.CloseDocument()
    
tip

Metoden GetDatabase, der bruges i eksemplet ovenfor er en del af ScriptForge-tjenesten Base.


Properties (egenskaber)

Name (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:


       myDatabase.CloseDatabase()
     

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:


        myDatabase.DAvg(Expression As String, TableName As String, [Criteria As String]) As Variant
    

Parametre:

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

TableName (tabelnavn): Et tabelnavn (uden kantede klammer).

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

Eksempel:

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


      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim myDB as Variant
      Set myDB = CreateScriptService("Database", "~/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%'")
    

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:


        myDatabase.DLookup(Expression As String, TableName As String, [Criteria As String], [OrderClause As String]) As Variant
    

Parametre:

Expression (udtryk): Et SQL-udtryk, hvor feltnavne er omsluttet af kantede klammer.

TableName (tabelnavn): Et tabelnavn (uden klammer).

Criteria (kriterier): En WHERE (hvor)-sætning uden nøgleordet "WHERE", hvor feltnavne er omsluttet med klammer.

OrderClause (rækkefølge-sætning): En ORDER BY (sorter efter)-sætning uden nøgleordene "ORDER BY". Feltnavne bør være omsluttet af klammer.

Eksempel:


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

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:


        myDatabase.GetRows(SQLCommand As String, [DirectSQL As Boolean], [Header As Boolean], [MaxRows As Long]) As Variant
    

Parametre:

SQLCommand (SQL-kommando): Et tabel- eller forespørgselsnavn (uden klammer) eller et SELECT (udvælg) SQL-udtryk.

DirectSQL (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 defineret.

Header (overskrift): Når True (sand), indeholder den første række i den returnerede matrixen kolonneoverskrifterne.

MaxRows (maks-rækker): Det maksimale antal rækker, der skal returneres. Standard 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:


        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)
    

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:


        myDatabase.RunSql(SQLCommand As String, [DirectSQL As Boolean]) As Boolean
    

Parametre:

SQLCommand (SQL-kommando): et forespørgselsnavn (uden klammer) eller en SQL-erklæring.

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

Eksempel:


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

Alle ScriptForge Basic-rutiner eller identifikatorer, som indledes med et understregningstegn "_" er reserveret til internt brug. De er ikke beregnet til brug i Basic-makroer.


Støt os venligst!