PowerPoint-Präsentation

Werbung
SQL Datenbank
Anbindung an den
Supervisor
1
by Thorsten Zisler
Installieren und einstellen von MySql
2
Installation
Es müssen folgende Programme/Treiber installiert werden :
1. Den SQL Server mysql-3.23.51-win. Ohne den kann man nicht auf eine SQL
Datenbank zugreifen.
2. Den ODBC Treiber für mysql MYODBC-3.51.03.exe. Damit ist das erstellen
einer Datei dsn sehr einfach.
3. Wenn noch keine Datenbank existiert dann muß MySql- Front noch installiert
werden. In dem Programm werden die Datenbanken erstellt und getestet.
SQL Server
wenn der SQL Server schon läuft dann sieht man unten eine grüne Ampel,
ansonsten muß er von Hand gestartet werden (C:\mysql\bin WinMysqladmin )
In diesem Programm kann der Server auch konfiguriert werden (Benutzer )
Dann MySQL Front starten und eine neue Verbindung aufbauen. Für eine lokale
Datenbank gibt man Hostname = localhost ,Benutzer = root und Port 3306.
Die Verbindung erfolgt über TCP/IP auf dem lokalen Rechner. Der Benutzer root
ist ein Standardbenutzer ohne Passwort. Um Benutzer und Passwörter zu vergeben muß man bei der Erstellung und Konfiguration der dsn Datei diese mit
angeben.
by Thorsten Zisler
Installieren und einstellen von MySql
3
my.ini Datei
mit dem Programm WinMysqladmin wird auch eine ini Datei erstellt ( Reiter auswählen und Save Modifikation ). In dieser sind die Einstellungen des SQL
Servers und Computer Einstellungen gespeichert.
Netzwerk
Auf beiden Rechnern muß MySQL installiert sein. Konfiguration des lokalen
SQL Servers siehe oben. Will man von einem Rechner auf den Rechner mit der
Datenbank zugreifen muß der Hostname oder IP Adresse bekannt sein.
Desweiteren braucht man den Benutzernamen und das Passwort von der Datenbank auf die man zugreifen will ( wenn es nicht root ist ).
Um die Verbindung aufzubauen startet man MySQL Front und geht auf
Verbinden. In diesem Fenster gibt man die Parameter für die neue Verbindung
ein. Verbindungsname, Host/ IP = IP Adresse eingeben (z.B. 192.168.120.30)
User = Benutzername oder root, Passwort = wenn benötigt und Datenbank
die man auslesen will. Nachdem man die Eingaben gemacht hat diese Verbindung speichern und dann verbinden mit dem Server.
by Thorsten Zisler
Datenbank und Schnittstelle erstellen
dsn Datei erstellen
Die dsn Datei beinhaltet die Verbindungsdaten zur SQL Datenbank.
über Einstellungen\Verwaltung\ODBC Quellen wird der Datenbank eine dsn
Datei zugewiesen über welche der Datenaustausch realisiert wird. Dafür den
Reiter File dsn anwählen und den ODBC Treiber auswählen (MYSqlODBC)
und einen Dateinamen vergeben. Das gilt nur für den Treiber MySQL ODBC
Version 3.51. Mit einem anderem Treiber ist es schwieriger eine Datei dsn zu
erstellen. Vermutung : es muß erst eine System dsn erstellt werden, dann mit
dem gleichen Namen eine Datei dsn.
Datenbank erstellen Beim Start von MySqlFront muß man sich mit dem SQL Server und der Datenbank verbinden. Wurde ein anderer Benutzername als "root" vergeben, so ist
dieser zu benutzen, dasselbe gilt für ein Passwort. Wurde die Verbindung hererstellt man mit MYSQL Front die Datenbank. Tabelle, Felder festlegen und die
Datentypen der einzelnen Felder. Praktisch die Struktur der Datenbank vorgeben.
4
by Thorsten Zisler
Einstellung am Supervisor
Die Einstellung erfolgt analog zu einer Access Datenbank, nur wählt man hier die dsn Datei aus, die man vorher erstellt hat.
Auswahl der Datenquelle
Auswahl der dsn Datei. Sie sollte im
Ordner C:\Programme\Gemeinsame
Dateien\ODBC\Data Sources\
stehen. Bei der Erstellung der Datei
kann man diesen Ordner angeben.
Nach diesen Einstellungen kann man sich zur Datenbank verbinden (SQL Server muß laufen).
5
by Thorsten Zisler
Lesen und navigieren in der Datenbank
6
Befehl
Beschreibung
DBOpen( „DB Name" )
DBClose( „DB Name" )
DBProperty->BOF
DBProperty->EOF
DBProperty->Current Record
DBProperty->Record count
DBProperty->Current page
DBProperty->Page count
DBProperty->Page size
DBProperty->Field count
DBStatus->Open
DBStatus->Close
ohne Einschränkung
ohne Einschränkung
wird nicht true wenn die Datenbank am Anfang steht
ohne Einschränkung
zeigt immer einen Satz weiter an als der mit Read angezeigte
ohne Einschränkung
gibt die Nummer des tatsächlich angezeigten Eintrags wieder
wie Record count
?
zeigt immer 0 obwohl die Datenbank 13 Felder hat
ohne Einschränkung
ist immer true auch wenn die Datenbank offen ist
DBMove->First
DBMove->Last
DBMove->Next
DBMove->NextPage
DBMove->Privious
DBMove->PriviousPage
DBMove->Position
ohne Einschränkung
ohne Einschränkung
springt immer 2 Sätze weiter Rückgabewert funktioniert richtig
Rückgabewert ist 0 obwohl die Funktion richtig ausgeführt wurde
keine Reaktion
springt auch zum nächsten Satz wie Next Rückgabe auch immer 0
springt auch zum nächsten Satz wie Next Rückgabe auch immer 0
DBRead
ohne Einschränkung
by Thorsten Zisler
Datensätze bearbeiten in der Datenbank
7
Befehl
Beschreibung
DBDelete( „DB Name" )
es wird der Datensatz gelöscht der mit Current Record angezeigt wird. Beispiel
angezeigt wird Satz 2 und gelöscht wird aber Satz 3
DBWrite
hat dasselbe Problem es wird der nächste Satz geändert, nicht der angezeigte
DBAddNew
ohne Einschränkung
DBUpdate
nur nach einem Datensatz anhängen
DBExecute->Requery
ohne Einschränkung
DBExcute->SQL
es können SQL Kommandos an die Datenbank geschickt werden, für das
ändern von Datensätzen sehr sinnvoll. Siehe nächste Folie
by Thorsten Zisler
Datensätze bearbeiten mit SQL Kommandos
Supervisor Script:
SQL Befehl um in der Tabelle1 in der Spalte Zähler
den Wert zu verändern. SET
comandSQL = "UPDATE tabelle1 SET Zähler_1 = "
Wert = ValueToText(Count_1_SQL)
Einen Supervisor int Punkt in Text wandeln und dem
Kommando hinzufügen.
comandSQL = comandSQL + Wert
comandSQL = comandSQL + " WHERE Position = 0"
SQL Befehl um den Wert in jeden Datensatz indem
die Spalte Position auf 0 ist einzutragen.
bResult = DBExecute( "Verbindung_SQL_dsn", "SQL", comandSQL )
SQL Befehl mit der Methode Execute an die
Datenbank schicken.
IF !bResult THEN
Status_SQL = DBGetLastError( "Verbindung_SQL_dsn", TRUE )
ENDIF
8
by Thorsten Zisler
Ist der Rückgabewert = 0 dann letzten Fehler
abfragen.
Datenaustausch zwischen 2 Supervisor Applikationen
mit der SQL Datenbank
Struktur der SQL Datenbank
Spalte Anlage gibt an aus welcher Anlage die Daten kommen. Ein Datensatz ist
immer einer Anlage zugeordnet.
Spalte aktiv gibt an ob die Anlage Daten übermittelt ( eventuell ob sie vorhanden ist)
und damit die Daten aktuell sind
9
by Thorsten Zisler
Benötigte Punkte
Punkt
Typ
E/A Typ
Arraygröße
Anlage_aktiv
cmdSQL
Daten_Anlage1
Daten_Anlage2
Daten_Anlage3
Daten_Anlage4
DB_Anlage
DB_Anlage_aktiv
DB_Anlage_aktiv1
DB_Anlage_aktiv2
DB_Anlage_aktiv3
DB_Anlage_aktiv4
DB_Daten_Anlage1
DB_Daten_Anlage2
DB_Daten_Anlage3
DB_Daten_Anlage4
DB_Daten1
DB_Daten2
DB_Daten3
DB_Daten4
DB_Daten5
DB_Daten6
DB_Daten7
loop1
Punktezeiger
sError_DB
sWert
Boolean
Text
Integer
Integer
Integer
Integer
Integer
Boolean
Boolean
Boolean
Boolean
Boolean
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Text
Text
Text
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
Speicher
10
1
9
9
9
9
1
1
1
1
1
1
9
9
9
9
1
1
1
1
1
1
1
1
1
1
1
10
Aus / Ein [FALSE]
0 to 99999999 [0]
0 to 99999999 [0]
0 to 99999999 [0]
0 to 99999999 [0]
0 to 99999999 [0]
Aus / Ein [FALSE]
Aus / Ein [FALSE]
Aus / Ein [FALSE]
Aus / Ein [FALSE]
Aus / Ein [FALSE]
0 to 99999999 [0]
0 to 99999999 [0]
0 to 99999999 [0]
0 to 99999999 [0]
-99999999 to 99999999 [0]
-99999999 to 99999999 [0]
-99999999 to 99999999 [0]
-99999999 to 99999999 [0]
-99999999 to 99999999 [0]
-99999999 to 99999999 [0]
-99999999 to 99999999 [0]
0 to 99999999 [0]
by Thorsten Zisler
Freigabe in die DB schreiben
SQL Komando
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Beschreibung
Schleifenzähler
Beschreibung
Fehlermeldung
Daten der Wandlung ValueToText
Schreiben der Daten in die SQL Datenbank
REM Anlage 1
IF Anlage_aktiv[0]==TRUE THEN
REM Anlage 1 als aktiv melden
cmdSQL = "UPDATE tabelle1 SET aktiv= 1 WHERE Anlage = 1"
bResult = DBExecute( "DAS_DB_Anlagen", "SQL", cmdSQL )
IF !bResult THEN
REM Schleife um die Daten zu übertragen
FOR loop1= 1 TO 7
cmdSQL = "UPDATE tabelle1 SET "
sError_DB = DBGetLastError( "DAS_DB_Anlagen", TRUE )
ENDIF
sWert = ValueToText(loop1)
cmdSQL = cmdSQL + "Daten" + sWert + "= "
sWert = ValueToText(Daten_Anlage1[loop1])
cmdSQL = cmdSQL + sWert +" WHERE Anlage = 1"
bResult = DBExecute( "DAS_DB_Anlagen", "SQL", cmdSQL )
ELSE
IF !bResult THEN
REM Anlage 1 als nicht aktiv melden
sError_DB = DBGetLastError( "DAS_DB_Anlagen" , TRUE )
cmdSQL = "UPDATE tabelle1 SET aktiv= 0 WHERE Anlage = 1"
bResult = DBExecute( "DAS_DB_Anlagen", "SQL", cmdSQL )
ENDIF
NEXT
IF !bResult THEN
sError_DB = DBGetLastError( "DAS_DB_Anlagen", TRUE )
ENDIF
ENDIF
11
by Thorsten Zisler
Lesen der Daten aus der SQL Datenbank
REM Daten Anlage 1
DBMove( "DAS_DB_Anlagen.Tabelle1", "FirstPage" )
bResult = DBRead( "DAS_DB_Anlagen.Tabelle1" )
IF !bResult THEN
Status_SQL = DBGetLastError( "DAS_DB_Anlagen", TRUE )
ENDIF
DB_Anlage_aktiv1 = DB_Anlage_aktiv
IF DB_Anlage_aktiv1 THEN
FOR loop1 =0 TO 6
intTest = loop1 +1
sWert = ValueToText(intTest)
Punktezeiger = "DB_Daten" + sWert
DB_Daten_Anlage1[loop1] = ^Punktezeiger
NEXT
ENDIF
12
by Thorsten Zisler
Lesen eines Querys aus der SQL Datenbank
Punkt als Array anlegen und das SQL Query
dem Punkt zuweisen. Er muß nicht mit dem
Index zugewiesen werden (SQL_Daten1[0]).
In der Registerkarte Datenbank eine Tabelle
mit SQL Text anlegen und alle gewünschten
Punkte hinzufügen.
13
by Thorsten Zisler
Lesen eines Querys aus der SQL Datenbank
comandSQL = "SELECT * FROM tabelle1 WHERE "
comandSQL = comandSQL + Query_Spalte + " = "
textTest = ValueToText(Query_Wert)
comandSQL = comandSQL + textTest
bResult = DBExecute( "DAS_DB_Anlagen.SQL_Text", "Source", comandSQL )
IF !bResult THEN
Status_SQL = DBGetLastError( "DAS_DB_Anlagen", TRUE )
ENDIF
DBExecute( "DAS_DB_Anlagen.SQL_Text", "Requery" )
DBRead( "DAS_DB_Anlagen.SQL_Text" )
14
by Thorsten Zisler
Hier werden die Punkte angelegten
Array Punkte (z.B. SQL_Daten1)
aus der Abfrage dargestellt. Hier
erfolgt der Zugriff über den Index.
Herunterladen