Υπηρεσία SFDatabases.Database

Η υπηρεσία Database (Βάση δεδομένων) παρέχει πρόσβαση σε βάσεις δεδομένων είτε ενσωματωμένες, είτε περιγράφονται στα έγγραφα Base. Αυτή η υπηρεσία παρέχει μεθόδους για:

Each instance of the Database service represents a single database and gives access to its tables, queries and data. This service does not provide access to forms or reports in the Base document.

note

Όλες οι ανταλλαγές μεταξύ αυτής της υπηρεσίας και της βάσης δεδομένων γίνονται μόνο με χρήση SQL.


Οι δηλώσεις SQL μπορούν να εκτελούνται σε άμεση ή έμμεση κατάσταση. Σε άμεση κατάσταση η δήλωση μεταφέρεται στη μηχανή βάσης δεδομένων χωρίς κανένα έλεγχο σύνταξης ή εξέτασης.

Οι παρεχόμενες διεπαφές περιλαμβάνουν απλούς πίνακες και καταλόγους ερωτημάτων, καθώς και πρόσβαση σε δεδομένα βάσης δεδομένων.

tip

To make SQL statements more readable, you can use optional square brackets to enclose tables, queries and fields instead of using other enclosing characters that may be exclusive to certain Relational Database Management Systems (RDBMS).


Κλήση υπηρεσίας

Σύνταξη:

The code snippet below shows how to access any database with the Database service.


        Dim myDatabase As Object
        Set myDatabase = CreateScriptService("SFDatabases.Database", [FileName], [RegistrationName], [ReadOnly], [User, [Password]])
        '   ... Run queries, SQL statements, ...
        myDatabase.CloseDatabase()
    

Παράμετροι:

FileName: The name of the Base file. Must be expressed using SF_FileSystem.FileNaming notation.

RegistrationName: The name of a registered database. If a file name is provided, this argument should not be used.

Conversely, if a RegistrationName is specified, the FileName parameter should not be defined.

ReadOnly: Determines if the database will be opened as readonly (Default = True).

User, Password: Additional connection parameters to the database server.

note

Αυτή η υπηρεσία υποστηρίζεται πλήρως και στις γλώσσες Basic και Python. Όλα τα παραδείγματα εκφράζονται χρησιμοποιώντας τη γλώσσα προγραμματισμού Basic και μπορούν εύκολα να μετατραπούν σε Python.


Πρόσβαση σε βάσεις δεδομένων με την υπηρεσία διεπαφής χρήστη (UI)

It is also possible to access the database associated with a Base document using the ScriptForge.UI service, as shown in the example below:


        Dim myDoc As Object, myDatabase As Object, ui As Object
        Set ui = CreateScriptService("UI")
        Set myDoc = ui.OpenBaseDocument("myDb.odb")
        ' Ο χρήστης και ο κωδικός πρόσβασης παρέχονται παρακάτω, εάν χρειάζεται
        Set myDatabase = myDoc.GetDatabase()
        '   ... Run queries, SQL statements, ...
        myDoc.CloseDocument()
    
tip

Η μέθοδος GetDatabase που χρησιμοποιείται στο παραπάνω παράδειγμα αποτελεί μέρος της υπηρεσίας Base του ScriptForge.


Ιδιότητες

Όνομα

Μόνο για ανάγνωση

Τύπος

Περιγραφή

Queries

Ναι

Πίνακας συμβολοσειρών

Ο κατάλογος των αποθηκευμένων ερωτημάτων.

Tables

Ναι

Πίνακας συμβολοσειρών

Ο κατάλογος των αποθηκευμένων πινάκων.

XConnection

Ναι

XConnection

Το αντικείμενο UNO που αντιπροσωπεύει την τρέχουσα σύνδεση της βάσης δεδομένων.

XMetaData

Ναι

XDatabaseMetaData

Το αντικείμενο UNO που αντιπροσωπεύει τα μεταδεδομένα που περιγράφουν τα χαρακτηριστικά του συστήματος της βάσης δεδομένων.


Κατάλογος μεθόδων στην υπηρεσία βάσης δεδομένων

CloseDatabase
DAvg
DCount

DMin
DMax
DSum

DLookup
GetRows
RunSql


CloseDatabase

Κλείνει την τρέχουσα σύνδεση της βάσης δεδομένων.

Σύνταξη:


       myDatabase.CloseDatabase()
     

DAvg, DCount, DMin, DMax, DSum

Υπολογίζει τη δεδομένη αθροιστική συνάρτηση σε ένα πεδίο ή παράσταση που ανήκει σε έναν πίνακα.

Προαιρετικά, μια πρόταση SQL WHERE μπορεί να καθοριστεί ως φίλτρο που θα εφαρμοστεί πριν από τη συγκεντρωτική συνάρτηση.

Σύνταξη:


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

Παράμετροι:

Expression: A SQL expression in which the field names are surrounded with square brackets.

TableName: A table name (without square brackets).

Criteria: A WHERE clause without the "WHERE" keyword, in which field names are surrounded with square brackets.

Παράδειγμα:

Το παρακάτω παράδειγμα υποθέτει ότι το αρχείο Employees.odb έχει έναν πίνακα με το όνομα EmployeeData.


      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim myDB as Variant
      Set myDB = CreateScriptService("Database", "~/Databases/Employees.odb")
      ' Μετρά τον αριθμό των εργαζομένων στον πίνακα
      MsgBox myDB.DCount("[ID]", "EmployeeData")
      ' Επιστρέφει το άθροισμα όλων των μισθών του πίνακα
      MsgBox myDB.DSum("[Salary]", "EmployeeData")
      ' Παρακάτω είναι μερικά παραδείγματα του τρόπου φιλτραρίσματος των πινάκων
      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

Υπολογίζει μια έκφραση SQL σε μια μεμονωμένη εγγραφή που επιστρέφεται από μια πρόταση WHERE που ορίζεται από την παράμετρο Criteria.

Εάν το ερώτημα επιστρέφει πολλές εγγραφές, λαμβάνεται υπόψη μόνο η πρώτη. Χρησιμοποιήστε την παράμετρο OrderClause για να προσδιορίσετε πώς ταξινομούνται τα αποτελέσματα των ερωτημάτων.

Σύνταξη:


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

Παράμετροι:

Expression: A SQL expression in which the field names are surrounded with square brackets.

TableName: A table name (without square brackets).

Criteria: A WHERE clause without the "WHERE" keyword, in which field names are surrounded with square brackets.

OrderClause: An ORDER BY clause without the "ORDER BY" keywords. Field names should be surrounded with square brackets.

Παράδειγμα:


        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

Αποθηκεύει τα περιεχόμενα ενός πίνακα ή τα αποτελέσματα ενός ερωτήματος SELECT, ή μιας πρότασης SQL σε έναν δισδιάστατο πίνακα. Το πρώτο ευρετήριο στον πίνακα αντιστοιχεί στις σειρές και το δεύτερο ευρετήριο αναφέρεται στις στήλες.

Μπορεί να καθοριστεί ένα ανώτερο όριο για τον αριθμό των σειρών που επιστρέφονται. Προαιρετικά, τα ονόματα στηλών μπορούν να εισαχθούν στην πρώτη σειρά του πίνακα.

Ο πίνακας που επιστρέφεται θα είναι κενός, εάν δεν επιστραφούν σειρές και δεν απαιτούνται οι κεφαλίδες στηλών.

Σύνταξη:


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

Παράμετροι:

SQLCommand: A table or query name (without square brackets) or a SELECT SQL statement.

DirectSQL: When True, the SQL command is sent to the database engine without pre-analysis. Default is False. This argument is ignored for tables. For queries, the applied option is the one set when the query was defined.

Header: When True, the first row of the returned array contains the column headers.

MaxRows: The maximum number of rows to return. The default is zero, meaning there is no limit to the number of returned rows.

Παράδειγμα:

Ακολουθούν μερικά παραδείγματα για το πώς μπορεί να χρησιμοποιηθεί η μέθοδος GetRows:


        Dim queryResults as Variant
        ' Επιστρέφει όλες τις σειρές στον πίνακα με κεφαλίδες στηλών
        queryResults = myDB.GetRows("EmployeeData", Header := True)
        ' Επιστρέφει τις πρώτες 50 εγγραφές εργαζομένων που ταξινομήθηκαν από το πεδίο 'FirstName' (Όνομα)
        queryResults = myDB.GetRows("SELECT * FROM EmployeeData ORDER BY [FirstName]", MaxRows := 50)
    

RunSql

Εκτελεί ένα ερώτημα ενέργειας μιας πρότασης SQL, όπως δημιουργία πίνακα, καθώς και εισαγωγή, ενημέρωση και διαγραφή εγγραφών.

Η μέθοδος επιστρέφει True όταν είναι επιτυχής.

tip

Η μέθοδος RunSql απορρίπτεται με μήνυμα σφάλματος σε περίπτωση που η βάση δεδομένων είχε ανοίξει προηγουμένως σε λειτουργία μόνο για ανάγνωση.


Σύνταξη:


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

Παράμετροι:

SQLCommand: A query name (without square brackets) or a SQL statement.

DirectSQL: When True, the SQL command is sent to the database engine without pre-analysis. (Default = False). For queries, the applied option is the one set when the query was defined.

Παράδειγμα:


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

Όλες οι ScriptForge ρουτίνες Basic ή αναγνωριστικά που έχουν το πρόθεμα χαρακτήρα υπογράμμισης "_" δεσμεύονται για εσωτερική χρήση. Δεν προορίζεται να χρησιμοποιηθούν σε μακροεντολές Basic.