User Tools

Site Tools


vba:access:sqlscript:scriptexamples

[VBA][Access] Klasse SQLScript - SQL Befehle

Diese Beispiele basieren alle auf der Klasse [VBA][Access] Klasse SQLScript. Es werden hier nur die SQL-Statements gezeigt und den Rückgabewert.

Anmerkungen

Befehlsabschluss ;

Bei Einzelscripte ist kein ; am Ende des Befehls notwendig. Das Semicolon schadet aber auch nicht. Bei Scripten mit mehreren Befehlen ist das ; am Ende Notwendig. Nach dem ; darf auf der zeile bis auf Leerzeichen nichts mehr folgen

SELECT * FROM my_table;
SELECT *
FROM my_table
;

Spezialfälle

Das ; am Ende einer Zeile wird nicht als Befehlsende intepretiert, wenn die Zeile eine Kommentarzeile ist. Also mit – beginnt. Oder wenn die Zeile mit PARAMETERS beginnt. Dann ist es eine Paramterzeile eines SQLs

-- Dies ist ein Tast;
 
CREATE OR REPLACE VIEW vw_test AS 
-- Das ; in der folgenden Zeile wird nicht als Befehlsende intepretiert
PARAMETERS [P_ID] Long;
SELECT t.*
FROM tbl_test AS t
WHERE t.id = [P_ID];
-- hingegen endet der SQL-Befehm nach dem ; auf der vorhergehenden Zeile

Komentarzeilen --

SQLScript erlaubt Komentarzeilen in Code. Jede Zeile, die mit einem – beginnt (es darf Leerzeichen (Space, Tab) davor haben) wird als Komentarzeile angesehen und vor dem Ausführen entfernt. Kommentare hinter dem Code wird nicht als solcher erkannt. Jeder Kommentar muss also auf eine eigene Zeile

-- Hallo Welt
SELECT
    -- Als erstes geben wir die ID aus
    id,
    ...

PROMPT

 PROMPT text

Im Gegensatz zum Komentar mittels -- ist PROMPT durchaus ein Befehl. Der Text nach PROMPT wird beim Ausführen eines Scriptes zurückgegeben. Der Befehl macht vor allem in grösseren Scripten Sinn, um in der Ausgabe Notizen zu hinterlassen bei welchem Schritt man gerade ist.

Da PROMPT ein Befehlist, muss die Zeile in einem Script mit mehreren Befehlen mit ; abgeschlossenwerden

Einfache Access-SQL

Auf einfache SELECT etc. gehe ich hier nicht weiter ein. Die Doku dazu findest du unter den folgenden Links

DDL
DML
DCL

Data Control Language (DCL, deutsch „Datenaufsichtssprache“)

SET

SET param = value

Ms Access SQL kennt bei den Abfragen Variablen/Parameters. SQLScript kann damit arbeiten. Wenn man einem Parameter einen Wert zuteilt, bleibt der erhalten bis der Cache des Containers gelehrt wird.
Siehe auch SELECT mit Parametern/Variabeln

Setzen eines Wertes geht über die Funktion SET

SET act_id = 13
SET search_date = #01-01-2015#

Somit haben wir jetzt eine Variabel act_id mit dem Wert 13 und search_date mit dem ersten Tag im 2015. Diese Variablen kann an wie gewohnt im Access mittels SELECT abfragen. Oder man kann sie in einem Filter brauchen. Genauso wie die benannten Parameter einer Abfrage.

Hier mein Testscript, dass ich über die Konole aufrufe

SET act_id = 13;
PROMPT IN der Tabelle die ID [act_id] herausfiltern;
SELECT * FROM tbl_t1 WHERE id = act_id;
Set Paramter [ACT_ID] to 13

> IN der Tabelle die ID [act_id] herausfiltern

| id | val |
|----|-----|
| 13 | ABC |

SELECT mit Parametern/Variabeln

Wie in SET bereits erwähnt, kennt MS Access SQL Paramter. Entweder sind sie vordefiniert oder aber es sind Feldnamen die in der Quelle nicht vorhanden sind. Wir kennen dass, wenn man eine Abfrage öffnet und Access fragt nach einem Wert für ein Feld.

Ind em folgenden SQL ist [act_id] ein undefinierter Paramter.

SELECT t.*
FROM tbl_t1 AS t
WHERE t.id = [act_id];

Beim ausführen erscheint eine Inputbox, die nach dem Wert für act_id fragt. Dieser Wert wird anschliessend in den Cache des Containers gespeichert. Analog zum Scriptseiten SET.

Die aktiven Werte für gecachte Variabeln kann man mittels SHOW Variables/Paramters überprüfen.

CLEAR CHACHE

CLEAR CACHE
CLEAR CACHE var_name

Um gerade noch bei den Variablen zu bleiben. Mittels CLEAR CACHE können die Variablen gelöscht werden. Wenn kein Variablenname angegeben wird, wird der ganez Cache gelöscht. Ansonsten nur die eine Variable.

Hier mal ein Beispiel aus der Konsole

SET a = 1;
SET b = 2;
SET c = 3;
SHOW VARIABLES;
-- Nur Variable B löschen
CLEAR CACHE b;
SHOW VARIABLES;
-- Alle Variablen löschen
CLEAR CACHE;
SHOW VARIABLES;
Set Paramter [A] to 1

Set Paramter [B] to 2

Set Paramter [C] to 3

| variable_name | type | value |
|---------------|------|-------|
| A             | BYTE | 1     |
| B             | BYTE | 2     |
| C             | BYTE | 3     |

Clear Cache for Variable [B]

| variable_name | type | value |
|---------------|------|-------|
| A             | BYTE | 1     |
| C             | BYTE | 3     |

Clear Cache

| variable_name | type | value |
|---------------|------|-------|

SHOW

SHOW ist ein Befehl, den man aus anderen DBMS kennt um Objekte in der Datenbank anzuzeigen. Tabellen, Spalten etc.

SQLScript kennt mehrere verschiedene Objekte die analysiert werden können

SHOW VIEWS/TABLES

SHOW TABLES [WHERE conditions]
SHOW VIEWS [WHERE conditions]

Alle Tabellen ausgeben

SHOW TABLES
| table_name                  | row_count | last_update         | indexes                                    |
|-----------------------------|-----------|---------------------|--------------------------------------------|
| ADDON_SQL_CONSOLE_SESSION   | 19        | 13.04.2015 12:57:28 | ID, PrimaryKey (PK)                        |
| t_sql_test                  | 1         | 17.04.2015 10:08:24 | idx_sql_val, Index_F44530CA_8088_4FED (PK) |
| tbl_t1                      | 2         | 13.04.2015 12:09:01 | idx_val, Index_B4C4285A_B98F_4415 (PK)     |
| TODO: ADDON_SQL_CONSOLE_LOG | 0         | 13.04.2015 12:26:40 | PrimaryKey (PK), SESSION_ID, STEP_ID       |

Liste filtern

SHOW TABLES WHERE TABLE_NAME LIKE '*_t*';
| table_name | row_count | last_update         | indexes                                    |
|------------|-----------|---------------------|--------------------------------------------|
| t_sql_test | 1         | 17.04.2015 10:08:24 | idx_sql_val, Index_F44530CA_8088_4FED (PK) |
| tbl_t1     | 2         | 13.04.2015 12:09:01 | idx_val, Index_B4C4285A_B98F_4415 (PK)     |

SHOW COLUMNS

SHOW COLUMNS FROM table
SHOW COLUMNS FROM view

Zeigt die Spalten einer Tabelle oder einer View mit ihren Eigenschafte an

Table

SHOW COLUMNS FROM tbl_t1;
| nr | field_name | field_type | allow_zero_length | required | source_table | source_field | autoincrement | default_value |
|----|------------|------------|-------------------|----------|--------------|--------------|---------------|---------------|
| 1  | id         | LONG       | False             | False    | tbl_t1       | id           | False         |               |
| 2  | val        | TEXT(25)   | False             | False    | tbl_t1       | val          | False         |               |

View

SHOW COLUMNS FROM vw_t1;
| nr | field_name | field_type | allow_zero_length | required | source_table | source_field | autoincrement | default_value |
|----|------------|------------|-------------------|----------|--------------|--------------|---------------|---------------|
| 1  | id         | LONG       | False             | False    | tbl_t1       | id           | False         |               |
| 2  | val        | TEXT(25)   | False             | False    | tbl_t1       | val          | False         |               |
| 3  | jetzt      | DATE       | False             | False    |              |              | False         |               |

SHOW INDEXES

SHOW INDEXES FROM table
SHOW INDEXES FROM tbl_t1;
| index_name               | primary_key | unique |
|--------------------------|-------------|--------|
| idx_val                  | False       | False  |
| Index_B4C4285A_B98F_4415 | True        | True   |

SHOW Variables/Paramters

SHOW VARIABLES

Zeigt alle Variablen an. Zum Thema Variabeln siehe auch SET, SELECT mit Parametern/Variabeln.
Ein Beispiel für SHOW VARIABLES; siehst du bei CLEAR CHACHE

SET a = 3;
SET b = 'abc';
-- Eine Variable als undefinierte Variable mittels eines SELECT erzwingen (siehe auch SELECT mit Parametern/Variabeln)
SELECT c; 
SET d = NOW();
-- Alle Variabeln anzeigen
SHOW VARIABLES;
Set Paramter [A] to 3

Set Paramter [B] to abc

| c    |
|------|
| 1234 |

Set Paramter [D] to 20.04.2015 08:48:05

| variable_name | type     | value                 |
|---------------|----------|-----------------------|
| D             | DATE     | #04-20-2015 08:48:05# |
| A             | BYTE     | 3                     |
| B             | TEXT(50) | 'abc'                 |
| C             | INTEGER  | 1234                  |
vba/access/sqlscript/scriptexamples.txt · Last modified: 21.12.2015 09:54:45 by yaslaw