Edukiak
Indizea 🔎︎

# SFDatabases.Database zerbitzua

Database zerbitzuak Base dokumentuetan kapsulatutako edo deskribatutako datu-baseak atzitzea ahalbidetzen du. Zerbitzu honek honakoak egiteko metodoak ditu:

- Datu-baseetako tauletako datuak atzitzeko.

- SELECT kontsultak exekutatzeko eta funtzio agregatuak gauzatzeko.

- SQL ekintza-instrukzioak exekutatzeko, adibidez INSERT, UPDATE, DELETE, etab.

Database zerbitzuaren instantzia bakoitzak datu-base bakar bat ordezkatzen du eta haren taulak, kontsultak eta datuak atzitzea ahalbidetzen du. Zerbitzu horrek ez du eskaintzen Base dokumentuko inprimakiak edo txostenak atzitzeko modurik.

Zerbitzu horren eta datu-basearen arteko truke guztiak SQL bidez soilik gauzatzen dira.

SQL instrukzioak modu zuzenean edo zeharkakoan egin daitezke. Modu zuzenean, instrukzioa sintaxiaren egiaztatzerik edo berrikuspenik gabe transferituko zaio datu-basearen motorrari.

Emandako interfazeek taula sinpleak eta kontsulten zerrendak eskaintzen dituzte, bai eta datu-baseko datuak atzitzeko modua ere.

SQL instrukzioak irakurgarriagoak izan daitezen, aukeran kortxeteak erabili daitezke taulak, kontsultak eta eremuak inguratzeko, beste RDBMS (Relational Database Management System) batzuetan esklusiboak izan daitezkeen beste karaktere inguratzaile batzuk erabili ordez.

## Zerbitzuari deitzea

### Sintaxia:

Beheko kode-zatiak erakusten du nola atzitu edozein datu-base Database zerbitzua erabilita.

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

### Parametroak:

FileName: Base fitxategiaren izena. SF_FileSystem.FileNaming notazioa erabilita adierazi behar da.

RegistrationName: Erregistratutako datu-base baten izena. Fitxategi-izen bat ematen bada, argumentu hori ez da erabili behar.

Era berean, RegistrationName zehaztu bada, FileName parametroa ez da definitu behar.

ReadOnly: Datu-basea irakurtzeko moduan soilik irekiko den zehazten du (Balio lehenetsia = True (egia)).

User, Password: Datu-basearen zerbitzariarekin konektatzeko parametro gehigarriak.

Zerbitzu hau erabat onartuta dago bai Basic bai Python lengoaietan. Adibide guztiak Basic programazio-lengoaian eman dira, baina erraz bihurtu daitezke Python lengoaiara.

## Datu-baseak atzitzea UI zerbitzua erabilita

Posible da Base dokumentu bati lotutako datu-basea atzitzea ScriptForge.UI zerbitzua erabilita, beheko adibidean erakusten den moduan:

            Dim myDoc As Object, myDatabase As Object, ui As Object
            Set ui = CreateScriptService("UI")
            Set myDoc = ui.OpenBaseDocument("myDb.odb")
            ' Erabiltzailea eta pasahitza behean ematen dira, beharrezkoak badira
            Set myDatabase = myDoc.GetDatabase()
            '   ... Exekutatu kontsultak, SQL instrukzioak ...
            myDoc.CloseDocument()

Goiko adibidean erabilitako GetDatabase metodoa ScriptForgen Base zerbitzukoa da.

## Propietateak

Izena | Irakurtzeko soilik | Mota | Deskribapena
Queries | Bai | Kateen matrizea | Biltegiratutako kontsulten zerrenda
Tables | Bai | Kateen matrizea | Biltegiratutako taulen zerrenda.
XConnection | Bai | XConnection | Datu-basearen uneko konexioa ordezkatzen duen UNO objektua.
XMetaData | Bai | XDatabaseMetaData | Datu-basearen sistema-atributuak deskribatzen dituzten metadatuak ordezkatzen dituen UNO objektua.

Database zerbitzuko metodoen zerrenda
CloseDatabase DAvg DCount | DMin DMax DSum | DLookup GetRows RunSql

## CloseDatabase

Datu-basearen uneko konexioa ixten du.

### Sintaxia:

           myDatabase.CloseDatabase()

## DAvg, DCount, DMin, DMax, DSum

Emandako agregazio-funtzioa kalkulatzen du taula batekoa den eremu edo adierazpen batean.

Aukeran, SQLren WHERE klausula zehaztu daiteke agregazio-funtzioaren aurretik aplikatuko den iragazki gisa.

### Sintaxia:

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

### Parametroak:

Expression: SQL adierazpen bat, non eremu-izenak kortxeteekin inguratuta dauden.

TableName: Taula baten izena (kortxeterik gabe).

Criteria: WHERE klausula bat "WHERE" gako-hitzik gabe, non eremu-izenak kortxeteekin inguratuta dauden.

### Adibidea:

Beheko adibidean, Employees.odb fitxategiak EmployeeData izeneko taula bat duela ulertzen da.

          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
          Dim myDB as Variant
          Set myDB = CreateScriptService("Database", "~/Databases/Employees.odb")
          ' Taulako enplegatu kopurua zenbatzen du
          MsgBox myDB.DCount("[ID]", "EmployeeData")
          ' Taulako soldata guztien batuketa itzultzen du
          MsgBox myDB.DSum("[Salary]", "EmployeeData")
          ' Behean, taulak nola iragazten diren erakusten dituzten zenbait adibide daude
          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 adierapzen bat kalkulatzen du Criteria parametroak definitutako WHERE klausulak itzulitako erregistro batak batean.

Kontsultak erregistro anitz itzultzen baditu, lehena soilik hartuko da kontuan. Erabili OrderClause parametroa kontsulta-emaitzak nola ordenatuko diren zehazteko.

### Sintaxia:

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

### Parametroak:

Expression: SQL adierazpen bat, non eremu-izenak kortxeteekin inguratuta dauden.

TableName: Taula baten izena (kortxeterik gabe).

Criteria: WHERE klausula bat "WHERE" gako-hitzik gabe, non eremu-izenak kortxeteekin inguratuta dauden.

OrderClause: ORDER BY klausula bat "ORDER BY" gako-hitzik gabe. Eremu-izenek ez dute kortxeteekin inguratuta egon behar.

### Adibidea:

            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

Taula baten edukiak edo SELECT kontsulta baten edo SQL instrukzio baten emaitzak bi dimentsiotako matrize batean biltegiratzen ditu. Matrizeko lehen indizea erregistroei dagokie eta bigarren indizea zutabei dagokie.

Goiko muga bat zehaztu daiteke itzulitako errenkaden kopurua mugatzeko. Aukeran, zutabe-izenak txertatu daitezke matrizearen lehen errenkadan.

Itzulitako matrizea hutsik egongo da errenkadarik ez bada itzuli eta zutabe-goiburukoak beharrezkoak ez badira.

### Sintaxia:

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

### Parametroak:

SQLCommand: Taula baten edo kontsulta baten izena (kortxeterik gabe) edo SELECT SQL instrukzio bat.

DirectSQL: True (egia) denean, SQL komandoa aurretiko analisirik gabe bidaltzen dadatu-basearen motorrera. Balio lehenetsia False (faltsua) da. Argumentu honi ez ikusiarena egiten zaio tauletan. Kontsultetan, aplikatutako aukera kontsulta definitu zenean ezarritakoa da.

Header: True (egia) denean, itzulitako matrizearen lehen errenkadak zutabe-goiburukoak ditu.

MaxRows: Itzuliko den gehieneko errenkada kopurua. Balio lehenetsia zero da, horrek esan nahi du ez dagoela mugarik itzulitako errenkada kopuruan.

### Adibidea:

Behean, GetRows metodoa nola erabili daitekeen azaltzen duten zenbait adibide:

            Dim queryResults as Variant
            ' Taulako errenkada guztiak itzultzen ditu, zutabe-goiburukoekin
            queryResults = myDB.GetRows("EmployeeData", Header := True)
            ' Lehen 50 enplegatuen erregistroak itzultzen ditu, 'FirstName' eremuaren arabera ordenatuta
            queryResults = myDB.GetRows("SELECT * FROM EmployeeData ORDER BY [FirstName]", MaxRows := 50)

## RunSql

SQL instrukzio baten ekintza-kontsulta bat exekutatzen du, adibidez taula bat sortzea edo erregistroak txertatzea, eguneratzea edo ezabatzea.

Metodoak True itzultzen du arrakasta duenean.

RunSql metodoa errore-mezu batekin baztertzen da datu-basea lehenago soilik irakurtzeko moduan ireki bada.

### Sintaxia:

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

### Parametroak:

SQLCommand: Kontsulta-izen bat (kortxeterik gabe) edo SQL instrukzio bat.

DirectSQL: True bada, SQL komandoa aurretiko analisirik gabe bidaliko da datu-basearen motorrera. (Lehenetsia = False). Kontsultetan, kontsulta definitu zenean ezarritako aukera aplikatuko da.

### Adibidea:

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

Aurrizki gisa azpimarra bat ("_") duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez daude Basic makroetan erabiltzeko pentsatuta.

Erlazionatutako gaiak

SFDocuments.Document zerbitzua

ScriptForge.UI zerbitzua