> For the complete documentation index, see [llms.txt](https://docs.videc.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.videc.de/acron-9.3/acron_der_anlagenchronist/acron_odbc-treiber.md).

# ACRON ODBC-Treiber

Mit dem **ACRON ODBC-Treiber** stellt ACRON eine ODBC **Open Database Connectivity** Schnittstelle zur Verfügung.

ODBC ist eine von Microsoft entwickelte standardisierte Anwendungs-Programmierungs-Schnittstelle (Application Programming Interface, API), über die eine andere Anwendung Zugriff auf die Daten von ACRON erhält. Die Anwendung muss SQL (Structured Query Language) als Standardsprache zum Datenzugriff einsetzen.

Anwendungen, die eine ODBC-Schnittstelle bieten, wie z.B. Excel, können über den ACRON ODBC-Treiber auf die von ACRON angelegten Datenbestände zugreifen.

Passwortschutz gemäß Benutzerverwaltung: Das bedeutet im Einzelnen, wenn die Benutzerverwaltung für die Anlage aktiv ist, dann muss es den Benutzer zumindest geben.

Folgende Bedingungen und Schritte sind notwendig, um den ACRON ODBC-Treiber nutzen zu können:

* Der ACRON ODBC-Treiber muss installiert und konfiguriert sein.

  Hierzu ist das ACRON ODBC-Setupprogramm auszuführen und dann unter **Startmenü>Systemsteuerung>ODBC-Datenquellen** bzw. bei **Windows XP unter Startmenü>Systemsteuerung>Verwaltung>Datenquellen (ODBC)** der ACRON ODBC-Treiber einzurichten.
* Die Datenbankanwendung muss ODBC und SQL-Abfragen unterstützen.

  Bei Angabe des Anlagennamens ist die **Identifikation** der Anlage einzugeben, die Groß- und Kleinschreibung ist dabei zu beachten.
* Passwortschutz

  Bei aktivierter Benutzerverwaltung muss der Benutzer vorhanden sein.

Der ACRON ODBC-Treiber unterstützt den ODBC-Level 2.

Nachdem die Anlage mit dem "ODBC Data Source Administrator" eingetragen wurde, kann mit dem ACRON ODBC-Treiber auf folgende virtuelle Tabellen **lesend** zugegriffen werden:

#### Zugriff auf Standardtabellen

|                |                                              |
| -------------- | -------------------------------------------- |
| "Process"      | Prozessdaten                                 |
| "Interval1"    | Hauptintervalldaten                          |
| "Interval2"    | Nebenintervalldaten                          |
| "Day"          | Tagesdaten                                   |
| "Week"         | Wochendaten                                  |
| "Month"        | Monatsdaten                                  |
| "Year"         | Jahresdaten                                  |
| "PV"           | Verfahrensgrößen                             |
| "Messages"     | Alle Meldungen und Störungen in Meldungsform |
| "Disturbances" | Nur Störungen                                |
| "Maintenance"  | Servicedaten                                 |
| "Event"        | Ereigniskopfdaten                            |

Als eindeutiger Schlüssel existiert in allen zeitbezogenen Tabellen der Zeitstempel bzw. das Datum des jeweiligen Datensatzes.

Die Spaltennamen in den einzelnen Tabellen werden wie im ACRON Formular-Designer gebildet. Der Punkt ist jedoch nicht ODBC-konform und wird durch einen Unterstrich ersetzt, z.B. gibt Variablenname\_dval den Tageswert an.

Entgegen der sonst üblichen Konventionen werden bei einem "select" ohne "where-Bedingung" nicht alle Daten zurückgegeben, sondern nur ein Satz mit den aktuellen Daten der jeweiligen Datenbasis. Dies hat zwei Gründe - zum einen wird das System nicht mit riesigen Datenmengen belastet, zum anderen interessiert in vielen Fällen nur der aktuelle Wert und es kann auf eine dynamisch zu bestimmende "where-Bedingung" verzichtet werden.

Die weiteren Spaltenbezeichnungen sind wie bei allen vertikalen Berichten aus dem Namen der Verfahrensgröße und einem Suffix für die Eigenschaft aufgebaut (z.B. **VG**\_pmax für den maximalen Prozesswert).

Das folgende Beispiel liest den Zeitstempel und die Prozessdaten der Verfahrensgrößen "am1" und "am2" für den Zeitbereich vom 14.12.2011 18:30:00 bis 14.01.2012 18:52:00:

`SELECT Timestamp, am1_pval, am2_pval`

`FROM Process`

`WHERE (Timestamp>{ts '2011-12-14 18:30:00'} And Timestamp<{ts '2012-01-14 18:52:00'})`

Das folgende Beispiel liest das Datum und die Tageswerte der Verfahrensgrößen "am1" und "am2" für den Zeitbereich vom 01.01.2012 bis jetzt:

`SELECT Date, am1_dval, am2_dval`

`FROM Day`

`WHERE (Date>={d '2012-01-01'})`

#### Zugriff auf Fast-Tabellen

Um einen sehr performanten Zugriff auf die wichtigsten Daten zu ermöglichen, wurden die Fast-Tabellen implementiert.

Folgende Einschränkungen gelten für Fast-Tabellen:

* Die Ergebnismenge wird bei 1 Million Zeilen abgeschnitten.
* Für den Vergleich mit der Spalte 'PVShortName' sind nur die Operatoren '=' und 'LIKE' möglich.
* Für den Vergleich mit der Spalte 'PVLongName' sind nur die Operatoren '=' und 'LIKE' möglich.
* Für den Vergleich mit der Spalte 'Quality' ist nur der Operator '=' möglich. Benutzen Sie bitte 'is NULL' oder ='M' oder ='R' oder ='O' oder ='U'.
* Für den Vergleich mit der Spalte 'PVType' ist nur der Operator '=' möglich. Benutzen Sie bitte ='A' oder='M' oder ='C'.
* Die Spalte 'NumData' kann nur einmal in der Where-Bedingung verwendet werden.
* Die Spalte 'CharData' kann in der Where-Bedingung nicht verwendet werden.

#### Tabellennamen von Fast-Tabellen

Alle Fast-Tabellen haben den gleichen Aufbau - der Tabellenname entscheidet lediglich über die Verdichtungsstufe der Daten:

| Tabellenname       | Verdichtungsstufe                                                                                                                                                                                                                                                                                                                                                                                        |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| FastProcess        | Prozessdaten                                                                                                                                                                                                                                                                                                                                                                                             |
| FastInterval1      | Hauptintervalldaten                                                                                                                                                                                                                                                                                                                                                                                      |
| FastInterval2      | Nebenintervalldaten                                                                                                                                                                                                                                                                                                                                                                                      |
| FastInterval3      | Zusatzintervall 1                                                                                                                                                                                                                                                                                                                                                                                        |
| FastInterval4      | Zusatzintervall 2                                                                                                                                                                                                                                                                                                                                                                                        |
| FastInterval5      | Zusatzintervall 3                                                                                                                                                                                                                                                                                                                                                                                        |
| FastInterval6      | Zusatzintervall 4                                                                                                                                                                                                                                                                                                                                                                                        |
| FastInterval7      | Zusatzintervall 5                                                                                                                                                                                                                                                                                                                                                                                        |
| FastInterval8      | Zusatzintervall 6                                                                                                                                                                                                                                                                                                                                                                                        |
| FastInterval\_Vxxx | Intervalldaten mit variablem Verdichtungsintervall. Die Daten werden zur Laufzeit auf das gewünschte Intervall aus Prozessdaten verdichtet. Der Zugriff dauert dadurch natürlich länger. "xxx" steht dabei für das gewünschte Intervall in Sekunden, der Wert kann zwischen 3 und 43200 (3 Sekunden - 12 Stunden) liegen. Ein Zugriff auf die Tabelle "FastInterval\_V120" liefert also 2-Minuten Werte. |
| FastDay            | Tagesdaten                                                                                                                                                                                                                                                                                                                                                                                               |
| FastWeek           | Wochendaten                                                                                                                                                                                                                                                                                                                                                                                              |
| FastMonth          | Monatsdaten                                                                                                                                                                                                                                                                                                                                                                                              |
| FastYear           | Jahresdaten                                                                                                                                                                                                                                                                                                                                                                                              |

#### Aufbau der Fast-Tabellen:

| Feldnr. | Spaltenname  | Erläuterung                                                                                                                                                                                 |
| ------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1       | Timestamp    | Zeitstempel bei Prozess- und Intervalldaten in lokaler Zeit                                                                                                                                 |
|         | TimestampUTC | Zeitstempel bei Prozess- und Intervalldaten in UTC-Zeit                                                                                                                                     |
|         | Date         | Datum bei Tages-, Wochen- und Monatsdaten                                                                                                                                                   |
|         | Year         | Jahresangabe bei Jahresdaten                                                                                                                                                                |
| 2       | PVShortName  | Eindeutige Identifikation der Verfahrensgröße                                                                                                                                               |
| 3       | PVLongName   | Bezeichnung der Verfahrensgröße                                                                                                                                                             |
| 4       | NumData      | Wert für numerische Verfahrensgrößen im Fließkommaformat mit 18 signifikanten Stellen                                                                                                       |
| 5       | CharData     | Entweder Wert von Text-Verfahrensgrößen, zugeordneter Werteschlüssel von numerischen Verfahrensgrößen oder der formatierte Wert von numerischen Verfahrensgrößen als ASCII                  |
| 6       | Quality      | Qualitätsangaben zu dem Wert: Leerer Eintrag=Perfekt 'M'=Fehlender Wert 'R'=Automatischer Ersatzwert 'O'=Überschriebener Wert 'U'=Nicht freigegebener Wert (nur aktiver Freigabeverwaltung) |
| 7       | PVType       | Type der Verfahrensgröße: 'A'=Autogröße 'M'=Handgröße 'C'=Rechengröße                                                                                                                       |

<details>

<summary></summary>

`SELECT Timestamp, PVShortName, CharData, NumData FROM FastProcess`

`WHERE (Timestamp>{ts '2022-01-09 13:33:00'})`

`ORDER BY Timestamp, PVShortName`

**Ergebnis 1:**

| Timestamp           | PVShortName              | CharData    | NumData   |
| ------------------- | ------------------------ | ----------- | --------- |
| 2022-01-09 13:33:01 | am1                      | 930,78      | 930,7789  |
| 2022-01-09 13:33:01 | am2                      | 930,78      | 930,7789  |
| 2022-01-09 13:33:01 | Auto050197               | 588         | 587,7219  |
| 2022-01-09 13:33:01 | Auto50197\_1             | 1.523       | 1522,5008 |
| 2022-01-09 13:33:01 | Auto50197\_1             | 1.566       | 1566,3503 |
| 2022-01-09 13:33:01 | Autogröße\_num           | -869,87     | -869,8732 |
| 2022-01-09 13:33:01 | Autogröße\_num           | -609,12     | -609,1157 |
| 2022-01-09 13:33:01 | Autogröße\_Text\_Unicode | Sim text 48 |           |
| 2022-01-09 13:33:01 | EreignisID               | 427         | 427       |
| 2022-01-09 13:33:01 | EreignisID               | 425         | 425       |
| 2012-01-09 13:33:01 | EreignisIDTeil           | 364         | 364       |
| 2022-01-09 13:33:01 | EreignisKey              | 0           | 0         |
| 2022-01-09 13:33:01 | EreignisKey              | 5           | 5         |
| 2022-01-09 13:33:01 | EreignisMittel           | 394         | 394       |
| 2022-01-09 13:33:01 | EreignisMittel           | 393         | 393       |
| 2022-01-09 13:33:01 | EreignisZaehl            | 1           | 1         |
| 2022-01-09 13:33:01 | EreignisZaehl            | 1           | 1         |
| 2022-01-09 13:33:01 | Behaelter                | 44          | 43,8495   |
| 2022-01-09 13:33:01 | Dummy1                   | 230         | 230,3013  |
| 2022-01-09 13:33:01 | Wetter                   | Regen       | 2         |

</details>

<details>

<summary></summary>

`SELECT Timestamp, PVShortName, CharData, NumData FROM FastProcess`

`WHERE (Timestamp>{ts '2012-01-09 13:33:00'})`

`AND (FastProcess.PVShortName Like 'A%')`

`ORDER BY Timestamp, PVShortName`

**Ergebnis 2:**

| Timestamp           | PVShortName              | CharData    | NumData   |
| ------------------- | ------------------------ | ----------- | --------- |
| 2012-01-09 13:33:01 | Auto050197               | 588         | 587,7219  |
| 2012-01-09 13:33:01 | Auto50197\_1             | 1.523       | 1522,5008 |
| 2012-01-09 13:33:01 | Auto50197\_1             | 1.566       | 1566,3503 |
| 2012-01-09 13:33:01 | Autogröße\_num           | -869,87     | -869,8732 |
| 2012-01-09 13:33:01 | Autogröße\_num           | -609,12     | -609,1157 |
| 2012-01-09 13:33:01 | Autogröße\_Text\_Unicode | Sim text 48 |           |

</details>

<details>

<summary></summary>

`SELECT FastInterval4.Timestamp, FastInterval4.PVShortName, FastInterval4.PVLongName, FastInterval4.NumData, FastInterval4.CharData FROM FastInterval4 FastInterval4`

`WHERE (FastInterval4.Timestamp>{ts '2022-03-25 00:00:00'})`

`ORDER BY Timestamp, PVShortName`

</details>

## Definitionen und Funktionsweise

ODBC-Interfaces **(Open Database Connectivity),** entwickelt von der Microsoft Corporation, war vorerst nur für die Microsoft Betriebssysteme verfügbar (MS-Windows, NT, Win32). VISIGENIC lizenzierte den Sourcecode und portierte ODBC auf UNIX-Systeme.

Das ODBC-Interface wird definiert durch:

* Bibliotheken mit ODBC-Funktionen (C-Funktionen), die es einer Applikation erlauben, sich mit einer Datenbank zu verbinden, SQL-Befehle abzusetzen und die Abfrageergebnisse zu empfangen
* die SQL-Syntax, basierend auf der Sprachspezifikation der X/OPEN und SQL Access Group (1992)
* eine Standardmenge von Errorcodes
* eine definierte Art und Weise, eine Verbindung zum DBMS (Data Base Management System) herzustellen
* eine standardisierte Menge von Datentypen

## Architektur

Die Architektur von ODBC besteht aus vier Schichten:

1. ODBC-Datenbank-Anwendung
2. ODBC-Treiberverwaltung
3. ODBC-Treiber
4. Datenquelle

![](/files/t43x6CCk22IAjDuvN2O0)

## Bestandteile

### ODBC - Applikation

Die Applikation führt mittels ODBC-Calls SQL-Statements aus und erhält die Ergebnisse der Anfrage.

### ODBC - Driver Manager

Der Driver Manager benutzt die Datei .odbc.ini (odbc.ini unter MS-Windows), um den erforderlichen Treiber für die Applikation zu aktivieren (es können mehrere Treiber zur gleichen Zeit aktiv sein - gleichzeitiger Zugriff auf verschiedene Data Base Management System \[DBMS])

* verarbeitet ODBC-Calls
* bietet Parameterprüfung für ODBC-Calls

### ODBC - Driver

* stellt die Verbindung zur Datenquelle her
* schickt Anfragen an die Datenquelle
* wandelt Daten in andere Datenformate
* liefert die Ergebnisse der Anfrage an die Applikation
* formatiert native Fehlermeldungen des DBMS in ODBC-Standardfehlermeldungen
* initialisiert und verwaltet die Aktionen des Cursors

### Data Source (Datenquelle)

Die Data Source ist ein spezieller Vertreter eines DBMS in Kombination mit irgendeinem Betriebssystem und /oder Netzwerk, das notwendig ist, um auf das DBMS zuzugreifen.

## API

### ODBC - API

Das ODBC-API gliedert sich in drei Funktionsgruppen (ODBC-Conformance Level):

* Core API
* Level 1 API
* Level 2 API

### API conformance core

Core-Funktionen, sind Funktionen, die jeder ODBC-Treiber unterstützen sollte. Es kann davon ausgegangen werden, dass diese Funktionen uneingeschränkt verwendet werden können. Core-Funktionen haben folgende Funktionalität:

* Einrichten der Verbindung zur Datenbank
* Ausführen von SQL-Statements
* Erfragen von Informationen über die Ergebnis-Datensätze (result set) nach einer Datenbankabfrage
* Standardfehlermeldungen

### API conformance level 1

Level 1-Funktionen sind Funktionen, die genauere Informationen über die angesprochenen Tabellen und über Ergebnismengen bereitstellen, ebenso Informationen über die angeschlossenen Datenquellen. Diese Funktionen erlauben es, die bestehende Datenbankverbindung zu konfigurieren und die Datenbankabfrage variabel zu gestalten. Sie haben folgende Funktionalität:

* Treiberanfragen durchzuführen (Abfrage des unterstützten Funktionsumfanges)
* Parameter von Abfragen setzen
* Tabellenbeschreibungen (Datentypen, Genauigkeit) zu erfragen

#### API conformance level 2

Level 2-Funktionen sind Funktionen für Perfomancesteigerung und Optimierung der Datenbankstatements. Sie werden nur eingeschränkt von den Treibern unterstützt, lassen sich aber meisten durch mehrere Level 1-Funktionen nachbilden.

## Vorbereiten von Datenquellen

Der erste Schritt bei der Herstellung einer Verbindung zu einer ODBC-Datenquelle ist die Vorbereitung der Datenquelle. Hierdurch wird sichergestellt, dass die Herstellung einer Verbindung möglich ist und die Daten in der Datenbankanwendung benutzt werden können.

Die Vorbereitung einer Datenquelle erfolgt außerhalb der Datenbankanwendung, bevor das Programm aufgerufen, die Datenquelle definiert und dann eine Verbindung zur Datenquelle hergestellt wird. Die genauen Anforderungen variieren zwar von einer Datenquelle zur anderen, doch im Allgemeinen wird bei der Vorbereitung einer Datenquelle sichergestellt, dass:

* die erforderlichen Dateien und Verzeichnisse ordnungsgemäß auf dem Computer installiert sind
* die Konfigurationsdateien (wie z.B. AUTOEXEC.BAT) ordnungsgemäß eingerichtet sind
* die Tabellen, auf die zugegriffen werden soll, die richtigen Namen aufweisen
* die Tabellen, auf die zugegriffen werden soll, ggf. mit eindeutigen Indizes verknüpft sind

## Definieren von Datenquellen

Zum Zugriff auf eine ODBC-Datenquelle ist ein entsprechender ODBC-Treiber erforderlich. Bei der Definition einer ODBC-Datenquelle sind Informationen zur Datenquelle anzugeben, die der Treiber zur Herstellung der Verbindung benötigt (die Definition einer ODBC-Datenquelle wird häufig auch als Konfiguration der Datenquelle bezeichnet.)

Nachdem die erforderlichen Schritte zur Benutzung der Datenquelle getroffen wurden, muss die Datenbankanwendung gestartet und die Datenquelle definiert werden. Hierzu sind die im für den jeweiligen Treiber angezeigten ODBC-Einrichtungsdialogfeld die erforderlichen Angaben zu machen.

Welche Felder das ODBC-Einrichtungsdialogfeld enthält, hängt vom jeweiligen Treiber ab. In den meisten Einrichtungsdialogfeldern können bei der Definition einer ODBC-Datenquelle die folgenden Informationen eingeben werden:

* den Namen der Datenquelle
* (wahlweise) eine Beschreibung
* andere erforderliche Informationen zum DBMS


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.videc.de/acron-9.3/acron_der_anlagenchronist/acron_odbc-treiber.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
